일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- toString
- 게시판
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- object
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 출처 : https://webdir.tistory.com/506
- Today
- Total
Back Ground
아두이노 - Fritzing사용하기 본문
1. fritzing 사용하기 (http://fritzing.org/home/)
브레드 보드에 아두이노 보드와 저항, LED, 스위치 등의 여러 가지 부품을 모의 구성해 볼 수 있도록 하여 주며, 회로도나 PCB 제작을 쉽게 할 수 있도록 도와 주는 프로그램
2. fritzing을 사용하여 저항과 스위치 구성하기
3. 디지털입출력 핀 10번의 입력제어
디지털입출력 핀 10번 : 스위치 연결
스위치가 눌려지면 HIGH가 입력되고, 떨어지면 LOW가 입력
디지털입출력 핀 8번 : LED를 연결
스위치가 입력되면 LED가 켜지도록 제어
입출력 설정
setup( )함수 안에서 pinMode( )함수를 이용
디지털입출력 핀 8번은 출력으로 설정
디지털입출력 핀 10번은 입력으로 설정
아두이노 보드의 디지털입출력 핀은 디지털 출력에 사용하였던 핀을 모두 입력으로 사용 가능
if-else문 사용
버튼 스위치가 눌려지면, LED가 연결되어 있는 10번 핀에 "HIGH"를 출력하고, 그렇지 않으면 "LOW"를 출력하여 LED를 OFF
스케치
int pin_led=8; int pin_sw=10; | 정수형 변수 pin_led와 pin_sw에 각각 디지털입출력 핀 8번과 10번을 지정 |
void setup() { pinMode(pin_led, OUTPUT); pinMode(pin_sw, INPUT); } | 디지털입출력 핀 8번(pin_led)을 출력으로 설정 디지털입출력 핀 10번(pin_sw)을 입력으로 설정 |
void loop() { | |
int sw_in=digitalRead(pin_sw); | 핀 10번(pin_sw)으로부터 값을 읽어 sw_in저장 |
if(sw_in==1) { digitalWrite(pin_led, HIGH); } else digitalWrite(pin_led, LOW); | digital_in가 “1”이면, LED을 on digital_in가 “1”이 아니면, LED을 off |
} |
4. 4개의 스위치와 LED를 이용한 입출력제어
디지털입출력 핀 8개에 4개씩 스위치와 LED를 연결
-디지털입출력 핀 9~12번 : 스위치 연결
-디지털입출력 핀 4~7번 : LED 연결
-스위치가 눌려지면 각 스위치에 지정된 LED가 on되도록 제어
-if-else문 사용
배열 이용
버튼 스위치 연결된 디지털입출력 핀 4개 : 배열 pin_SW[ ]
LED 연결된 디지털입출력 핀 4개 : 배열 pin_LED[ ]
스케치 코드
int pin_LED[ ]= {4, 5, 6, 7}; int pin_SW[ ]= {9, 10, 11 ,12}; int val; int i ; | 배열 pin_LED : 디지털입출력 핀 4, 5, 6, 7번 배열 pin_SW : 디지털입출력 핀 9,10,11,12번 스위치 입력을 받기 위한 변수 for문을 위한 변수 |
void setup() { for(i=0; i<4; i++) { pinMode(pin_LED[i], OUTPUT); pinMode(pin_SW[i], INPUT); } } | 핀 4, 5, 6, 7번을 출력모드 지정 핀 9, 10, 11, 12번을 입력모드 지정 |
void loop() { for(i=0; i<4; i++) { val=digitalRead(pin_SW[i]); if(val==1) { digitalWrite(pin_LED[i], HIGH); } else { digitalWrite(pin_LED[i], LOW); } } } | ① sw1(D9)가 눌려지면 LED1(D4)에 HIGH출력 나머지 LED2, LED3, LED4는 LOW출력 ② sw2(D10)가 눌려지면 LED2(D5)에 HIGH출력 나머지 LED1, LED3, LED4는 LOW출력 ③ sw3(D11)가 눌려지면 LED3(D6)에 HIGH출력 나머지 LED1, LED2, LED4는 LOW출력 ④ sw4(D12)가 눌려지면 LED4(D7)에 HIGH출력 나머지 LED1, LED2, LED3은 LOW출력 |
5. 4개의 기능스위치에 의한 LED제어
디지털입출력 핀 8개에 4개씩 스위치와 LED를 연결하고, -스위치가 눌려지면 각 스위치에 다음과 같이 지정된 -LED 동작이 되도록 제어
if-else문 사용
버튼 스위치가 연결되어 있는 배열 pin_SW[0]에서부터 순차적으로 스위치가 눌려져 입력이 발생하였는지 검사
눌려졌으면 해당하는 기능 수행
스케치
intpin_LED[]= {4, 5, 6, 7}; intpin_SW[]= {9, 10, 11 ,12}; intval; inti; | 배열 pin_LED : 디지털입출력 핀 4, 5, 6, 7번 배열 pin_SW : 디지털입출력 핀 9,10,11,12번 스위치 입력을 받기 위한 변수 for문을 위한 변수 |
void setup() { for(i=0; i<4; i++) { pinMode(pin_LED[i], OUTPUT); pinMode(pin_SW[i], INPUT); } } | 핀 4, 5, 6, 7번을 출력모드 지정 핀 9, 10, 11, 12번을 입력모드 지정 |
void loop() { | loop()의 시작 |
if(digitalRead(pin_SW[0])==1){ for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); } } | sw1(D9)가 눌려지면 4개의 LED가 동시에 on |
else if(digitalRead(pin_SW[1])==1){ for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); } delay(1000); for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); } delay(1000); } | sw2(D10)가 눌려지면 4개의 LED가 동시에 on/off |
else if(digitalRead(pin_SW[2])==1){ for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); delay(1000); } } | sw3(D11)가 눌려지면 4개의 LED가 오른쪽에서 왼쪽으로 순차적으로 on |
else if(digitalRead(pin_SW[3])==1){ for(i=0; i<4; i++) { digitalWrite(pin_LED[3-i], HIGH); delay(1000); } } | sw4(D12)가 눌려지면 4개의 LED가 왼쪽에서 오른쪽으로 순차적으로 on |
else { for(i=0; i<4; i++) { digitalWrite(pin_LED[i], LOW); } } | 스위치가 눌려지지 않으면 모든 LED off |
} | loop()의 끝 |
5-1. switch-case문을 이용한 디지털 제어
if-else문 대신 case문 사용
○ digitalRead()와 bitWrite()함수를 이용하여, switch( )를 위한 case 번호 생성
○ bitWrite(select, i, val)
변수 select의 i번째의 비트에 val의 값 "1"을 설정하는 함수
bitWrite(select, 3, "1") 실행 예(변수 select의 초기 값 “0”),
○ 스위치 배열 pin_SW[]= {SW0, SW1, SW2, SW3 }이면, 선택되는 select값
스케치
intpin_LED[]= {4, 5, 6, 7}; intpin_SW[]= {9, 10, 11 ,12}; inti, j, sw=0; boolean select, val; | 배열 pin_LED: 디지털입출력 4, 5, 6, 7번 배열 pin_SW: 디지털입출력 9,10,11,12번 |
void setup() { for(i=0; i<4; i++) { pinMode(pin_LED[i], OUTPUT); pinMode(pin_SW[i], INPUT); } } | setup문 핀 4, 5, 6, 7번을 출력모드 지정 핀 9, 10, 11, 12번을 입력모드 지정 |
void loop() { | loop( ) 시작 |
for(i=0; i<4; i++) { val=digitalRead(pin_SW[i]); bitWrite(select, i, val); } | switch( )를 위한 case 번호 생성 |
switch(select) { | switch(sw) 시작 |
case 1: for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); } break; | sw1(D9)가 눌려지면 4개의 LED가 동시에 on |
case 2: for(j=0; j<4; j++) { for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); } delay(200); for(i=0; i<4; i++) { digitalWrite(pin_LED[i], LOW); } delay(200); } break; | sw2(D10)가 눌려지면 4개의 LED가 동시에 4번 on/off |
case 4: for(i=0; i<4; i++) { digitalWrite(pin_LED[i], HIGH); delay(500); } break; | sw3(D11)가 눌려지면 4개의 LED가 왼쪽에서 오른쪽으로 순차적으로 on |
case 8: for(i=0; i<4; i++) { digitalWrite(pin_LED[3-i], HIGH); delay(500); } break; | sw4(D12)가 눌려지면 4개의 LED가 오른쪽에서 왼쪽으로 순차적으로 on |
default: for(i=0; i<4; i++) { digitalWrite(pin_LED[i], LOW); } break; | 스위치가 눌려지지 않으면 모든 LED off |
} | switch(select) 끝 |
} | loop( ) 끝 |
함수정리
'아두이노' 카테고리의 다른 글
아두이노 - 아날로그제어 (1) | 2016.06.21 |
---|---|
아두이노 - 시리얼통신 (0) | 2016.06.21 |
아두이노 - LED깜빡이기 (0) | 2016.06.21 |
아두이노 - 개발환경설치 (0) | 2016.06.21 |
아두이노 란? (0) | 2016.06.21 |