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 |