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

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
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]

Inlägg 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?
Senast redigerad av Electricguy 25 augusti 2014, 23:23:12, redigerad totalt 2 gånger.
Användarvisningsbild
Icecap
Inlägg: 26628
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

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

Inlägg 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.
  }
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

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

Inlägg 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... :-)
Användarvisningsbild
Electricguy
Inlägg: 12477
Blev medlem: 15 augusti 2007, 16:52:14
Ort: Kälmä' typ..

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

Inlägg 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 :)
Användarvisningsbild
Icecap
Inlägg: 26628
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

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

Inlägg av Icecap »

sodjan: f'låt, hade inte glasögonen på...
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

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

Inlägg av sodjan »

Det är OK, om du svarar på mailet jag skickade tidigare idag. :-)
Till adressen på din "kontakt" websida... :-)
Användarvisningsbild
Electricguy
Inlägg: 12477
Blev medlem: 15 augusti 2007, 16:52:14
Ort: Kälmä' typ..

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

Inlägg 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;

    } 
  }
}
Användarvisningsbild
Icecap
Inlägg: 26628
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

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

Inlägg 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.
Användarvisningsbild
Electricguy
Inlägg: 12477
Blev medlem: 15 augusti 2007, 16:52:14
Ort: Kälmä' typ..

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

Inlägg 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! :)
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

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

Inlägg 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()...
Skriv svar