달력

1

« 2025/1 »

  • 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

'분류 전체보기'에 해당되는 글 168

  1. 2016.02.08 헤더파일 만들기
  2. 2016.02.08 부트로더
  3. 2016.02.08 최소한의 필수 회로
  4. 2016.02.08 디지털 시계
  5. 2016.02.08 표시부 프로그램 및 완성
  6. 2016.02.08 제어부 케이스 제작
  7. 2016.02.08 표시부 케이스 제작
  8. 2016.02.08 74LS164을 이용한 기본 제어 코드
  9. 2016.02.08 라인 트레이서
  10. 2016.02.08 자동차 백 라이트
2016. 2. 8. 21:57

헤더파일 만들기 아두이노/기본2016. 2. 8. 21:57

프로그램을 할때 #include <뭐시기.h> 로 라이브러리를 쓰죠?

이때 직접만든 라이브러리를 쓰려면 어떻게 해야 할까요?

 

라이브러리에다가 저장 시키고 싶은 함수:

예를 들어, 아두이노에서 Serial.print함수를 써서 여러변수의 출력값을 보려면 이렇게 코드를 짜야합니다.

Serial.print(val1);

Serial.print(","); 

Serial,print(val2);

Serial.print(",");

Serial.print(val3);

Serial.print(","); 

Serial,print(val3);

Serial.println(",");

음.. 굉장히 보기 싫고 귀찮네요 전.. 

그래서 visual studio에서 처럼 출력하고 싶은 마음이 간절해 짐니다.

printf("%d, %d, %d, %d ", val1, val2, val3, val4);

 

이때 요 함수를 쓰면  ​위에서 처럼 쓸수 있습니다!!

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
#define ARDBUFFER 16
 
int printt(char *str, ...)
{
  int i, count=0, j=0, flag=0;
  char temp[ARDBUFFER+1];
  for(i=0; str[i]!='\0';i++)  if(str[i]=='%')  count++;
 
  va_list argv;
  va_start(argv, count);
  for(i=0,j=0; str[i]!='\0';i++)
  {
    if(str[i]=='%')
    {
      temp[j] = '\0';
      Serial.print(temp);
      j=0;
      temp[0] = '\0';
 
      switch(str[++i])
      {
        case 'd': Serial.print(va_arg(argv, int));
                  break;
        case 'l': Serial.print(va_arg(argv, long));
                  break;
        case 'f': Serial.print(va_arg(argv, double));
                  break;
        case 'c': Serial.print((char)va_arg(argv, int));
                  break;
        case 's': Serial.print(va_arg(argv, char *));
                  break;
        default:  ;
      };
    }
    else 
    {
    
        Serial.print(str[i]);
        
    }
  };
  Serial.println();
  return count + 1;
}

이 함수를 아두이노 소스에서 붙여 넣기 하면 되죠. 

그러나!! 이 함수는 자주!! 쓸것이기 때문에 라이브러리에다가 이 함수를 저장해서 계속 쓰고 싶습니다.

 

 

라이브러리 만들기:

자! 그럴때는 일단 아두이노 라이브러리에 폴더하나를 만듭니다. 

저는 myfuc이라고 했습니다.

 

폴더안에 (폴더와 같은 이름.h) 인 메모장을 만듭니다.

저는 myfuc.h 입니다.

이때 생각 하셔야 할께 #incldue의 의미가 단순이 파일을 복사 붙이기 한다는 사실!

 

이 폴더안에 위에 printt함수를 복사해주고 맨~ 위에 #include "Arduino.h"를 써줍니다. 

그러면 완료!!

 

 

 

 

 

출처:

-라이브러리

https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-16/recipe-16-4 

http://arduino.cc/en/Hacking/LibraryTutorial 

http://playground.arduino.cc/code/library

-printt함수

http://jangsalt.tistory.com/entry/%EA%B0%80%EB%B3%80-%EC%9D%B8%EC%88%98-vastart-vaend-vaarg-valist

http://forum.falinux.com/zbxe/index.php?document_srl=406096&mid=gcc 

'아두이노 > 기본' 카테고리의 다른 글

부트로더  (0) 2016.02.08
최소한의 필수 회로  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:56

