Arduino监视器打印出错误的变量值

时间:2014-05-26 17:30:15

标签: c arduino-ide arduino-uno

你好我的问题是每当我为我的变量输入一个值" var"然后打印出来。它会给我一个完全不同的价值。例如,如果我输入" 5"它会打印出十进制值(即53),这可能令人沮丧,因为你看到我试图将一个数字与另一个数字匹配,这导致了一个问题。

注意:我尝试将if(Serial.available()> 0)更改为while条件,但没有运气。我也使用16x2液晶显示器。

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int backLight = 13;
int var=0;
int password=5320;
void setup()
{
  Serial.begin(9600);
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);
  lcd.begin(16,2);              
  lcd.clear();                  
  Serial.println("Enter password");
}

void loop()
{
  if (Serial.available() > 0) {
    var = Serial.read();
    Serial.println(var);
    if (var==password)
    {
      lcd.clear();                  
      lcd.setCursor(0,0);
      lcd.print("Access granted");
    }    
    else
    {
      lcd.clear();                  
      lcd.setCursor(0,0);
      lcd.print("Access denied");
    }
    delay(100);
  }
}

1 个答案:

答案 0 :(得分:0)

您需要将字符串输入转换为int。使用功能。你需要将字符读入数组,而不仅仅是int。例如,也许:

char var[10];
int i = 0; // index
while (Serial.Available() > 0){
    char readval = Serial.Read();
    var[i++] = readval;
}
var[i] = 0;  // null terminate string
int int_of_var = atoi(var);

请注意,虽然5320可以放入一个整数,但字符“&#39; 5&#39; 3&#39;&#39; 2&#39;&#39; 0&#39 ;需要4个字节来保存它们(加上一个用于空终止的字节)。