본문 바로가기

Embedded/Arduino

arduino v220714

전체LED제어

#define RED_LED 13
#define BLUE_LED 8
#define GREEN_LED 12

int interval = 200;
int ledArr[] = {11,10,9,6,5,3};
int ledSize = sizeof(ledArr)/sizeof(int);
String mode="OFF";
unsigned long previousMillis = 0;
 
void setup()
{
  Serial.begin(9600);
  pinMode(RED_LED,OUTPUT);
  pinMode(BLUE_LED,OUTPUT);
  pinMode(GREEN_LED,OUTPUT);
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}
 
int sys_cnt = 0; 
void loop() {
  unsigned long currentMillis = millis();
  if(Serial.available() > 0){
    mode = Serial.readStringUntil('\n');
    Serial.print(mode);
  }
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
 
    mode_select(mode);
    sys_cnt++;
  }
}
 
void mode_select(String mode)
{
  if(mode == "RED" || mode == "red"){
    led_off();
    digitalWrite(RED_LED,HIGH);
    digitalWrite(GREEN_LED,LOW);
    digitalWrite(BLUE_LED,LOW);
  }
  else if(mode == "BLUE" || mode == "blue"){
    led_off();
    digitalWrite(RED_LED,LOW);
    digitalWrite(GREEN_LED,LOW);
    digitalWrite(BLUE_LED,HIGH);
  }
  else if(mode == "GREEN" || mode == "green"){
    led_off();
    digitalWrite(RED_LED,LOW);
    digitalWrite(GREEN_LED,HIGH);
    digitalWrite(BLUE_LED,LOW);
  }
  else if(mode == "cyan" || mode == "CYAN"){
    led_off();
    digitalWrite(RED_LED,LOW);
    digitalWrite(GREEN_LED,HIGH);
    digitalWrite(BLUE_LED,HIGH);
  }
  else if(mode == "magenta" || mode == "MAGENTA"){
    led_off();
    digitalWrite(RED_LED,HIGH);
    digitalWrite(GREEN_LED,LOW);
    digitalWrite(BLUE_LED,HIGH);
  }
  else if(mode == "yellow" || mode == "YELLOW"){
    led_off();
    digitalWrite(RED_LED,HIGH);
    digitalWrite(GREEN_LED,HIGH);
    digitalWrite(BLUE_LED,LOW);
  }
  else if(mode == "white" || mode == "WHITE"){
    led_off();
    digitalWrite(RED_LED,HIGH);
    digitalWrite(GREEN_LED,HIGH);
    digitalWrite(BLUE_LED,HIGH);
  }
  else if(mode == "off" || mode == "OFF"){
    led_rgb_off();
    led_off();
  }
  else if(mode=="0"){
    led_blink();
  }
  else if(mode=="1"){
    led_LtoR();
  }
  else if(mode=="2"){
    led_RtoL();
  }
  else if(mode=="3"){
     led_weighted_LtoR();
  }
  else if(mode=="4"){
    led_weighted_RtoL();
  }
  else{
    led_off();
  }
}
 
 
void led_LtoR()
{
  int count = sys_cnt%ledSize;
  for(int i=0; i<ledSize; i++){
    if(i==count)
   		digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}
 
void led_RtoL()
{
  int count = (ledSize-1)-(sys_cnt%ledSize);
  for(int i=0; i<ledSize; i++){
    if(i==count)
   		digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}
 
void led_weighted_LtoR()
{
  int count = sys_cnt%(ledSize+1);
 
  if(count==ledSize)
    led_off();
  else
   	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}
 
void led_weighted_RtoL()
{
  int count = ledSize - (sys_cnt%(ledSize+1));
 
  if(count==ledSize)
    led_off();
  else
   	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}
 
void led_blink()
{
  if(sys_cnt%2 == 0)
    led_on();
  else
    led_off();
}
 
void led_on()
{
  for(int i=0; i<ledSize; i++)
   	digitalWrite(ledArr[i], HIGH);
}
void led_off()
{
  for(int i=0; i<ledSize; i++)
   	digitalWrite(ledArr[i], LOW);
}
void led_rgb_off()
{
  digitalWrite(RED_LED,LOW);
  digitalWrite(GREEN_LED,LOW);
  digitalWrite(BLUE_LED,LOW);
}

 

RGB LED 시리얼 제어#2

#define RED_LED 13
#define BLUE_LED 8
#define GREEN_LED 12
 
void setup()
{
   Serial.begin(9600);
   pinMode(RED_LED,OUTPUT);
   pinMode(BLUE_LED,OUTPUT);
   pinMode(GREEN_LED,OUTPUT);
}
 
void loop()
{
  if(Serial.available() > 0){
    String str = Serial.readStringUntil('\n');
    Serial.print(str);
    if(str == "RED" || str == "red"){
      digitalWrite(RED_LED,HIGH);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : RED LED 켜짐");
    }
    else if(str == "BLUE" || str == "blue"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,HIGH);
      Serial.println(" : BLUE LED 켜짐");
    }
    else if(str == "GREEN" || str == "green"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,HIGH);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : Green LED 켜짐");
    }
    else if(str == "cyan" || str == "CYAN"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,HIGH);
      digitalWrite(BLUE_LED,HIGH);
      Serial.println(" : CYAN LED 켜짐");
    }
    else if(str == "magenta" || str == "MAGENTA"){
      digitalWrite(RED_LED,HIGH);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,HIGH);
      Serial.println(" : MAGENTA LED 켜짐");
    }
    else if(str == "yellow" || str == "YELLOW"){
      digitalWrite(RED_LED,HIGH);
      digitalWrite(GREEN_LED,HIGH);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : YELLOW LED 켜짐");
    }
    else if(str == "white" || str == "WHITE"){
      digitalWrite(RED_LED,HIGH);
      digitalWrite(GREEN_LED,HIGH);
      digitalWrite(BLUE_LED,HIGH);
      Serial.println(" : WHITE LED ON");
    }
    else if(str == "off" || str == "OFF"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : LED 꺼짐");
    }
    else{
      Serial.println(" : 입력한 명령어가 없습니다.");
    }
  }
}