부트로더 아두이노/기본2016. 2. 8. 21:56

1. 하드웨어 

원리

위에건 뉴시티제품의 usbISP입니다.  

사진처럼 1번 스위치를 왼쪽으로 돌려주세요~ 

USBISP의 6개의 핀을 아두이노의 빨간색 동그라미쳐진 핀에 연결합니다.

USBISP의 VCC는 아두이노의 VCC에

USBISP의 GND는 아두이노의 GND에

USBISP의 RST는 아두이노의 RESET에

USBISP의 SCK는 아두이노의 SCK에... 아시겠죠^^

아두이노에 빨간색 동그라미의 핀순서는 왼쪽 그림과 같습니다.

 

STEP1

그냥 선으로 연결해도 되지만 매번 귀찮기 때문에 납땜을~

초록색선은 점프했습니다~

 

STEP2

이제 USBISP와 아두이노를 연결해보겠습니다~

 

STEP3

다음으로 컴퓨터와 연결하겠습니다~

 

 

 

2. 소프트웨어

우선 USBISP의 드라이버를 설치 안했다면 해야되요!!

http://cafe.naver.com/newtc 

여기서 AD- USDISP V3.5 윈도우용 다운

 

AVR STUDIO4를 사용합니다.

http://blog.naver.com/ryumr?Redirect=Log&logNo=110074109653에서

AVR STUDIO4.18 다운~

클릭
AVR클릭

 

1)메인 설정

장치를 아두이노 328로 설정하고 프리퀀시를 115.2로 낮게 설정. 

 

2)퓨즈 설정

 

3)부트로더 프로그래밍

칩이 328이고, 우노로 부트로더하고 싶다면 파일은

아두이노폴더\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex 

 

4. 락비트 설정

 

5. 테스트

Blink예제로 테스트 해보세요~



**다른 방법

http://oogundam.tistory.com/73

'아두이노 > 기본' 카테고리의 다른 글

헤더파일 만들기  (0) 2016.02.08
최소한의 필수 회로  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:55

최소한의 필수 회로 아두이노/기본2016. 2. 8. 21:55

ATmega328의 핀 배치:


 

최소한의 필수 회로: 

 
 
 
1. 전원 공급
2. OSC
3. 리셋에 풀업저항
ATmega328 1개,

100nF 커패시터 1개,

10K 저항 1개,

16MHz 클록 크리스털

 

 

 

 

 

 


 

 FT232 연결:

 

리셋에 0.1uF 커패시터를 달아줘야 한다.

 

 

 

 

-드라이버 다운로드:

http://www.eleparts.co.kr/EPX8N7KL

 

 

 

 

 

참고:

http://plughouseblog.blogspot.kr/2010/03/arduino-breadboard-diy.html

'아두이노 > 기본' 카테고리의 다른 글

헤더파일 만들기  (0) 2016.02.08
부트로더  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:50

디지털 시계 작품/and..2016. 2. 8. 21:50

1. 멀티 LED로 투 칼라 세븐 세그먼트 만들기

아래의 멀티 LED를 사용하여 투 칼라 세븐세그먼트를 직접 만들었습니다.


이 멀티 LED는 중간에 가장 긴부분2에 -극을 연결한 다음, 1에 +를 연결하면 빨간색이 3에 +를 연결하면 초록색이 나옴니다.

이 멀티 LED를 이용하여 시험적으로 세븐세그 먼트를 만들어 보았습니다.

모든 세그먼트의 빨강(1)은 빨강끼리 묶고 초록(3)은 초록끼리 묶었습니다. 그러면 2개의 핀이 생김니다. 이 2개의 핀중에 어떤 핀을 선택하여 +를 주느냐에 따라 색깔이 결정 되게 됩니다.

그 다음 세븐세그먼트와 같이 abcdefg로 만들기 위해서 두 개씩 공통 캐소드를 묶어 줌니다. 그러면 7개의 핀이 생김니다. 이 7개의 핀 중에서 어떤 핀에 -를 주느냐에 따라 abcdefg중 어떤 부분이 켜지는지 결정 됩니다.



2. 시계 표시부 만들기

이런 기본적인 원리를 이용하여 세븐 세그먼트 6개를 만들어서 시,분,초를 만들었습니다.  
그래서 우선 멀티 LED를 다 박았어요.
 

6개의 각 세븐 세그먼트에는 빨강과 초록을 결정하는 2개의 핀이 있잖아요? 그리고 세븐 세그먼트 6개에 시, 분, 초 사이에 점이 2쌍 있으니까 총 빨강핀 8개 초록핀 8개 입니다.

이 색깔을 제어하는 데 16개의 핀이 드는 데, 핀 수를 3개로 줄이기 위해서 74595시프트 레지스터를 두개 사용하였습니다.

 

7447BCD/세븐 세그먼트 디코터를 6개 사용하여 시, 분, 초를 BCD로 제어할 수 있도록 하였습니다.

 

74157멀티 플렉서를 6개 사용하여 시, 분, 초 데이터를 2종류씩 넣을 수 있도록 하였습니다. 이 기능을 쓴 이유는 하나의 디스플레이에서 현재 시간과 알람 설정 시간 둘다를 볼 수 있도록 하기 위해서 추가한 기능 입니다. 하지만 알람 기능은 시간이 없어서 못 만들었기 때문에 하드웨어 적으로는 이 기능이 들어있었지만 실제로 사용은 못 했죠 ㅠㅜ 시간이 있을 때 꼭! 알람기능을 넣을 꺼에요!!

멀티 플렉서의 기능은 아래에 설명 해놨습니다.

 


솔직히 표시부 작업이 멀티 LED가 총130개가 들었는데 이 것들이 각각 발이 3개씩 있으니까 완전 개고생했습니다. ㅋㅋㅋㅋ

근데 하고 나니 뿌듯뿌듯;;;

표시부 만든 과정 동영상을 만들었습니다. 뿌듯뿌듯 ㅋㅋ

 


 

3. 시계 표시부 테스트 하기

표시부의 세븐 세그먼트를 하나씩을 만들면서 테스트를 해야합니다.

그래야 에러가 나면 어디서 삐꾸나 났는 지 쉽게 찾아 낼 수 있으니까요.

분명히 개별적으로 다 테스트된 멀티LED를 사용했지만 납땜 하고 나니 안되는 LED를 제거하기는 정말 힘들어요ㅜㅠ



그래서 저는 세븐 세그먼트 하나를 완성할 때마다 아두이노를 사용해서 잘 되는지 테스트를 하였습니다.



테스트 하기 위해 사용한 아두이노 코드는 밑에것 이에요.


const int DS = 2;

const int SH_CP = 3;

const int ST_CP = 4;

const int pin[4] = {8,9,10,11};

 

void setup()

{

  pinMode(DS, OUTPUT);

  pinMode(SH_CP, OUTPUT);

  pinMode(ST_CP, OUTPUT);
  for(int i=0; i<4; i++)
  {pinMode(pin[i], OUTPUT);}
}

 

void loop()

{

//0~10까지 자작 세그먼트에 표시
  for(int i=0; i<10; i++){
  update74595(0xFF, 0x00); //표시부의 색깔 핀으로 들어감
  outPin(i); //표시부의 데이터 핀으로 들어감
  delay(500);
  }

 

//다른 색으로 0~10까지 자작 세그먼트에 표시
  for(int i=0; i<10; i++){
  update74595(0x00, 0xFF); //표시부의 색깔 핀으로 들어감
  outPin(i); //표시부의 데이터 핀으로 들어감
  delay(500);
  }
}

void outPin(int num)//십진수를 이진수 출력으로 바꿔줌
{
  for(int i=0 ; i<4; i++){
  boolean oneBit = bitRead(num, i);
  digitalWrite(pin[i], oneBit);
  }
}

void update74595(int data1, int data2) //data1과 data2는 색깔이 다름.
{

  digitalWrite(ST_CP, LOW);

  shiftData(DS, SH_CP, data1 , data2);

  digitalWrite(ST_CP, HIGH);//rising edge on storage register

}

 

void shiftData(int DS, int SH_CP, int data1, int data2)

