Arduino hjälp. Seriell dataöversättare [Löst]
- Electricguy
- Inlägg: 12477
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Arduino hjälp. Seriell dataöversättare [Löst]
Jag har kört fast lite, på något som i teorin är väldigt enkelt att göra, men jag får inte till det.
Det jag vill göra är att översätta seriell data. Jag vill kunna ta in en enkel bokstav mellan A-J, ohc översätta bokstaven till en sträng med data som sedan ska skickas ut.
Så tex. om man skickar in ett "B", så får man ut "Hello World"
Jag har lyckats att skicka data rakt igenom, och även mellanlarga enstaka bokstäver och sedan skicka ut flera som en sträng.. Men det är inte riktigt vad jag är ute efter.
Är det någon som har lite tips och råd?
Det jag vill göra är att översätta seriell data. Jag vill kunna ta in en enkel bokstav mellan A-J, ohc översätta bokstaven till en sträng med data som sedan ska skickas ut.
Så tex. om man skickar in ett "B", så får man ut "Hello World"
Jag har lyckats att skicka data rakt igenom, och även mellanlarga enstaka bokstäver och sedan skicka ut flera som en sträng.. Men det är inte riktigt vad jag är ute efter.
Är det någon som har lite tips och råd?
Senast redigerad av Electricguy 25 augusti 2014, 23:23:12, redigerad totalt 2 gånger.
Re: Arduino hjälp. Seriell dataöversättare
Ett sätt är att använda en switch().
Kod: Markera allt
switch(Incoming)
{
case 'a':
case 'A':
Send("Hej hopp");
break;
case 'b':
case 'b':
Send("Gummisnopp");
break;
case 'c':
case 'C':
Send("Något helt annat");
break;
case 'd':
case 'D':
Send("Ännu konstigare");
break;
case 'e':
case 'E':
Send("Jag är fin");
break;
osv. osv.
}
Re: Arduino hjälp. Seriell dataöversättare
Läs ett tecken och sedan något i stil med:
EDIT: Jäkla Icecap, du borde sett att jag skrev... 
Kod: Markera allt
switch tecken {
case "B":
write "Hello World";
break;
case "C":
write "C-strängen";
break;
default:
write "Unknown char";
}

- Electricguy
- Inlägg: 12477
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Arduino hjälp. Seriell dataöversättare
Åhåå se där! Det verkar ju vara ett vettigt sätt att göra det på.
Tackar så mycket! Åter till kodknackandet
Tackar så mycket! Åter till kodknackandet

Re: Arduino hjälp. Seriell dataöversättare
Det är OK, om du svarar på mailet jag skickade tidigare idag. 
Till adressen på din "kontakt" websida...

Till adressen på din "kontakt" websida...

- Electricguy
- Inlägg: 12477
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Arduino hjälp. Seriell dataöversättare
Fääärdig!
Det är rackarns vad fort det kan gå när nöten väl är knäckt..
Riktigt trevligt att det mycket enkelt går att styra pinnar också, och inte bara skicka seriedata.

Det är rackarns vad fort det kan gå när nöten väl är knäckt..
Riktigt trevligt att det mycket enkelt går att styra pinnar också, och inte bara skicka seriedata.
Kod: Markera allt
void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) {
case 'A':
Serial.print("HELLO");
break;
case 'B':
Serial.print("WORLD");
break;
case 'C':
Serial.print("TEST");
break;
case 'D':
Serial.print("HASSES VVS");
break;
case 'E':
Serial.print("AHOY!");
break;
case 'F':
digitalWrite(13, HIGH);
break;
case 'G':
digitalWrite(13, LOW);
break;
case 'H':
Serial.print("H PRESSED");
break;
case 'I':
Serial.print("I PRESSED");
break;
case 'J':
Serial.print("J PRESSED");
break;
}
}
}
Re: Arduino hjälp. Seriell dataöversättare
Och dagens tips: I detta kanske du inte behöver det men man kan göra såhär:
Man kan alltså ha fler villkor som utlöser samma programsnudd.
Kod: Markera allt
case 'a':
case 'A':
case nånting_annat:
Detta händer om det är 'a', 'A', eller nånting_annat som kommer in.
break;
- Electricguy
- Inlägg: 12477
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Arduino hjälp. Seriell dataöversättare
Det är inte aktuellt just nu, men det är jättebra att veta, att det går att göra det så enkelt! 
Tackar för hjälpen boys!

Tackar för hjälpen boys!

Re: Arduino hjälp. Seriell dataöversättare
Eller:
Så fungerar båda 'A' och 'a'.
Om man inte man ha toupper() just där, så blir det en extra rad före switch()...
Kod: Markera allt
switch (toupper(inByte)) {
case 'A':
Serial.print("HELLO");
break;
...
...
Om man inte man ha toupper() just där, så blir det en extra rad före switch()...