PWM은 디지털핀인데 아날로그도 지원하는 핀들
아날로그 핀은 아래쪽에 존재

스위치

스위치를 누르지 않으면 대각선으로는 연결되지 않음


int led = 12; void setup() { pinMode(13, OUTPUT); digitalWrite(led, HIGH); } void loop() { }


SWITCH_INPUT

5v 단자는 디지털핀과는 달리 digitalWrite 하지 않아도 전류 흐른다. (공급 전류도 더 많음)

digitalRead
전류가 없다 0값
전류가 있다 1값

3번 핀은 +나 그라운드와 연결되지 않은 제3의 상태(floating 상태) : 정보를 읽을 수 없음
전류가 흘러서 1이 나오는 것이 아니라 실제로는 뒤죽박죽인 값 나옴

아두이노에서 이러한 그라운드 연결을 '풀업 저항' 또는 '풀다운 저항' 이라고 한다.
pinMode(inputPin, INPUT_PULLUP); // 플로팅을 피할 수 있음



int inputPin = 8; int ledPin = 12; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT_PULLUP); //INPUT_PULLUP 모드를 설정해야 플로팅 상태를 피할 수 있음. } void loop() { int status = digitalRead(inputPin); Serial.println(status); if(status == LOW){ // LOW 대신 0이 들어가도 된다. digitalWrite(ledPin,HIGH); }else{ digitalWrite(ledPin,LOW); } }

int inputGreen = 8; int inputRed = 5; int ledGreen = 12; int ledRed = 11; void setup() { Serial.begin(9600); pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(inputRed, INPUT_PULLUP); pinMode(inputGreen, INPUT_PULLUP); //INPUT_PULLUP 모드를 설정해야 플로팅 상태를 피할 수 있음. } void loop() { int statusRed = digitalRead(inputRed); int statusGreen = digitalRead(inputGreen); if(statusRed == LOW){ digitalWrite(ledRed,HIGH); }else{ digitalWrite(ledRed,LOW); } if(statusGreen == LOW){ digitalWrite(ledGreen,HIGH); }else{ digitalWrite(ledGreen,LOW); } }
랜덤 LED

int input = 12; int led[3] = {10, 9, 8}; void setup() { pinMode(input, INPUT_PULLUP); Serial.begin(9600); for(int i=0; i<3; i++){ pinMode(led[i], OUTPUT); } } void loop() { int status = digitalRead(input); if(status == LOW){ randomSeed(analogRead(0)); int randVal = random(3); Serial.println(randVal); digitalWrite(led[randVal],HIGH); delay(500); }else{ for(int i=0; i<3; i++){ digitalWrite(led[i],LOW); } } }
RGB LED

int inputRed = 7; int inputBlue = 6; int inputGreen = 5; int ledGreen = 10; int ledBlue = 11; int ledRed = 12; void setup() { Serial.begin(9600); pinMode(ledRed, OUTPUT); pinMode(ledBlue, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(inputRed, INPUT_PULLUP); pinMode(inputBlue, INPUT_PULLUP); pinMode(inputGreen, INPUT_PULLUP); } void loop() { int statusRed = digitalRead(inputRed); int statusBlue = digitalRead(inputBlue); int statusGreen = digitalRead(inputGreen); if(statusRed == LOW){ digitalWrite(ledRed,HIGH); }else{ digitalWrite(ledRed,LOW); } if(statusBlue == LOW){ digitalWrite(ledBlue,HIGH); }else{ digitalWrite(ledBlue,LOW); } if(statusGreen == LOW){ digitalWrite(ledGreen,HIGH); }else{ digitalWrite(ledGreen,LOW); } }
int pin[3] = {12, 11, 10}; int button[3] = {5, 4, 3}; void setup() { Serial.begin(9600); for(int i=0; i<3;i++){ pinMode(pin[i],OUTPUT); pinMode(button[i],INPUT_PULLUP); } } void loop() { for(int i=0; i<3; i++){ if( digitalRead(button[i]) == LOW){ digitalWrite(pin[i],HIGH); }else{ digitalWrite(pin[i],LOW); } } }

'디지털 컨버전스 > Arduino' 카테고리의 다른 글
[아두이노] map() / 밝기 측정 (0) | 2020.06.19 |
---|---|
[아두이노] 포토 레지스터 (0) | 2020.06.19 |
[아두이노] 피에조 (0) | 2020.06.19 |
[아두이노] IDE (0) | 2020.06.16 |
[아두이노] 시뮬레이터 (0) | 2020.06.16 |