본문 바로가기

Embedded/Arduino

Arduino-v211021

void setup()
{
  pinMode(9, OUTPUT);
}

void loop()
{
  digitalWrite(9, HIGH);
  delay(1000); 
  digitalWrite(9, LOW);
  delay(1000); 
}

 

LED 3개 연결하기

void setup()
{
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
}
 
void loop()
{
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  delay(1000); 
  
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  delay(1000); 
}

 

LED 번갈아 깜빡이기

int ledArr[] = {9,10,11};
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int delayTime = 200;
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}

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_dn2up()
{
  for(int i=0; i<ledSize; i++){
    for(int n=0; n<ledSize; n++){
      if(n==i)
        digitalWrite(ledArr[n], HIGH);
      else
        digitalWrite(ledArr[n], LOW);
    }
    delay(delayTime);
  }
}
void led_up2dn()
{
  for(int i=ledSize-1; i>=0; i--){
    for(int n=ledSize-1; n>=0; n--){
      if(n==i)
        digitalWrite(ledArr[n], HIGH);
      else
        digitalWrite(ledArr[n], LOW);
    }
    delay(delayTime);
  }
}
void led_off()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
  delay(delayTime);
}

void loop()
{
  led_blink();
  led_up2dn();
  led_off();
  led_dn2up();
  led_off();
}

 

#define RED 11
#define GREEN 10
#define BLUE 9

int ledArr[] = {RED,GREEN,BLUE};
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int delayTime = 300;

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

void rgb_white()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],HIGH);
  }
  delay(delayTime);
}
void rgb_red()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void rgb_green()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void rgb_blue()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_cyan()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_magenta()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_yellow()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void led_off()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
  delay(delayTime);
}

void color_selector(int count)
{
  switch(count){
    case 0:
      rgb_red();
      led_off();
      break;
    case 1:
      rgb_green();
      led_off();
      break;
    case 2:
      rgb_blue();
      led_off();
      break;
    case 3:
      rgb_cyan();
      led_off();
      break;
    case 4:
      rgb_magenta();
      led_off();
      break;
    case 5:
      rgb_yellow();
      led_off();
      break;
    case 6:
      rgb_white();
      led_off();
      break;
    default:
      led_off();
      break;
  }
}

void loop()
{
  for(int n=0; n<8; n++)
     color_selector(n);
}

 

버튼을 누르면 RGB LED가 번갈아 색깔이 바뀜

#define RED 11
#define GREEN 10
#define BLUE 9


int ledArr[] = {RED,GREEN,BLUE};
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int delayTime = 300;
int ledCount = 0;
int flag = 0;

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

void rgb_white()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],HIGH);
  }
  delay(delayTime);
}
void rgb_red()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void rgb_green()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void rgb_blue()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_cyan()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_magenta()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
  delay(delayTime);
}
void rgb_yellow()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
  delay(delayTime);
}
void led_off()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
  delay(delayTime);
}

void color_selector(int count)
{
  switch(count){
    case 0:
      rgb_red();
      break;
    case 1:
      rgb_green();
      break;
    case 2:
      rgb_blue();
      break;
    case 3:
      rgb_cyan();
      break;
    case 4:
      rgb_magenta();
      break;
    case 5:
      rgb_yellow();
      break;
    case 6:
      rgb_white();
      break;
    default:
      led_off();
      break;
  }
}




void loop()
{
  int inputValue = digitalRead(7);
  if (inputValue == HIGH) {           
    if (flag == 0){                   
      color_selector(ledCount%8); 
      flag = 1;
      ledCount++;
    }
  }
  else {                            
    if (flag == 1) {
      flag = 0;           
    }
  }
  delay(100);      
}

 

버튼을 누르면 LED가 색깔을 바꿔가면서 깜빡임

#define RED 11
#define GREEN 10
#define BLUE 9


int ledArr[] = {RED,GREEN,BLUE};
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;
int on_off = 0;
int flag = 0;

unsigned long fade_previousMillis = 0;
unsigned long previousMillis = 0;
const long interval = 300;


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

void rgb_white()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],HIGH);
  }
}
void rgb_red()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,LOW);
}
void rgb_green()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
}
void rgb_blue()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
}
void rgb_cyan()
{
  digitalWrite(RED,LOW);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,HIGH);
}
void rgb_magenta()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,LOW);
  digitalWrite(BLUE,HIGH);
}
void rgb_yellow()
{
  digitalWrite(RED,HIGH);
  digitalWrite(GREEN,HIGH);
  digitalWrite(BLUE,LOW);
}
void led_off()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i],LOW);
  }
}

void color_selector(int count)
{
  switch(count){
    case 0:
      rgb_red();
      break;
    case 1:
      rgb_green();
      break;
    case 2:
      rgb_blue();
      break;
    case 3:
      rgb_cyan();
      break;
    case 4:
      rgb_magenta();
      break;
    case 5:
      rgb_yellow();
      break;
    case 6:
      rgb_white();
      break;
    default:
      led_off();
      break;
  }
}


void loop()
{
  int inputValue = digitalRead(7);
  if (inputValue == HIGH) {           
    if (flag == 0){                   
      flag = 1;
      ledCount++;
    }
  }
  else {                            
    if (flag == 1) {
      flag = 0;           
    }
  }
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval){
    previousMillis = currentMillis;
    if (on_off == 1){
      color_selector(ledCount%8); 
      on_off = 0;
    }
    else{
      color_selector(7); 
      on_off = 1;
    }
  }
}

 

6개 LED 제어

코드

int ledArr[] = {10,9,8,7,6,5};
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);

int flag = 0;
 
unsigned long fade_previousMillis = 0;
unsigned long previousMillis = 0;
const long interval = 100;

unsigned long ledCount = 0;
int modeCount = 0;


void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
  pinMode(2, INPUT);
  Serial.begin(9600);
}

void led_dn2up(int count)
{
  
  int i = ledSize - 1 - (count % ledSize);
  for(int n=0; n<ledSize; n++){
    if(n==i)
      digitalWrite(ledArr[n], HIGH);
    else
      digitalWrite(ledArr[n], LOW);
  }
}
void led_up2dn(int count)
{
  int i = count % ledSize;
  for(int n=ledSize-1; n>=0; n--){
    if(n==i)
      digitalWrite(ledArr[n], HIGH);
    else
      digitalWrite(ledArr[n], LOW);
  }
}

void mode_selector(int count)
{
  switch(count){
    case 0:
      led_up2dn(ledCount);
      break;
    case 1:
      led_dn2up(ledCount);
      break;
  }
}

 
void loop()
{
  int inputValue = digitalRead(2);
  if (inputValue == HIGH) {           
    if (flag == 0){                   
      flag = 1;
      modeCount++;
      ledCount = 0;
    }
  }
  else {                            
    if (flag == 1) {
      flag = 0;           
    }
  }
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval){
    previousMillis = currentMillis;
//    Serial.print(modeCount);
//    Serial.print(" ");
//    Serial.println(ledCount);
    mode_selector(modeCount%2); 
    ledCount++;
  }
}

 

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

lilyPad-v211025  (0) 2021.10.25
Arduino-v211022  (0) 2021.10.22
Arduino-v211020  (0) 2021.10.20
Arduino-v211019  (0) 2021.10.19
Arduino-v211018  (0) 2021.10.18