Ascii Code

Hallo zusammen,

Mein Problem ist das ich gerne ein Handy mit meinem Arduino verbinden möchte.
Mit dem Computer funktioniert das ohne weitere Probleme!
Das Handy sendet mit die Zeichen als Ascii Code, mein Programm vergleicht aber die Zeichen.
Im klartext heist das wenn ich die 1 drücke geht die Lampe an , ich würde aber gerne das es mir den Wert 1 mit dem Ascii Code ( 1 = 48 ) vergleicht.
Das Problem nämlich ist das handy versendet mit keine 1 sondern eine 48 für die eins.

Ich hoffe ihr versteht mein Problem

Anbei noch der Code

char val;
int ledpin = 2;
void setup()
{
pinMode(ledpin = 13, OUTPUT);

Serial.begin(115200);

}

void loop() {
if( Serial.available() )
{;}
val = Serial.read();

if( val == '0' )
{
digitalWrite(ledpin, LOW);
delay(1000);
Serial.println("LED aus");
}
if( val == '1' )
{
digitalWrite(ledpin = 13, HIGH);
delay(1000);
Serial.println("LED an");
}
}

Hallo Apfel3,

das ist doch recht simpel. Da du eigentlich nur die Zahlen benötigst, kannst du doch die ASCII-Zeichen einfach umrechen.
0 = 48
...
9 = 57
Daher kann man einfach 48 abziehen und bekommt seine Zahl als Ergebnis. Bei den Buchstaben ist es dann allerdings etwas anders. Dazu kann man aber einfach den Datentypen char benutzen und einen Integer-Wert zuweisen.

Hier gibt es eine ASCII-Tabelle, die ich recht übersichtlich finde.
Damit kann man das easy umrechen. Zur Not baut man sich eine Switch-Case Anweisung.

Gruß,
trib

Dann vergleiche die Empfangenen Zahlen mit den Ascii-Wert des Zeichens oder subtrahiere für die Zahlen 0 bis 9 einfach 48 vom Ascii-Wert .

Das 1-Zeichen hat den Ascii-Code 49!

Was soll eigentlich der folgende Code machen?

if( Serial.available() )       
  {;}
    val = Serial.read();

Grüße Uwe