В настоящее время я работаю над проектом, чтобы прочитать входные данные с последовательного монитора и дать команду Arduino включить / выключить определенные контакты.Проблема, с которой я сталкиваюсь, заключается в том, что я не могу прочитать весь массив символов, введенный в последовательный монитор.Может кто-нибудь сказать мне, что я делаю не так?
#define X 13 //led pin
char txt[15];
int i;
int Status=0;
void setup() { // put your setup code here, to run once:
pinMode(X,OUTPUT);// setting the pin flow of control as output
Serial.begin(9600);
while(!Serial)
{
; //to wait for pc to connect
}
Serial.println("\nHome Automation");
dashprint();
}
void loop() { // put your main code here, to run repeatedly:
if(Serial.available()>0)
{ i=0;
while(Serial.available()>0) //if serial available
{ char inchar=Serial.read();
txt[i]=inchar; // add char to txt string
i++;// increment to where to write next
txt[i]='\0'; //null termination
}
Serial.print(txt);
check();
}
}
void dashprint() //to print dashes
{
Serial.println("-----------------------------------------------");
Serial.println("give me some command"); //ask for command
}
void check()
{ if(strncmp(txt,"ON",2)==0)
{
digitalWrite(X,HIGH);
Status=1;
}
else if(strncmp(txt,"OFF",3)==0)
{ digitalWrite(X,LOW);
Status=0;
}
else if(txt=="STATUS")
{
}
else Serial.println("ERROR");
}
вывод:
Домашняя автоматизация
дать мне команду OERROR NERROR
ERROR
ожидаемый результат:
Домашняя автоматизация
дать мне команду ВКЛ