Arduino序列返回未知值

Arduino序列返回未知值,arduino,serial-communication,Arduino,Serial Communication,所以现在这就是我的代码,它试图读取我的LED条的不同RGB值 但是,当我到达请求绿色值的位置时,有一个未知字节通过,它会自动直接转到绿色()中的else部分 我还没有输入任何东西,但Serial说那里有东西。这是什么 #define REDPIN 5 #define GREENPIN 6 #define BLUEPIN 3 #define FADESPEED 5 // make this higher to slow down void setup() { pinMode(R

所以现在这就是我的代码,它试图读取我的LED条的不同RGB值

但是,当我到达请求绿色值的位置时,有一个未知字节通过,它会自动直接转到绿色()中的else部分

我还没有输入任何东西,但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))
#定义REDPIN 5
#定义绿针6
#定义BLUEPIN 3
#定义FADESPEED 5//将其调高以降低速度
无效设置(){
引脚模式(红色引脚,输出);
引脚模式(绿色引脚,输出);
引脚模式(蓝引脚,输出);
Serial.begin(9600);
Serial.println(“启动程序…”);
start();
}
int g=0;
char-val=0;
字符串valstr=“”;
void loop(){
如果(Serial.available()>0){
val=Serial.read();
如果(val!='\n'){
VALTR+=val;
}
否则{
Serial.println(valstr);
如果(VALTR!=“是”){
valstr=“”;
start();
}
否则{
Serial.print(“现在请求RGB值:\n”);
Serial.println(“什么是绿色值:”);
绿色();
//
//
valstr=“”;
//start();
}
valstr=“”;
//绿色();
}
}
}
void start(){
Serial.print(“您想要新颜色吗?输入是/否:”);
}
字符字节=0;
字符串gstr=“”;
布尔非布尔数;
int gnum=256;
void green(){
如果(Serial.available()>0)
gbyte=Serial.read();

如果((gbyte>='0')&&(gbyte=0)&&(gnum我认为问题在于从串行端口解析整数。Arduino有一个内置函数用于此: