저는 잠시 동안 스택을 사용하지 않아서 apolagize 할 수있었습니다. 커뮤니티는 항상 저를 도왔고, 처음부터 감사하고 싶습니다.Arduino는 직렬 명령을 실행하지 않고 명령을 실행하지 않습니다.
arduino 프로젝트에 문제가 있습니다. 사용자 입력시 arduino를 rgb 표시등이 다른 색으로 표시되도록하려고합니다. 이것은 기본적으로 들리지만 유감스럽게도 arduino는 일부 상황에서는이를 수행하지 않거나 사용자로부터 입력을받는 것이 실제로 느립니다.
코드 나 arduino 자체에 문제가 있는지 알 수 없습니다.
여기는 약간의 코드라고 생각합니다.이 메뉴를 시도하면 명령이 한 번 실행되지만 루프를 삭제하지 않고 다시 주 메뉴로 되돌립니다.
코드가 실제로 너무 길어서 이것이 약간의 코드이므로 아래 코드 전체를 살펴보십시오.
//List of pins and corresponding colors
//RIGHT SIDE
//Red1 5
//Green1 3
//Blue1 6
//Red4 A4
//Green4 A3
//Blue4 A5
////////////////////////////////////////////
//Left Side
//Red2 9
//Green2 11
//Blue2 10
//Red3 A1
//Green3 A0
//Blue3 A2
//Right Side
int ledRR1 = 5;
int ledGR1 = 3;
int ledBR1 = 6;
int ledRR2 = A4;
int ledGR2 = A3;
int ledBR2 = A5;
///////////////////
//Left Side
int ledRL1 = 9;
int ledGL1 = 11;
int ledBL1 = 10;
int ledRL2 = A1;
int ledGL2 = A0;
int ledBL2 = A2;
//////////////////
//Strings
String mode;
String node;
String moving;
String direct;
int x;
void setup(){
Serial.begin(9600);
//PinMode
pinMode(ledRR1, OUTPUT);
pinMode(ledGR1, OUTPUT);
pinMode(ledBR1, OUTPUT);
pinMode(ledRR2, OUTPUT);
pinMode(ledGR2, OUTPUT);
pinMode(ledBR2, OUTPUT);
pinMode(ledRL1, OUTPUT);
pinMode(ledGL1, OUTPUT);
pinMode(ledBL1, OUTPUT);
pinMode(ledRL2, OUTPUT);
pinMode(ledGL2, OUTPUT);
pinMode(ledBL2, OUTPUT);
//START IN THIS STATE:
//Right
analogWrite(ledRR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRR2, 0);
analogWrite(ledGR2, 0);
analogWrite(ledBR2, 0);
//Left
analogWrite(ledRL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGL2, 0);
analogWrite(ledBL2, 0);
x = 0;
}
void loop(){
Serial.println("Main menu");
while(Serial.available()==0){
mode = Serial.readString();
node = Serial.readString();
moving = Serial.readString();
Serial.setTimeout(50);
while(x <= 0){
Serial.println("Welcome to Andy Mood'O Matic light machine");
Serial.println("");
Serial.println("Please select the mode according to your mood");
Serial.println("");
Serial.println("");
Serial.println("Commands and available modes");
Serial.println("Commands: Main Menu or just main");
Serial.println("");
Serial.println("Please type modes to see the available modes");
Serial.println("");
Serial.println("SOMETIMES THE ARDUINO IS SLOW AND YOU HAVE TO INPUT THE COMMAND TWICE!");
x = x+1;
}
if(node == "modes" || node == "Modes"){
Serial.println("Available modes, NOTE: YOU CAN USE SIMPLE COMMANDS!");
Serial.println("");
Serial.println("Relax /SIMPLE COMMAND: a");
Serial.println(" Automated Relax mode");
Serial.println("");
Serial.println("Intimate /SIMPLE COMMAND: b");
Serial.println(" Automated intimate mode");
Serial.println("");
Serial.println("Party mode or Party /SIMPLE COMMAND: c");
Serial.println(" This is user controlled, set the amount of time you want the lights to go for");
Serial.println(" Please check description in party mode to see available options");
Serial.println("");
Serial.println("Night /SIMPLE COMMAND: d");
Serial.println(" Automated night mode");
Serial.println(" User controlled night mode, set how dim the lights should be and time");
Serial.println("");
Serial.println("Off /SIMPLE COMMAND o");
Serial.println(" Turns everything off");
}
if(moving == "Main Menu" || moving == "main menu" || moving == "Main menu" || moving == "main Menu" || moving == "main menu" || moving == "main" || moving == "Main"){
//This is to go back to main main, for each stop loop you have to add this to repeat the println
x = x-1;
}
//Relax
if(mode == "Relax" || mode == "relax" || mode == "a"){
Serial.println("This is automatic relax mode");
for(int fadeValue = 0; fadeValue <= 250; fadeValue +=10){
analogWrite(ledGR1,fadeValue);
analogWrite(ledGL1, fadeValue);
analogWrite(ledBL1, 250);
analogWrite(ledBR1, 250);
analogWrite(ledGR2, fadeValue);
analogWrite(ledGL2,fadeValue);
analogWrite(ledBR2,fadeValue);
analogWrite(ledBL2,fadeValue);
delay(60000);
}
for (int fadeValue = 250; fadeValue >= 0; fadeValue -= 10){
// sets the value (range from 0 to 255):
analogWrite(ledBL1, 250);
analogWrite(ledBR1, 250);
analogWrite(ledGR2,fadeValue);
analogWrite(ledGL2, fadeValue);
analogWrite(ledGR1, fadeValue);
analogWrite(ledGL1,fadeValue);
analogWrite(ledBL2,fadeValue);
analogWrite(ledBR2,fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(60000);
}
for(int fadeValue = 0; fadeValue <= 250; fadeValue +=10){
analogWrite(ledGR2,fadeValue);
analogWrite(ledGL2, 0);
analogWrite(ledBL1, 250);
analogWrite(ledBR1, 250);
analogWrite(ledGR1, fadeValue);
analogWrite(ledGL1, 0);
analogWrite(ledBR2,fadeValue);
analogWrite(ledBL2,fadeValue);
delay(60000);
}
for (int fadeValue = 250; fadeValue >= 0; fadeValue -= 10){
// sets the value (range from 0 to 255):
analogWrite(ledBR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGR2,fadeValue);
analogWrite(ledGR1, 0);
analogWrite(ledGR2, fadeValue);
analogWrite(ledGL2, 0);
analogWrite(ledBL2,fadeValue);
analogWrite(ledBR2,fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(60000);
}
analogWrite(ledGL1, 0);
analogWrite(ledGR1,0);
analogWrite(ledGR2,0);
analogWrite(ledGL2,0);
analogWrite(ledBL1, 250);
analogWrite(ledBR1, 250);
analogWrite(ledBL2,0);
analogWrite(ledBR2,0);
}
//Off
if(mode == "Off" || mode == "o" || mode == "off"){
Serial.println("Everything off");
analogWrite(ledRR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRR2, 0);
analogWrite(ledGR2, 0);
analogWrite(ledBR2, 0);
analogWrite(ledRL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGL2, 0);
analogWrite(ledBL2, 0);
}
//Intimate
if(mode == "intimate" || mode == "Intimate" || mode == "b"){
Serial.println("Automatic Intimate mode");
for(int fadeValue = 0; fadeValue <= 150; fadeValue +=50){
analogWrite(ledRR1,250);
analogWrite(ledRL1, 250);
analogWrite(ledBR1, fadeValue);
analogWrite(ledBL1, fadeValue);
analogWrite(ledRL2, fadeValue);
analogWrite(ledGR1,fadeValue);
analogWrite(ledBL2,fadeValue);
analogWrite(ledRR2,fadeValue);
analogWrite(ledBR2,fadeValue);
delay(60000);
}
for (int fadeValue = 250; fadeValue >= 0; fadeValue -= 50){
// sets the value (range from 0 to 255):
analogWrite(ledRR1,250);
analogWrite(ledRL1, 250);
analogWrite(ledBL1, fadeValue);
analogWrite(ledBR1, 250);
analogWrite(ledRL2, fadeValue);
analogWrite(ledGR1,fadeValue);
analogWrite(ledBL2, 250);
analogWrite(ledRR2,fadeValue);
analogWrite(ledBR2,150);
// wait for 30 milliseconds to see the dimming effect
delay(60000);
}
for (int fadeValue = 250; fadeValue >= 150; fadeValue -= 50){
// sets the value (range from 0 to 255):
analogWrite(ledRR1, 250);
analogWrite(ledRL1, 250);
analogWrite(ledBL1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGR1,0);
analogWrite(ledBL2,fadeValue);
analogWrite(ledRR2,0);
analogWrite(ledBR2, 150);
delay(60000);
}
for (int fadeValue = 150; fadeValue >= 0; fadeValue -= 50){
// sets the value (range from 0 to 255):
analogWrite(ledRR1,250);
analogWrite(ledRL1, 250);
analogWrite(ledBL1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGR1,0);
analogWrite(ledBL2,fadeValue);
analogWrite(ledRR2,0);
analogWrite(ledBR2,fadeValue);
delay(60000);
}
for (int fadeValue = 250; fadeValue >= 0; fadeValue -= 50){
// sets the value (range from 0 to 255):
analogWrite(ledRR1,fadeValue);
analogWrite(ledRL1, fadeValue);
analogWrite(ledBL1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGR1,0);
analogWrite(ledBL2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
// wait for 30 milliseconds to see the dimming effect
delay(60000);
}
for(int fadeValue = 0; fadeValue <= 150; fadeValue +=50){
analogWrite(ledRR1,fadeValue);
analogWrite(ledRL1, fadeValue);
analogWrite(ledBL1, fadeValue);
analogWrite(ledBR1, fadeValue);
analogWrite(ledRL2, fadeValue);
analogWrite(ledGR1, 0);
analogWrite(ledBL2,fadeValue);
analogWrite(ledRR2,fadeValue);
analogWrite(ledBR2,fadeValue);
delay(60000);
}
for(int fadeValue = 0; fadeValue <= 250; fadeValue +=50){
analogWrite(ledRR1, fadeValue);
analogWrite(ledRL1, fadeValue);
analogWrite(ledBL1, 150);
analogWrite(ledBR1, 150);
analogWrite(ledRL2, fadeValue);
analogWrite(ledGR1, 0);
analogWrite(ledBL2, 150);
analogWrite(ledRR2, fadeValue);
analogWrite(ledBR2, 150);
delay(60000);
}
analogWrite(ledRR1, 0);
analogWrite(ledRL1, 0);
analogWrite(ledBL1, 150);
analogWrite(ledBR1, 150);
analogWrite(ledRL2, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBL2, 150);
analogWrite(ledRR2, 0);
analogWrite(ledBR2, 150);
}
//Party
if(mode == "Party" || mode == "party" || mode == "Party mode" || mode == "party mode" || mode == "Party Mode" || mode == "party Mode" || mode == "c"){
Serial.println("Party mode");
Serial.println("For selecting another mode and go back please type back");
int y;
int w;
Serial.println("How many times? note: 1 time = 20 seconds");
while(Serial.available()==0){
direct = Serial.readString();
if(direct == "Back" || direct == "back"){
break;
}
y = 0;
w = Serial.parseInt();
if(y <= w){
for(int i = 0; i < w; i = i+1){
Serial.println("Initializing");
Serial.println(w);
for(int fadeValue = 0; fadeValue <= 250; fadeValue +=50){
analogWrite(ledRR1, fadeValue);
analogWrite(ledBR1, fadeValue);
delay(500);
analogWrite(ledGR1, fadeValue);
analogWrite(ledGL1,fadeValue);
analogWrite(ledBL1, 0);
analogWrite(ledRR1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
delay(500);
}
analogWrite(ledRR1, 250);
analogWrite(ledGR2, 250);
analogWrite(ledBR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledRL1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
delay(1000);
analogWrite(ledBR1, 250);
analogWrite(ledRL1, 250);
delay(500);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(1000);
analogWrite(ledGR1, 0);
analogWrite(ledRR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledRL1, 0);
delay(500);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(500);
analogWrite(ledGR1, 0);
analogWrite(ledRR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledRL1, 0);
delay(1000);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(2000);
analogWrite(ledGL1,250);
analogWrite(ledGR1, 250);
delay(1000);
analogWrite(ledGL1,0);
analogWrite(ledGR1, 0);
delay(500);
analogWrite(ledRR1,250);
analogWrite(ledRL1, 250);
delay(1000);
analogWrite(ledRR1,0);
analogWrite(ledRL1, 0);
delay(500);
analogWrite(ledGL1,250);
analogWrite(ledGR1, 250);
analogWrite(ledBR1,250);
analogWrite(ledBL1,250);
delay(2000);
analogWrite(ledGL1,0);
analogWrite(ledGR1, 0);
delay(1000);
analogWrite(ledRR1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledGL1,0);
analogWrite(ledBL1, 0);
analogWrite(ledRL1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
y = y +1;
}
}
else if(y >= w){
Serial.println("Please type main to go back to main menu or select another value");
break;
}
}
}
//Night
if(mode == "Night" || mode == "night" || mode == "d"){
Serial.println("Automatic night mode");
analogWrite(ledRR1, 250);
analogWrite(ledGR1, 250);
analogWrite(ledBR1, 250);
analogWrite(ledRR2, 250);
analogWrite(ledGR2, 250);
analogWrite(ledBR2, 250);
analogWrite(ledRL1, 250);
analogWrite(ledGL1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledRL2, 250);
analogWrite(ledGL2, 250);
analogWrite(ledBL2, 250);
delay(3600000);
for(int fadeValue = 250; fadeValue >= 0; fadeValue -=50){
analogWrite(ledRR1, fadeValue);
analogWrite(ledGR1, fadeValue);
analogWrite(ledBR1, fadeValue);
analogWrite(ledRR2, fadeValue);
analogWrite(ledGR2, fadeValue);
analogWrite(ledBR2, fadeValue);
analogWrite(ledRL1, fadeValue);
analogWrite(ledGL1, fadeValue);
analogWrite(ledBL1, fadeValue);
analogWrite(ledRL2, fadeValue);
analogWrite(ledGL2, fadeValue);
analogWrite(ledBL2, fadeValue);
delay(120000);
Serial.println("Good Night");
}
analogWrite(ledRR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledRR2, 0);
analogWrite(ledGR2, 0);
analogWrite(ledBR2, 0);
analogWrite(ledRL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledRL2, 0);
analogWrite(ledGL2, 0);
analogWrite(ledBL2, 0);
break;
}
}
}
감사합니다 :
(남대문 ARDUINO UNO R3 ATMEGA 328)
//Party
if(mode == "Party" || mode == "party" || mode == "Party mode" || mode == "party mode" || mode == "Party Mode" || mode == "party Mode" || mode == "c"){
Serial.println("Party mode");
Serial.println("For selecting another mode and go back please type back");
int y;
int w;
Serial.println("How many times? note: 1 time = 20 seconds");
while(Serial.available()==0){
direct = Serial.readString();
if(direct == "Back" || direct == "back"){
break;
}
y = 0;
w = Serial.parseInt();
if(y <= w){
for(int i = 0; i < w; i = i+1){
Serial.println("Initializing");
Serial.println(w);
for(int fadeValue = 0; fadeValue <= 250; fadeValue +=50){
analogWrite(ledRR1, fadeValue);
analogWrite(ledBR1, fadeValue);
delay(500);
analogWrite(ledGR1, fadeValue);
analogWrite(ledGL1,fadeValue);
analogWrite(ledBL1, 0);
analogWrite(ledRR1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
delay(500);
}
analogWrite(ledRR1, 250);
analogWrite(ledGR2, 250);
analogWrite(ledBR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledRL1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
delay(1000);
analogWrite(ledBR1, 250);
analogWrite(ledRL1, 250);
delay(500);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(1000);
analogWrite(ledGR1, 0);
analogWrite(ledRR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledRL1, 0);
delay(500);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(500);
analogWrite(ledGR1, 0);
analogWrite(ledRR1, 0);
analogWrite(ledBL1, 0);
analogWrite(ledGL1, 0);
analogWrite(ledRL1, 0);
delay(1000);
analogWrite(ledGR1, 250);
analogWrite(ledRR1, 250);
analogWrite(ledBL1, 250);
analogWrite(ledGL1, 150);
analogWrite(ledRL1, 50);
delay(2000);
analogWrite(ledGL1,250);
analogWrite(ledGR1, 250);
delay(1000);
analogWrite(ledGL1,0);
analogWrite(ledGR1, 0);
delay(500);
analogWrite(ledRR1,250);
analogWrite(ledRL1, 250);
delay(1000);
analogWrite(ledRR1,0);
analogWrite(ledRL1, 0);
delay(500);
analogWrite(ledGL1,250);
analogWrite(ledGR1, 250);
analogWrite(ledBR1,250);
analogWrite(ledBL1,250);
delay(2000);
analogWrite(ledGL1,0);
analogWrite(ledGR1, 0);
delay(1000);
analogWrite(ledRR1, 0);
analogWrite(ledBR1, 0);
analogWrite(ledGR1, 0);
analogWrite(ledGL1,0);
analogWrite(ledBL1, 0);
analogWrite(ledRL1,0);
analogWrite(ledGL2,0);
analogWrite(ledRL2,0);
analogWrite(ledBL2,0);
analogWrite(ledGR2,0);
analogWrite(ledRR2,0);
analogWrite(ledBR2,0);
y = y +1;
}
}
else if(y >= w){
Serial.println("Please type main to go back to main menu or select another value");
break;
}
}
}
으로 코드가 정말 정말 너무 오래 여기에 모든 코드입니다 언급!
심각 아래 - 투표를 저 어서? 무슨 이유로? –