Kim
Kim

Reputation: 57

Why does my Arduino serial port gives me semi-random numbers?

I have a basic problem with my Arduino Uno.
My example code gets a number over Serial port and should print it back.

int incomingByte = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Hello World");  
}

void loop() {
  if (Serial.available() > 0) {

    // read the incoming byte:
    incomingByte = Serial.read();

    // say what you got:
    Serial.print("I received: ");
    Serial.println(incomingByte, DEC);
  }
} 

When I send 0, I receive 48.

0->48
1->49
2->50
3->51

a->97
b->98
A->65

So why doesn't it send the same numbers back to me?

Upvotes: 3

Views: 1151

Answers (1)

Mathews Sunny
Mathews Sunny

Reputation: 1642

In your program the output is ASCII equivalent of the input that the Arduino receives. ASCII equivalent of 0 is 48, 1 is 49, a is 97, A is 65 and so on.

The reason is you are storing your input to incomingByte variable (incomingByte = Serial.read();) but you declare incomingByte variable as int. When a character is assigned to integer variable, its corresponding ASCII value will be stored to the integer variable.

So if you want to print a character that you send to the Arduino, you want to change int incomingByte = 0; to char incomingByte;.

Upvotes: 7

Related Questions