본문 바로가기

Embedded/Arduino

Arduino-v211018

void setup()
{
  pinMode(10, OUTPUT);
}
 
void loop()
{
  digitalWrite(10, HIGH);
  delay(200); //켜져있는 시간
  digitalWrite(10, LOW);
  delay(200); //꺼져있는 시간
}

 

브레드 보드를 사용하여 회로 수정

 

LED 3개 동시에 깜빡이기

void setup()
{
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
}
 
void loop()
{
  digitalWrite(10, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(8, HIGH);
  delay(200); //켜져있는 시간
  digitalWrite(10, LOW);
  digitalWrite(9, LOW);
  digitalWrite(8, LOW);
  delay(200); //꺼져있는 시간
}

번갈아가며 깜빡이기

void setup()
{
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
}
 
void loop()
{
  //10번 깜빡이기
  digitalWrite(10, HIGH);
  delay(200); //켜져있는 시간
  digitalWrite(10, LOW);
  delay(200); //꺼져있는 시간
  
  //9번 깜빡이기
  digitalWrite(9, HIGH);
  delay(200); //켜져있는 시간
  digitalWrite(9, LOW);
  delay(200); //꺼져있는 시간
  
  //8번 깜빡이기
  digitalWrite(8, HIGH);
  delay(200); //켜져있는 시간
  digitalWrite(8, LOW);
  delay(200); //꺼져있는 시간
}

 

배열을 사용하여 LED 코드 간편하게 수정

int ledArr[] = {10,9,8}; // LED번호만 추가하면 번갈아 깜빡임
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int onTime = 200;
int offTime = 200;

void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}
 
void loop()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], HIGH);
    delay(onTime); //켜져있는 시간
    digitalWrite(ledArr[i], LOW);
    delay(offTime); //꺼져있는 시간
  }
}

 

한꺼번에 깜빡이기

int ledArr[] = {10,9,8}; // LED번호만 추가하면 한꺼번에 깜빡임
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int onTime = 200;
int offTime = 200;

void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}
 
void loop()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], HIGH);
  }
  delay(onTime); //켜져있는 시간
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], LOW);
  }
  delay(offTime); //꺼져있는 시간
}

 

아날로그 출력

 

3개의 LED가 동시에 FADE

int ledArr[] = {11,10,9}; // LED번호만 추가하면 한꺼번에 깜빡임
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int onTime = 200;
int offTime = 200;
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}
 
void loop()
{
  for(int brightness=0; brightness<=255; brightness+=5){
  	for(int i=0; i<ledSize; i++){
      analogWrite(ledArr[i], brightness);
    }
    delay(30); 
  }
  
  for(int brightness=255; brightness>=0; brightness-=5){
  	for(int i=0; i<ledSize; i++){
      analogWrite(ledArr[i], brightness);
    }
    delay(30); 
  }
}

 

번갈아가며 Fade(밝아졌다 어두워졌다)하기

int ledArr[] = {11,10,9}; // LED번호만 추가하면 번갈아가며 FADE
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
int fadeDelay = 20;
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}

void led_fade(int ledPin)
{ 
  for(int brightness=0; brightness<=255; brightness+=5){
    analogWrite(ledPin, brightness);
    delay(fadeDelay); 
  }
  for(int brightness=255; brightness>=0; brightness-=5){
    analogWrite(ledPin, brightness);
    delay(fadeDelay); 
  }
}

 
void loop()
{
  for(int i=0; i<ledSize; i++){
      led_fade(ledArr[i]);
  }
}

 

푸시버튼 사용하기

 

버튼을 누르면 전체 LED가 켜졌다가 꺼졌다가 반복

int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);
 
int buttonPin=2;
int ledCount=0;
int flag = 0;
 
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
  pinMode(buttonPin, INPUT);
}

void ledBlink(int state)
{
  if(state%2 == LOW){
  	for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], LOW);
    }
  }
  else{
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], HIGH);
    }
  }
}

 
void loop()
{
  int inputValue = digitalRead(buttonPin);
  
  if (inputValue == HIGH) {           
    if (flag == 0){                    
      flag = 1;
      ledCount++;
      ledBlink(ledCount);
    }
  }
  else {                            
    if (flag == 1) {
        flag = 0;                       
    }
  }
  delay(100);                         
}

 

 

버튼을 누르면 번갈아 깜빡임

int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr) / sizeof(ledArr[0]);

int buttonPin=2;
int ledCount=0;
int flag = 0;


void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
  pinMode(buttonPin, INPUT);
}

void ledOn(int pinNum)
{
  for(int i=0; i<ledSize; i++){
    if(ledArr[i] == pinNum)
      digitalWrite(ledArr[i], HIGH);
    else
      digitalWrite(ledArr[i], LOW);
  }
}

void loop()
{
  int inputValue = digitalRead(buttonPin);
  
  if (inputValue == HIGH) {           
    if (flag == 0){                    
      flag = 1;
      int ledNum = ledCount % ledSize;
      ledOn(ledArr[ledNum]);
      ledCount++;
    }
  }
  else {                            
    if (flag == 1) {
		flag = 0;                       
    }
  }
  delay(100);                         
}

 

2가지의 LED가 번갈아 가며 깜빡임 (ledArr1과 ledArr2를 수정하면 개수를 늘릴수 있음)

//이번코드의 경우 ledArr1의 LED와 ledArr2의 LED가 번갈아가며 켜짐
int ledArr1[] = {11,9};
int ledArr2[] = {10};

int ledSize1 = sizeof(ledArr1) / sizeof(ledArr1[0]);
int ledSize2 = sizeof(ledArr2) / sizeof(ledArr2[0]);
 
int buttonPin=2;
int ledCount=0;
int flag = 0;
 
 
void setup()
{
  for(int i=0; i<ledSize1; i++){
    pinMode(ledArr1[i], OUTPUT);
  }
  for(int i=0; i<ledSize2; i++){
    pinMode(ledArr2[i], OUTPUT);
  }
  pinMode(buttonPin, INPUT);
}
 
void ledChange(int count)
{
  if(count%2 == LOW){
  	for(int i=0; i<ledSize1; i++){
      digitalWrite(ledArr1[i], HIGH);
    }
    for(int i=0; i<ledSize2; i++){
      digitalWrite(ledArr2[i], LOW);
    }
  }
  else{
    for(int i=0; i<ledSize1; i++){
      digitalWrite(ledArr1[i], LOW);
    }
    for(int i=0; i<ledSize2; i++){
      digitalWrite(ledArr2[i], HIGH);
    }
  }
}
 
void loop()
{
  int inputValue = digitalRead(buttonPin);
  
  if (inputValue == HIGH) {           
    if (flag == 0){                    
      flag = 1;
      ledChange(ledCount);
      ledCount++;
    }
  }
  else {                            
    if (flag == 1) {
        flag = 0;                       
    }
  }
  delay(100);                         
}

'Embedded > Arduino' 카테고리의 다른 글

Arduino-v211020  (0) 2021.10.20
Arduino-v211019  (0) 2021.10.19
LilyPad - 0719  (0) 2021.07.19
LilyPad - Final  (0) 2021.07.15
LilyPad - Buzzer Test  (0) 2021.07.15