你好我的问题是每当我为我的变量输入一个值" 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);
}
}
答案 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个字节来保存它们(加上一个用于空终止的字节)。