전체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 |