[DIY] [더미천국] 아두이노 기초편3 입니다. (이대로 따라하면 고수된다)

그동안 뜸했었죠!!!

일주일에 한개씩 올리도록 해 보겠습니다

올해엔 40개 정도? ㅎㅎㅎ

아두이노 배우는데 따라하기 하다가 
잘 안되면 짜증이 나고 헤메이게 됩니다. 
이때 이 문제들을 고민하고 해결하면서 기술이 
상승됩니다. 


기존의 그림대로 따라하고 되었다고 즐겁기만 해서는 실력이 늘지 않습니다.



[더미천국] 아두이노 기초편3 입니다. (이대로 따라하면 고수된다)


<A0나 A1은 입출력이 되나요?>


  원래는 2편에서 D2, D3로 회로도에 그려져 있었는데 A0와 A5로 옮겼습니다. 

 

   결론부터 이야기 하자면 A0~A5는 디지털 입출력이 가능합니다. 


   이걸 한번 실험 합시당. 

   A0 부터 A7 출력한번해보죠~~

   회로는 그림처럼 꾸며 봅시당. 


   076af79d45053f8bc6e8746b315bc69c.png 

이제 코드를 만들고 실험합니다.  여기 올리는 코드는 좀 이쁘게 다음은 코드입니다. ㅎㅎㅎ 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void setup(){
  // A0~A7 PORT?ㅽ뿕
  pinMode(A0,OUTPUT);  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);  pinMode(A3,OUTPUT);
  pinMode(A4,OUTPUT);  pinMode(A5,OUTPUT);
  pinMode(A6,OUTPUT);  pinMode(A7,OUTPUT);
}
//
unsigned char X;
void loop(){
  X++;  delay(20);
  digitalWrite(A0,(X&0x01));      digitalWrite(A1,(X&0x02)>>1);
  digitalWrite(A2,(X&0x04)>>2); digitalWrite(A3,(X&0x08)>>3);
  digitalWrite(A4,(X&0x10)>>4); digitalWrite(A5,(X&0x20)>>5);
  digitalWrite(A6,(X&0x40)>>6); digitalWrite(A7,(X&0x80)>>7);
}


위의 동영상을 보면 A5까지는 digitalWrite가 되는데 A6,A7이 동작 안합니다. 

  ATMEGA328P 데이터 스트를 보면 A6, A7은 ADC 전용 Port입니다. 

  참조 :  http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf 

  그런데 ATMEGA328PB는 전혀 다른 칩입니다. 


 오늘은 여기까지 실험합니다. 

  우리 고수 돌격대 팀은 아나로그 


가: Analogport를 남들보다 자유롭게 사영 하실 수 있기 바랍니다. 

나: 와이어링하다 힘들면 아무데나 꼽아 높고 실험합시다. 


2편의 코드는 다음과 같습니다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Hell Maker: http: //www.hellmaker.kr/write/diy
//source highlite: http: //cafe.naver.com/circuitsmanual
// Date Time: 2019-12-16??쇱읈 10: 41: 59
// by Soo-yeub Yoo
//==============================================
#include <TimerOne.h>
/*7segmet Test by Shifting
fix SegmentsPins to fit for your Hardware*/
//const int SegmentPins[8]={13,12,11,10,9,8,7,6};
//const char SegmentPins[8]={12,11,7,9,10,5,8,6};
const char SegmentPins[8]={10,9,6,7,8,11,12,5};
const char UpKey=A5;
const char DnKey=A0;
const char FNDLeter[17]={'0','1','2','3','4','5','6','7','8','9',
  'A','B','C','D','E','F',' '
};
const char FNDCharator[17]={ //segment A,b,c,d,e,f,g,dp
  0B11111100,//0
  0B01100000,//1
  0B11011010,//2
  0B11110010,//3
  0B01100110,//4
  0B10110110,//5
  0B10111110,//6
  0B11100000,//7
  0B11111110,//8
  0B11110110,//9
  0B11101110,//A
  0B00111110,//b
  0B10011100,//C
  0B01111010,//D
  0B10011110,//E
  0B10001110,//F
  0B00000000  //BLANK
};
volatile boolean DnFlag=0;
volatile boolean UpFlag=0;
volatile byte CountUp=0;
volatile byte CountDn=0;
// the setup function runs once when you press reset
// or power the board
void setup(){
  // initialize digital PIN 13~7 as an output.?
  for(int i=0i<8i++)
  {
    pinMode(SegmentPins[i],OUTPUT); // set each segment Pins as Output
  }
  // Pin 2 3 as Switch Input
  pinMode(UpKey,INPUT);
  pinMode(DnKey,INPUT);
  // Interrupt seting By Timer 1?
  Timer1.initialize(2000);
  // 2 mSec IRQ?
  Timer1.attachInterrupt(timerISR);
  Serial.begin(9600); pinMode(4,OUTPUT);
  segWrite(0);
  //test
}
// the loop function runs over and over again forevervoid
void loop(){
  static char Count=0;
  if(UpFlag==1){
    UpFlag=0;
    Count++;
    if(Count>15)Count=15;
    segWrite(Count);
    Serial.println(Count,DEC);
  }
  if(DnFlag==1){
    DnFlag=0;
    Count--;
    if(Count<0)Count=0;
    segWrite(Count);
    Serial.println(Count,DEC);
  }
  //delay(300);
  //Serial.println(FNDCharator[Count],HEX);
  //Serial.println(Count,DEC);
}
// segmet write
void segWrite(char A){
  digitalWrite(SegmentPins[0],(FNDCharator[A]&0B10000000)>>7);
  digitalWrite(SegmentPins[1],(FNDCharator[A]&0B01000000)>>6);
  digitalWrite(SegmentPins[2],(FNDCharator[A]&0B00100000)>>5);
  digitalWrite(SegmentPins[3],(FNDCharator[A]&0B00010000)>>4);
  digitalWrite(SegmentPins[4],(FNDCharator[A]&0B00001000)>>3);
  digitalWrite(SegmentPins[5],(FNDCharator[A]&0B00000100)>>2);
  digitalWrite(SegmentPins[6],(FNDCharator[A]&0B00000010)>>1);
  digitalWrite(SegmentPins[7],(FNDCharator[A]&0B00000001)>>0);
  /*
  digitalWrite(SegmentPins[0],0);
  digitalWrite(SegmentPins[1],0);
  digitalWrite(SegmentPins[2],0);
  digitalWrite(SegmentPins[3],0);
  digitalWrite(SegmentPins[4],0);
  digitalWrite(SegmentPins[5],0);
  digitalWrite(SegmentPins[6],0);
  digitalWrite(SegmentPins[7],0);
  switch(A){
    case 0: digitalWrite(SegmentPins[0],0B10000000);   break;  //A
    case 1: digitalWrite(SegmentPins[1],0B01000000);   break; //B
    case 2: digitalWrite(SegmentPins[2],0B00100000);   break; //C
    case 3: digitalWrite(SegmentPins[3],0B00010000);   break; //D
    case 4: digitalWrite(SegmentPins[4],0B00001000);   break; //E
    case 5: digitalWrite(SegmentPins[5],0B00000100);   break; //F
    case 6: digitalWrite(SegmentPins[6],0B00000010);   break; //G
    case 7: digitalWrite(SegmentPins[7],0B00000001);   break; //Dp
    default: break; //else where;
  }
  */
}
//Interrupt write
//EVERY 2 MSEC interrupt for System Tic I/O
//read and generate Flag
void timerISR(){
  boolean inputU=1,inputD=1;
  inputD=digitalRead(DnKey);
  inputU=digitalRead(UpKey);
  //if(digitalRead(UpKey)==0)
  if(inputU==0){
    CountUp++;
    if(CountUp==4)UpFlag=1;
    if(CountUp>5)CountUp=5;
  } else{
    CountUp=0;
    UpFlag=0;
  }
  if(inputD==0){
    CountDn++;
    if(CountDn==4)DnFlag=1;
    if(CountDn>5)CountDn=5;
  } else{
    CountDn=0;
    DnFlag=0;
  }
}
// Nice to meet you!


