PWM은 디지털핀인데 아날로그도 지원하는 핀들

 

아날로그 핀은 아래쪽에 존재

 

아날로그 핀 : 아날로그 데이터 발생 (센서 등..) 시 사용

 


스위치 

 

 

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

 

 

 

스위치를 누르면 다 연결

 


 

LED 에노드가 스위치와 연결되도록 만들기

 


int led = 12;


void setup()
{
  pinMode(13, OUTPUT);
  digitalWrite(led, HIGH);

}

void loop()
{

}

 

 


 

스위치의 대각선으로 연결하면 스위치를 눌러야 불이 들어온다

 

 

 

 

SWITCH_INPUT


 

 

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

 

 

 

 

digitalRead

전류가 없다 0값

전류가 있다 1값

 

 

전류가 흘러서 1이 나오는 것이 아니라 실제로는 뒤죽박죽인 값 나옴 : Floating 상태 (연결되지 않음)

 

3번 핀은 +나 그라운드와 연결되지 않은 제3의 상태(floating 상태) : 정보를 읽을 수 없음

전류가 흘러서 1이 나오는 것이 아니라 실제로는 뒤죽박죽인 값 나옴

 

 

 

그라운드와 연결시 0값 출력, 스위치 클릭시 1 출력

 

 

아두이노에서 이러한 그라운드 연결을 '풀업 저항' 또는 '풀다운 저항' 이라고 한다.


  pinMode(inputPin, INPUT_PULLUP); // 플로팅을 피할 수 있음

 

 

 

 

 

안누르면 1 누르면0

 


 

 

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

+ Recent posts