RGB LED 시리얼 제어#1

#define RED_LED 13
#define BLUE_LED 8
#define GREEN_LED 12
 
void setup()
{
   Serial.begin(9600);
   pinMode(RED_LED,OUTPUT);
   pinMode(BLUE_LED,OUTPUT);
   pinMode(GREEN_LED,OUTPUT);
}
 
void loop()
{
  if(Serial.available() > 0){
    String str = Serial.readStringUntil('\n');
    Serial.print(str);
    if(str == "RED" || str == "red"){
      digitalWrite(RED_LED,HIGH);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : RED LED 켜짐");
    }
    else if(str == "off" || str == "OFF"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : LED 꺼짐");
    }
    else if(str == "BLUE" || str == "blue"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,LOW);
      digitalWrite(BLUE_LED,HIGH);
      Serial.println(" : BLUE LED 켜짐");
    }
    else if(str == "GREEN" || str == "green"){
      digitalWrite(RED_LED,LOW);
      digitalWrite(GREEN_LED,HIGH);
      digitalWrite(BLUE_LED,LOW);
      Serial.println(" : Green LED 켜짐");
    }            
    else{
      Serial.println(" : 입력한 명령어가 없습니다.");
    }
  }
}

 

시리얼 모니터링

int interval = 200;
int ledArr[] = {11,10,9,6,5,3};
int ledSize = sizeof(ledArr)/sizeof(int);
int led_mode=99;
unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
  Serial.begin(9600);
}
 
int sys_cnt = 0; 
void loop() {
  unsigned long currentMillis = millis();
  if(Serial.available() > 0){
    String str = Serial.readStringUntil('\n');
    led_mode = str.toInt();
    Serial.print(led_mode);
  }
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    mode_select(led_mode);
    sys_cnt++;
  }
}

void mode_select(int mode)
{
  switch(mode){
    case 0:
       led_blink();
       break;
    case 1:
       led_LtoR();
       break;
    case 2:
       led_RtoL();
       break;     
    case 3:
       led_weighted_LtoR();
       break;
    case 4:
       led_weighted_RtoL();
       break;
    default:
       led_off();
       break;
  }
}