끝.. 



0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

메이커 DIY

번호 제목 글쓴이 날짜 조회수
113 DIY 팀작업으로 아두이노 턴테이블 만들었습니다!! +2 표표 03-02 25,538
112 DIY 새로운 그림으로 새로운 프로젝트 - WEY20P0062 icon 청계천도사 02-24 24,546
111 DIY 새해시작은 지능지수 높이기 게임부터 - WEY20P0061 icon 청계천도사 02-15 23,715
110 DIY 아이들 완구만들고 있으니 즐겁습니다. 사파리 파크놀이입니다. - WEY20P0060 icon 청계천도사 02-11 24,763
109 DIY 점점 더 각인이 어려워 집니다. 슬럼프인가? - WEY20P0059 icon 청계천도사 02-11 24,679
108 DIY 얼굴 표정을 나타내기는 정말 어렵습니다. . - WEY20P0058 icon 청계천도사 02-08 25,099
107 DIY 오늘은 목이길어서 즐거운 짐승입니다. - WEY20P0057 icon 청계천도사 02-05 24,448
106 DIY 레이저 커터 오랫동안 접근 못했네요. - WEY20P0056 icon 청계천도사 02-04 24,031
105 DIY 순수 원목 도마를 만들기를 하고 았습니다. icon 청계천도사 01-28 22,760
104 DIY 오늘은 작업테이블을 만들었습니다. icon 청계천도사 01-28 23,676
103 DIY 보내주신 그림으로 유아용 목조완구 만들었습니다. (5) - WEY20P0055 icon 청계천도사 01-26 24,246
102 DIY 보내주신 그림을 작품으로 만들기로 하였습니다. (4편) - WEY20P0054 icon 청계천도사 01-26 24,313
101 DIY 보내주신 그림을 작품으로 만들기로 하였습니다. (3편) - WEY20P0053 icon 청계천도사 01-26 24,113
100 DIY 보내주신 그림을 작품으로 만들기로 하였습니다. (2편) - WEY20P0052 icon 청계천도사 01-26 23,969
99 DIY 보내주신 그림을 작품으로 만들기로 하였습니다. - WEY20P0051 icon 청계천도사 01-24 24,494
98 DIY 부엉이 선생님의 모습입니다. . - WEY20P0050 icon 청계천도사 01-15 24,654
97 DIY 오 ~~ 헬캣이다. - WEY20P0049 icon 청계천도사 01-15 23,053
96 DIY 까마귀 아줌마의 방문을 받았습니다.. - WEY20P0048 icon 청계천도사 01-13 23,838
95 DIY 귀여운거 악어가 헬 메이커네 집으로 옵니다. - WEY20P0047 icon 청계천도사 01-13 24,038
94 DIY 으메 귀여운거 악어가 맞나요? - WEY20P0046 icon 청계천도사 01-12 24,143