{

  for(int i=7; i>=0; i--)

  {

    digitalWrite(SH_CP, LOW);

    boolean oneBit = bitRead(data2, i);

    digitalWrite(DS, oneBit);

    digitalWrite(SH_CP, HIGH);//rising edge on shift register

  }
 for(int i=7; i>=0; i--)

  {

    digitalWrite(SH_CP, LOW);

    boolean oneBit = bitRead(data1, i);

    digitalWrite(DS, oneBit);

    digitalWrite(SH_CP, HIGH);//rising edge on shift register

  }
} 



4. 시간 제어





5. 케이스 제작 및 완성

'












 


'작품 > and..' 카테고리의 다른 글

라인 트레이서  (0) 2016.02.08
자동차 백 라이트  (0) 2016.02.08
빛 감지 전자 주사위  (0) 2016.02.08
레이저 보안 경보 장치  (0) 2016.02.08
무선 전류 감지기  (0) 2016.02.08
:
Posted by youjin.A
현재 버스 장류장 안내 장치:



 
Bus Information Board:

 버스 내부에 버스 노선도를 LED를 이용하여 시각효과를 줘봤습니다.
 
토글 스위치는 각각 앞문과 뒷문이 열리는 신호를 의미합니다.
앞문과 뒷문이 모두 열리는 경우, 한칸 시프트 합니다.
 
그런데 만약 버스 기사 아저씨가 정류장 하나를 멈추지 않고
그냥 지나치는 경우가 발생할 수 있습니다.
그런 경우에는 음성신호를 받아서 위치를 한칸 이동하도록 하였습니다.
음성신호가 문이 열리는 신호 없이 연속해서 두번 들어가는 경우, 한칸 시프트 합니다.
 
아싸 상받았닷ㅎㅎㅎ
 
아두이노는 컨트롤부 내부에:
 
 
 
코드:
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
const int ser_in = 19;
const int CLK = 18;
const int Tswitch = 1;
const int Pswitch = 0;
const int dir[5] = {13, 14, 15, 16, 17};
const int pos[11] = {2,3,4,5,6,7,8,9,10,11,12};
int p=0; //the number of dir, order from right down to right up is 0,1,2,3,4. 
int moment=0; // although switch is pushed long time, to move only one unit.
int avil=1;
int countPswitch=0;
 
void setup()
{
  pinMode(ser_in, OUTPUT);
  digitalWrite(ser_in, HIGH);
  pinMode(CLK, OUTPUT); 
  for(int i=0; i<5; i++)
     pinMode(dir[i], OUTPUT);
  for(int i=0; i<11; i++)
    pinMode(pos[i], OUTPUT);
  pinMode(Tswitch, INPUT);
  pinMode(Pswitch, INPUT);
  
  //initialize setting display
  display_position_setting(p);
  display_direction_setting(p);
}
 
void loop() 
{
  //Pwitch
  if(digitalRead(Pswitch)==HIGH)
    {avil=1;} //if Pswitch isn't pushed, initialize avail for next Pswitch push.
  if(digitalRead(Pswitch)==LOW && avil == 1)
//because if P Switch is pushed second the series, that is same with Tswitch pushed.
  {
    countPswitch++;
    avil=0; //only for the moment that touch the Pswitch.
  }
 
 
  //seting the OUTPUT pins
  moment=0;//to make possible to move right, 'check' have to be initialized.
  while( digitalRead(Tswitch)==LOW || (digitalRead(Pswitch)&&countPswitch==2) )
  {
    countPswitch=0;
    if(moment==0) // the moment that the switch is pushed.
       {
         moment=1;//if in the state  that is pushed long time, move only one unit
         p++;
         if(p == 21)//over number, initialize
          p=1;
         
         display_position_setting(p);
         display_direction_setting(p);
       }
    if(p<11)
      five_pulse(CLK); // if in the state  that is pushed long time, the LED shift have to continue.
    else
      one_left_pulse(p); 
 }
    if(p<11)
      five_pulse(CLK); // if in the state  that is pushed long time, the LED shift have to continue.
    else
      one_left_pulse(p); 
}
 