void led_LtoR()
{
  int count = sys_cnt%ledSize;
  for(int i=0; i<ledSize; i++){
    if(i==count)
   		digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}

void led_RtoL()
{
  int count = (ledSize-1)-(sys_cnt%ledSize);
  for(int i=0; i<ledSize; i++){
    if(i==count)
   		digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}

void led_weighted_LtoR()
{
  int count = sys_cnt%(ledSize+1);
 
  if(count==ledSize)
    led_off();
  else
   	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}

void led_weighted_RtoL()
{
  int count = ledSize - (sys_cnt%(ledSize+1));
 
  if(count==ledSize)
    led_off();
  else
   	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}

void led_blink()
{
  if(sys_cnt%2 == 0)
    led_on();
  else
    led_off();
}

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

LED FADE

#define UP 0
#define DOWN 1

int pwmLED[] = {3,5,6,9,10,11};
int fadeInterval = 30;
 
const int minPWM = 0;
const int maxPWM = 255;

int ledSize = sizeof(pwmLED)/sizeof(pwmLED[0]);
byte fadeDirection = UP;
int fadeValue = 0;
byte fadeIncrement = 5;
unsigned long previousFadeMillis;
int led_cnt = 0;
 
void setup() {
  for(int i=0; i<ledSize; i++){
    pinMode(pwmLED[i], OUTPUT);
   	analogWrite(pwmLED[i], fadeValue);
  }
  Serial.begin(9600);
  Serial.println(led_cnt);
}
 
void doTheFade(unsigned long thisMillis) {
   if (thisMillis - previousFadeMillis >= fadeInterval) {
      if (fadeDirection == UP) {
         fadeValue = fadeValue + fadeIncrement;
         if (fadeValue > maxPWM) {
           fadeValue = maxPWM;
           fadeDirection = DOWN;
         }
      } else {
         fadeValue = fadeValue - fadeIncrement;
         if (fadeValue < minPWM) {
           fadeValue = minPWM;
           fadeDirection = UP;
           led_cnt = (led_cnt+1 == ledSize) ? 0 : led_cnt+1;
           Serial.println(led_cnt);
         }
      }
      analogWrite(pwmLED[led_cnt], fadeValue);
      previousFadeMillis = thisMillis;
   }
}
 
void loop() {
   unsigned long currentMillis = millis();
   doTheFade(currentMillis);
}

 

LED 여러가지 방법으로 깜빡이기

#define LED_MODE 0

int interval = 200;
int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr)/sizeof(int);
unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
  Serial.begin(9600);
}
 
int sys_cnt = 0; 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    mode_select(LED_MODE);
    sys_cnt++;
  }
}

void mode_select(int mode)
{
  switch(mode){
    case 0:
       led_blink();
       break;
    case 1:
       led_LtoR();
       break;
    case 2:
       led_RtoL();
       break;     
    case 3:
       led_weighted_LtoR();
       break;
    case 4:
       led_weighted_RtoL();
       break;
  }
}

void led_LtoR()
{
  int count = sys_cnt%ledSize;
  for(int i=0; i<ledSize; i++){
    if(i==count)
    	digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}

void led_RtoL()
{
  int count = (ledSize-1)-(sys_cnt%ledSize);
  for(int i=0; i<ledSize; i++){
    if(i==count)
    	digitalWrite(ledArr[i], HIGH);
    else
    	digitalWrite(ledArr[i], LOW);
  }
  Serial.println(count);
}

void led_weighted_LtoR()
{
  int count = sys_cnt%(ledSize+1);
 
  if(count==ledSize)
  	led_off();
  else
  	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}

void led_weighted_RtoL()
{
  int count = ledSize - (sys_cnt%(ledSize+1));
 
  if(count==ledSize)
  	led_off();
  else
  	digitalWrite(ledArr[count], HIGH);
  Serial.println(count);
}

void led_blink()
{
  if(sys_cnt%2 == 0)
  	led_on();
  else
  	led_off();
}

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

 

LED번갈아 깜빡이기

int interval = 200;
int ledArr[] = {11,10,9};
int ledSize = sizeof(ledArr)/sizeof(int);
unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++){
    pinMode(ledArr[i], OUTPUT);
  }
}
 
int sys_cnt = 0; 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
   
    sys_cnt = (sys_cnt%ledSize == 0) ? 0 : sys_cnt;
    for(int i=0; i<ledSize; i++){
      if(i == sys_cnt)
       	digitalWrite(ledArr[i], HIGH);
      else
       	digitalWrite(ledArr[i], LOW);
  	}
    sys_cnt++;
  }
}

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

lilyPad_v220719  (0) 2022.07.19
Arduino v220718  (0) 2022.07.18
lilypad_v220713  (0) 2022.07.13
Arduino v220712  (0) 2022.07.12
lilyPad v220708 -2  (0) 2022.07.08