Arduino Tutorial Serielle Kommunikation

Hallo

Das “Normale” Arduino Board verfügt über eine Serielle Schnittstelle die man entweder mit den beiden “RX TX” Pins ansteuern kann oder über den USB Anschluss des Boards…

Von der Software macht das jedoch keinen Unterschied.

Für unser Heutiges Projekt verwenden wir wieder die Schaltung mit der LED ohne Potentiometer und ohne Taster.

Ziel unseres kleinen Versuchs soll es sein die LED über den Computer ein und aus zu schalten.

Dafür werden wir die Serielle Schnittstelle des Arduino Boards verwenden.

Der Controller soll die LED einschalten wenn er eine “1″ gesendet bekommt und er soll die LED ausschalten wenn er eine “0″ gesendet bekommt. Desweiteren soll er uns noch mitteilen ob die LED ein oder aus geschaltet ist…

 

Das Programm dafür sieht folgendermaßen aus:

#define ledPin 11
int incomingByte;      

void setup() {

  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

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

    incomingByte = Serial.read();

    if (incomingByte == '1')
    {
      digitalWrite(ledPin, HIGH);
      Serial.println("LED ist eingeschaltet!");
    } 

    if (incomingByte == '0')
    {
      digitalWrite(ledPin, LOW);
      Serial.println("LED ist ausgeschaltet!");
    }
  }
}

Das Definieren des LED-Pins denke ich ist klar… Neu bei diesem Programm ist Serial.begin() Diese Funktion sagt dem Arduino das er eine Serielle Verbindung mit 9600 bps aufbauen soll.

Die Funktion Serial.available() gibt einen Wert größer als 0 zurück wenn Daten an den Arduino geschickt werden. Das heißt wenn nichts ankommt können wir etwas anderes machen und müssen nicht sinnlose Zeit mit Warten verschwenden…

Mit Serial.read() lesen wir ein Bit in die Variable incomingByte ein.

Dann brauchen wir den Inhalt von incomingByte nur mehr mit “0″ oder “1″ vergleichen und wir können unsere LED danach ein oder ausschalten… Wenn etwas anderes als “0″ oder  ”1″ gesendet wird dann passiert einfach gar nichts.

Mit der Funktion Serial.println() senden wir noch über die Serielle Verbindung ob die LED ein oder aus geschaltet wurde… Der Unterschied zwischen Serial.println() und Serial.print() ist das bei Serial.println() gleich in eine neue Zeile gesprungen wird und bei Serial.print() nicht so das der nächste Text in der gleichen Zeile weiter ausgegeben werden würde…

Um das ganze jetzt zu testen müssen wir es nur noch auf den Arduino laden und im Arduino IDE den rechteten Button drücken. den “Serial-Monitor”. Wenn wir jetzt in die obere Zeile eine “1″ eingeben sollte die LED leuchten und wenn wir eine “0″ eingeben sollte sie ausgehen. In der “Konsole” sollte dann jeweils der Status stehen.

 

 

 

 

 

 

 

 

Ich sollte vielleicht noch anmerken das beim ein und ausschalten des “Serial-Monitor” der Arduino resetet wird…

 

Viel Spass beim herumprobieren

Grüße Hoonse

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Antworten auf Arduino Tutorial Serielle Kommunikation

  1. henryweb sagt:

    Hallo,
    das ist natürlich blöd, daß der Arduino beim Ein und Ausschalten des Monitors resetet wird. Bei ner Haussteuerung die autark arbeiten soll will ich doch mal Statusdaten sehen oder irgendwas schalten. Beim Reset werden alle internen Variablen auf Anfang gestellt, sogar die DCF-Zeit muß wieder synchronisiert werden. Was ist zu tun?

    • Hoonse sagt:

      hallo

      es is nunmal so das beim öffnen des serial monitor der arduino resetet wird.
      meines wissens nach führt da kein weg daran vorbei.

      wenn du daten behalten willst könntest du diese zb. immer in den eeprom schreiben und von dort aus wieder auslesen.

      oder du besorgst dir einen arduino ethernet und arbeitest über das netzwerk.
      das ist vermutlich auch schöner als wenn du immer einen rechner am arduino angeschlossen haben musst.

      vielleicht klappt es aber auch wenn du einen normalen terminal emulator wie unter windows zb. hyperterm verwendest.
      ob sich dabei der arduino resetet kann ich nicht sagen, aber einen versuch ist es sicher wert.

      mfg hoonse

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>