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

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

이제 하나 만들어 보는걸로합니다.  Up Key를 누르면 0 에서 부터 F (16진수)로 업 카은트되고 
Dn Key를 누르면 F에서 0으로 이동하는 시스템을 만들어 봅시다.

회로도 만들기 
 회로도는 orCAD로 그려 봅니다. 
 
에 가면 Free OrCAD Lite가 있으니 다운 받으시면 됩니다. 
OrCAD로 회로 그리는것은 여기서 이야기 하면 이야기 길어지니 
다른 경로로 사용하는것을 이야기 합시다. 
알단 그리시고 난 후 그림은 이렇게 됩니다. 
9dc3345f93065c80c1672fd6cb7a05fd.png

# OrCAD 학습하기 
1. 회로그리기

2. orCAD 라이브러리 만들기 

3. 기존의 부품 불러오기 


Breadboard에 조립하기 
 그려진 파일대로 호로를 조립하는 일을 하기로합니다.  브레드보드 는 빵판이라고브르는데 
여기저기 그멍이 송송 뚤려서 그런것 같습니다. 
이쁘게 조립하면 됩니다. 

 1. Bread Board에 조립하기

 2. 빨간색과 5V VCC로 파란색은 GND 0V로

 3. 연결선은 저렴한 통신용 전선으로 만들기

  연결 하기 전의 선은 이렇습니다. 

e2acad3420c22c30bb636b75c392fa35.jpg

여기에 부품 올리고 연결선으로 연결하면 됩니다.

그런데 연결하다 보니 선이 마구 마구 헛갈립니다.

그래서 회로도와 달리 이렇게 적당히 배선했습니다.

히히

​그래도 됩니다.  우리가 소프트웨어로 바꿔주면 되거든요...


819919a6b16dcca3d16889e660663604.jpg

일단 스위치도 D2, D3에 붙이기로하고 A0, A5에 붙였습니다.

이래도 됩니다.

일단 붙이고...

 

source code

아두이노 코드 작성하고 실행해 봅시다. 


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
// 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,13,8,6};
const char UpKey=3;
const char DnKey=2;
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
  0B11011010,//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(5000);
  // 5 mSec IRQ?Timer1.attachInterrupt(timerISR);
  Serial.begin(9600); pinMode(5,OUTPUT);
  //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);
  }
  Serial.println(DnFlag);
}
// 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);
}
//Interrupt write
void timerISR(){
  boolean inputU=1;
  byte 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

번호 제목 글쓴이 날짜 조회수
62 DIY 무지 사랑스런 [무지 ] - 오늘부터 다시 힘내라.. - WEY20P0015 icon 청계천도사 11-26 14,046
61 DIY [무지]도 무지 무지 졸린듯.. WEY20P0014 +1 icon 청계천도사 11-25 14,608
60 DIY [무지]의 눈빛은 들장미 소녀의 눈빛과 다르다? 같다!! - WEY20P0013 +1 icon 청계천도사 11-24 14,873
59 DIY 난 너의 눈빛에 반했어 [무지 ㅡMuzi] - WEY20P0012 +1 icon 청계천도사 11-24 15,005
58 DIY [Tube] in Love - WEY20P0011 icon 청계천도사 11-20 12,596
57 DIY 인턴인 [튜브]는 라이언을 미워하지 않는다. - WEY20P0010 icon 청계천도사 11-19 16,260
56 DIY 라이언 가족중 [튜브]를 초대합니다. [19금 버전] - WEY20P0009 icon 청계천도사 11-18 13,858
55 DIY 라이언의 친구중[제이지] - WEY20P0008 icon 청계천도사 11-17 13,291
54 DIY 라이언의 친구들이 오고싶어합니다. -WEY20P0007 icon 청계천도사 11-17 12,813
53 DIY 내 친구 [미니언] 입니다. - WEY20P0006 icon 청계천도사 11-13 13,617
52 DIY 외로운 라이언에게 친구만들어주기 (Apeaxch) - WEY20P0005 icon 청계천도사 11-12 13,403
51 DIY 꽃게 철입니다. 이넘도 요리해 먹을가요? [Sebastian] - WEY20P0004 icon 청계천도사 11-11 11,899
50 DIY 오르골 기초 올렸습니다. +3 icon 청계천도사 11-09 13,878
49 DIY Thermistor 규격표 보는법 icon 청계천도사 11-06 12,063
48 DIY 곰돌이 푸우 ~~~ 가 왔습니다. - WEY20P0003 icon 청계천도사 11-05 13,133
47 DIY 라이언(카카오프렌즈) 친구 왔어요. - WEY20P0002 icon 청계천도사 11-04 12,688
46 DIY 이런 컬러링 만들기 [헬X키티] - WEY20P0001 icon 청계천도사 11-03 12,719
45 DIY 오르골 이야기 둘째 편 icon 청계천도사 06-21 13,878
44 DIY 다른 프로젝트 시작... 오르골 +1 icon 청계천도사 06-18 12,216
43 DIY 작성중 - [더미천국] 아두이노 기초편4 입니다. (이대로 따라하면 고수된다) icon 청계천도사 03-27 12,555