void five_pulse(int CLK)
{
  digitalWrite(ser_in, HIGH);
  
  for(int i=0; i<5; i++)
    {
     digitalWrite(CLK, HIGH);
     delay(15);
     digitalWrite(CLK, LOW);
     delay(15);
    }
}
 
void display_direction_setting(int p) //setting 74164 chip.
{
  int d = ((p+1)/2)-1; //the variation for direction pin
  if(d==-1)
     d=0;
  if(d>4)//clock direction
     d=9-d;
   
   for(int i=0; i<5; i++)
     digitalWrite(dir[i], HIGH);//deactivate
    
  digitalWrite(dir[d], LOW); // the state of LOW is active on dir LED.
}
 
void display_position_setting(int num) //setting connecting wire.
{
  if(num>10)
    num = 20-num;
  
  for(int i=0; i<11; i++)
    digitalWrite(pos[i], LOW);//deacitivate MultiLED
    
  digitalWrite(pos[num], HIGH); //activate
}
 
void one_left_pulse(int p) //difficult control 74164 for diffrent direction.
     {
       int d = ((p+1)/2)-1; //the variation for direction pin, d is -1~4, 5~9.
       if(d==-1)
       d=0;
       if(d>4)
       d=9-d;
       
       
               for(int i = 0; i<16; i++)
            {
              digitalWrite(dir[d], HIGH);
              digitalWrite(ser_in, LOW); clock(1);
              digitalWrite(ser_in, HIGH); clock(i);
              digitalWrite(ser_in, LOW); clock(15-i);
              digitalWrite(dir[d], LOW);
             delay(25);
           }
     }
     
 
void clock(int count)//fast clock
{
  for(int i=0; i<count; i++)
  {
    digitalWrite(CLK, HIGH);
    digitalWrite(CLK, LOW);
  }
}

 

 

 

 

다른 버젼들:

'작품 > LED 버스 노선도' 카테고리의 다른 글

제어부 케이스 제작  (0) 2016.02.08
표시부 케이스 제작  (0) 2016.02.08
74LS164을 이용한 기본 제어 코드  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:45

제어부 케이스 제작 작품/LED 버스 노선도2016. 2. 8. 21:45





'작품 > LED 버스 노선도' 카테고리의 다른 글

표시부 프로그램 및 완성  (0) 2016.02.08
표시부 케이스 제작  (0) 2016.02.08
74LS164을 이용한 기본 제어 코드  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:44

표시부 케이스 제작 작품/LED 버스 노선도2016. 2. 8. 21:44

시범 제작

 





케이스 수정본


케이스 시범

 



  




'작품 > LED 버스 노선도' 카테고리의 다른 글

표시부 프로그램 및 완성  (0) 2016.02.08
제어부 케이스 제작  (0) 2016.02.08
74LS164을 이용한 기본 제어 코드  (0) 2016.02.08
:
Posted by youjin.A

 

const int clockPin = 2;
const int switchPin=3;
const int resetPin = 4;
int i;

