본문 바로가기

Embedded/Arduino

arduino_v220425

                    VCC : 5V    / GND : 5V옆 GND  / OUT : 2번

int ledArr[] = {12,11,10,9,8};
int ledSize = sizeof(ledArr)/sizeof(ledArr[0]);
int delayTime = 200;
int count =0;
int buttonPin = 2;
int flag = 0;

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

void led_on_LR()
{
  count = count % ledSize;
  for(int i=0; i<ledSize; i++){
    if(i == count){
      digitalWrite(ledArr[i],HIGH);
    }
    else{
      digitalWrite(ledArr[i],LOW);
    }
  }
  delay(delayTime);
  count++;
}

void led_on_RL()
{
  count = count % ledSize;
  for(int i=0; i<ledSize; i++){
    if(i == ledSize-1-count){
      digitalWrite(ledArr[i],HIGH);
    }
    else{
      digitalWrite(ledArr[i],LOW);
    }
  }
  delay(delayTime);
  count++;
}

void led_blink()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],HIGH);
  }
  delay(delayTime);
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
  delay(delayTime);
}

void led_off()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
}

void ledChange(int modeCount)
{
  if(modeCount%4 == 0)
  	led_off();
  else if(modeCount%4 == 1)
    led_on_LR();
  else if(modeCount%4 == 2)
    led_on_RL();
  else
    led_blink();
    
}

int modeCount = 0;
void loop()
{
  int inputValue = digitalRead(buttonPin);
  if (inputValue == HIGH) {           
    if (flag == 0){                    
      flag = 1;
      count=0;
      modeCount++;
    }
  }
  else {                            
    if (flag == 1) {
        flag = 0;                       
    }
  }
  ledChange(modeCount);
}

 

# 2그룹의 LED가 번갈아 깜빡임

//이번코드의 경우 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);                         
}

 

# 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 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);                         
}

 

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

Arduino_v220428 - piezo only  (0) 2022.04.28
arduino_v220427  (0) 2022.04.27
아두이노+RC카+적외선센서 제어  (0) 2021.12.30
CAN Example #3  (0) 2021.11.29
CAN Example #2  (0) 2021.11.29