0

您好,我的问题是每当我为变量“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);
  }
}
4

1 回答 1

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 可以放入单个整数,但字符 '5'、'3'、'2'、'0' 需要 4 个字节来保存它们(加上一个字节用于空终止)。

于 2014-05-26T17:44:01.660 回答