void setup()
{
  pinMode(clockPin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(switchPin, HIGH);
  
  pinMode(resetPin, OUTPUT);
  digitalWrite(resetPin, LOW);
  digitalWrite(resetPin, HIGH);
}

void loop()
{
  if(digitalRead(switchPin)==LOW)
     {
       clock(10);
       i++;
       if(i>40)
       {digitalWrite(resetPin, LOW);
        digitalWrite(resetPin, HIGH);
        i=0;}
     }
}

void clock(int time)
{
  digitalWrite(clockPin, HIGH);
  delay(time);
  digitalWrite(clockPin, LOW);
  delay(time);
}


'작품 > LED 버스 노선도' 카테고리의 다른 글

표시부 프로그램 및 완성  (0) 2016.02.08
제어부 케이스 제작  (0) 2016.02.08
표시부 케이스 제작  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:39

라인 트레이서 작품/and..2016. 2. 8. 21:39

부품: 

LM324 2개, IC소켓 2개

LED 1개, 적외선 발광부 5개, 적외선 수광부 5개

100K 가변저항 5개, 270옴 5개,  220옴 1개, 1M 5개

기판 2개, 핀 헤더 1 line 7P, 헤더 소켓 1 line 7P, 소켓 점퍼 케이블

 

 

부품 설명:

1. LM324

LM324는 Operational Amplifiers(가동 증폭기)입니다.

Op 앰프는 삼각형의 왼쪽 변의 +와 -의 전압을 비교합니다.

V(in)이 -보다 높은 경우, V(out)에서 +V(s)가 출력되고

V(in)이 -보다 낮은 경우, V(out)에사 -V(s)가 출력됩니다.

LM324의 핀배치는 아래와 같습니다.

 

 

2. 적외선 수, 발광부 

적외선 발광부는 다이오드이고,

적외선 수신부는 트랜지스터입니다.

검정색면은 적외선을 흡수하고, 흰색면은 적외선을 반사하기 때문에

포토 다이오드에서 적외선을 쏘면

포토 트랜지스터에서 반사된 적외선으로 흰색면을 감지합니다.

 

 

원리:

비교기를 중심으로 봤을 때 

전원공급부, 감도 조절부, 적외선 수신부, 출력부로 나누어 생각해 봅시다. 

전원공급부에서 Op 앰프에 전원을 공급합니다.

감도 조절부에서 가변저항을 이용하여 

비교기의 -부분에 입력될 전압을 조절합니다.

적외선 수신부에서는 포토 트랜지스터에서 적외선을 감지하지 않으면  

비교기의 +부분에 연결된 전압은 GRD 상태이고,

적외선을 감지하면 트랜지스터가 뚫려서 

비교기의 +부분에 연결된 전압이 올라갑니다.

출력부에서는 적외선을 감지하면 VCC가 출력됩니다.

 

 

회로:

포토 다이오드와 포토 트랜지스터를 5쌍 달았습니다. 

그래서 원리부분의 회로가 5번 반복 되구요, 

거기다가 센서부의 전원 확인 용 LED를 추가했습니다~ 

윗면:
 

 
테스트:
윗면:
아랫면:
전원을 연결하면 윗면에서는 전원 연결 확인 LED에 불이 켜지고
밑면에서는 적외선 포토 다이오드에서 적외선이 나옴니다.
밑 기판에 있는 적외선 포토 트랜지스터가 흰색을 감지하면,
윗 기판의 출력 핀헤더에서 5V가 출력되어 브레드보드의 LED가 켜집니다.
출력 핀은 마이크로컨트롤러와 연결될 것입니다.


'작품 > and..' 카테고리의 다른 글

디지털 시계  (0) 2016.02.08
자동차 백 라이트  (0) 2016.02.08
빛 감지 전자 주사위  (0) 2016.02.08
레이저 보안 경보 장치  (0) 2016.02.08
무선 전류 감지기  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 21:38

자동차 백 라이트 작품/and..2016. 2. 8. 21:38

전용뷰어 보기

 

 

첫번째 스위치

 

두번째 스위치


두번째 스위치와 세번째 스위치 동시에 

 




LED 부분:

LED를 두 개씩 병렬로 연결하고, 중앙에 LED는 가로로 네개씩 병렬로 연결하였습니다.

영상에서는 뒤에 있는데 스위치 누름 확인 LED가 1쌍 있습니다.

그래서 총 11쌍의 LED가 연결 되어있고 각 LED 쌍이 한 포트씩 아두이노 출력과 연결 되어있습니다. 

그런데 이때, 아두이노는 전류가 낮기때문에 TR을 이용해서 외부 전원과 연결하였습니다.

5V보다는 12V로 켜는것이 밝았기 때문에 외부전원을 12V로 했습니다.

 

 

 

스위치 부분:
 

스위치는 통 세개입니다.

각 스위치에 2.2K저항을 GND에 달아서 풀업 저항을 시켰습니다.

그리고 스위치를 누르면 전원에서 공급되는 5V전원이 아두이노 입력에 연결되어 신호가 처리되게 됩니다.


'작품 > and..' 카테고리의 다른 글

디지털 시계  (0) 2016.02.08
라인 트레이서  (0) 2016.02.08
빛 감지 전자 주사위  (0) 2016.02.08
레이저 보안 경보 장치  (0) 2016.02.08
무선 전류 감지기  (0) 2016.02.08
:
Posted by youjin.A