2015-12-29 6 views
0

Так прямо сейчас, что мой код, он пытается прочитать различные значения RGB для моих светодиодных лентArduino Последовательного Возвратившись неизвестным значение

Однако, когда я туда, где я прошу зеленое значение, есть неизвестный байтовый проход, и он автоматически переходит прямо к части else в green();

Я ничего не вводил, но Serial говорит, что там что-то есть. Что это?

#define REDPIN 5 
#define GREENPIN 6 
#define BLUEPIN 3 

#define FADESPEED 5  // make this higher to slow down 

void setup() { 
    pinMode(REDPIN, OUTPUT); 
    pinMode(GREENPIN, OUTPUT); 
    pinMode(BLUEPIN, OUTPUT); 
    Serial.begin(9600); 
    Serial.println("Starting Program...."); 
    start(); 

} 

    int g = 0; 

char val = 0; 
String valstr = ""; 

void loop(){ 
     if(Serial.available() > 0){ 
     val = Serial.read(); 

     if(val != '\n'){ 
     valstr += val; 
     } 
     else{ 
     Serial.println(valstr); 

     if (valstr != "Yes"){ 
      valstr = ""; 
     start(); 
       } 
       else{ 
        Serial.print("Now Asking for RGB values: \n"); 
        Serial.println("What is green value: "); 
       green(); 
       // 
       // 
       valstr = ""; 
      // start(); 
       } 
     valstr = ""; 
// green(); 

    } 
     } 
} 




void start(){ 
    Serial.print("Do you want a new color? Enter Yes/No: "); 
} 


char gbyte = 0; 
String gstr = ""; 
boolean not_number; 

int gnum = 256; 


void green(){ 

    if(Serial.available() > 0) 
     gbyte = Serial.read(); 

     if ((gbyte >= '0') && (gbyte <= '9')) { 
     gstr += gbyte; 
     } 
    else if(gbyte == ' '){ 
     Serial.println("This is not a number! \n"); 
     Serial.println("Enter a valid number!"); 
     gstr = ""; 

     gbyte = Serial.read(); 


    } 
    else{ 
     Serial.println(gstr); 
     Serial.println("This is a number"); 

    } 

     gstr += gbyte; 

//  gnum = gstr.toInt(); 

//  if((gnum >= 0) && (gnum <= 255)) 

ответ

Смежные вопросы