I am want to receive a 5 character hexadecimal input from user over serial port of arduino Uno.
int count = 0; // count = 0
char userInput[5];
void setup()
{
delay(1000);
Serial.begin(19200); // begin serial port with baud rate 9600bps
}
void loop()
{
if (Serial.available() > 5)
{
Serial.read();
}
else if (Serial.available() < 4)
{
Serial.read();
}
else if (Serial.available() == 5)
{
for (int i = 0; i < 5; i++)
{
userInput[i] = Serial.read();
}
Serial.print("User Input - ");
Serial.println(userInput);
}
delayMicroseconds(10000);
}
But I want to discard the input if user inters less than 5 characters or more than 5?
Since the Serial.flush() have a different meaning now, I can not clear the buffer if user enters less than or more than 5 characters and the characters gets added to next input.
e.g. If I upload above program and entered input in following sequence:
abcde
abcd
abcd
abcd
abcd
abcdef
abcde
I got the following output:
User Input - abcde
User Input - dabcd
User Input - dacbd
User Input - bcdef
User Input - abcde
- TheseTwo invisible characters appear in output which are not visible but when I copied the output from serial monitor but these characters appear herewhen I copy paste the output into Text Editor.
So How can I modify the program to receive only 5 hex character input from user (Which user will input from Hex Keypad)? And if user enters more or less character I want to clear the input buffer for next user input so that characters from previous input doesn't get added to next one.