Sida 1 av 1

Arduino hjälp. Seriell dataöversättare [Löst]

Postat: 25 augusti 2014, 21:22:21
av Electricguy
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?

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:27:06
av Icecap
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

Postat: 25 augusti 2014, 21:27:49
av sodjan
Läs ett tecken och sedan något i stil med:

Kod: Markera allt

switch tecken {
 case "B":
  write "Hello World";
  break;
 case "C":
  write "C-strängen";
  break;
 default:
  write "Unknown char";
}
EDIT: Jäkla Icecap, du borde sett att jag skrev... :-)

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:34:16
av Electricguy
Åhåå se där! Det verkar ju vara ett vettigt sätt att göra det på.
Tackar så mycket! Åter till kodknackandet :)

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:36:32
av Icecap
sodjan: f'låt, hade inte glasögonen på...

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:39:00
av sodjan
Det är OK, om du svarar på mailet jag skickade tidigare idag. :-)
Till adressen på din "kontakt" websida... :-)

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:46:35
av Electricguy
Fääärdig! :D
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

Postat: 25 augusti 2014, 21:52:34
av Icecap
Och dagens tips: I detta kanske du inte behöver det men man kan göra såhär:

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;
Man kan alltså ha fler villkor som utlöser samma programsnudd.

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 21:55:04
av Electricguy
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! :)

Re: Arduino hjälp. Seriell dataöversättare

Postat: 25 augusti 2014, 22:17:35
av sodjan
Eller:

Kod: Markera allt

    switch (toupper(inByte)) {
    case 'A':   
      Serial.print("HELLO");
      break;
...
...
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()...