Funktionsweise

Die Kommunikation zwischen dem Android-Smartphone und dem Arduino plus RedFly-Shield geschieht über kleine UDP-Pakete bestehend aus 3 Bytes. Das erste Byte steht für den Modus, das zweite für den Pin und das dritte für den Zustand. Dieses Paket wird vom Arduino verarbeitet und weiß anhand der Bytes, was als nächstes getan werden soll.

 

Modus

Es gibt 5 Modi:

  • A = Analoges Signal wird gesendet
  • D = Digitales Signal wird gesendet
  • S = Servo (PWM) Signal wird gesendet
  • B = Analoger Zustand wird gelesen
  • E = Digitaler Zustand wird gelesen

 

Pin

Es stehen Pins von Pin 4 bis einschließlich Pin 13, sowie A0 bis einschließlich A5 zur Verfügung. Folgendes muss dabei beachtet werden:

Modus "A" (Analoges Signal senden) und Modus "S" (Servo) funktionieren nicht für die Pins A0 - A5.

Modus "B" (Analoges lesen) funktioniert nicht für die Pins 4 - 13.

 

Zustand

Der Zustand kann für den Modus "D" entweder 0 oder 1 haben. Für die Modi "A" und "S" können sie 0 bis 100 haben. Sie stehen für Prozent. Bei den Modi "B" und "E" ist der zu übertragende Zustand irrelevant und bleibt auf 0.

 

Beispiele

Es wird vom Android das Paket "D 6 1" gesendet. Das Arduino Board empfängt das Signal und setzt den Pin 6 auf HIGH. Mit beispielsweise einem Multimeter kann man an diesem Pin nun eine Spannung von 5V messen. Das Signal "D 6 0" würde Pin 6 wieder auf LOW setzten. Dann ist eine Spannung von 0V zu verzeichnen.

Es wird vom Android das Paket "A 7 50" gesendet. Das Arduino Board empfängt das Signal und setzt den Pin 7 auf 50%. Mit beispielsweise einem Multimeter kann man an diesem Pin nun eine Spannung von etwa 2,5V (50% von 5V) messen. Das Signal "D 7 75" würde Pin 7 auf 75% setzten. Dann ist eine Spannung von etwa 3,75V zu verzeichnen.

Es wird vom Android das Paket "S 8 50" gesendet. Das Arduino Board empfängt das Signal und setzt den Pin 8 auf 50%. Falls an diesem Pin ein Servo angschlossen ist, so würde dieser auf die Mitte seiner Auslenkung gesetzt werden. Das Signal "S 8 100" würde den Servo voll in die eine Richtung auslenken währen "S 8 0" den Servo voll in die andere Ausrichtung lenken würde.

Es wird vom Android das Paket "B 14(A0) 0" gesendet. Das Arduino Board empfängt das Signal und sendet ein UDP-Paket zurück an das Smartphone. In diesem Paket ist ein einzelnes Byte, welches einen Wert von 0 bis 100 enthält. Dieser Wert wird nach dem Empfangen auf dem Hauptbildschirm angezeigt. Würde an Pin A0 eine Spannung von 3,75V anliegen, so würde der übertragene Wert etwa 75 lauten (75% von 5V).

Es wird vom Android das Paket "E 11 0" gesendet. Das Arduino Board empfängt das Signal und sendet ein UDP-Paket zurück an das Smartphone. In diesem Paket ist ein einzelnes Byte, welches den Wert 0 oder 1 enthält. Dieser Wert wird nach dem Empfangen auf dem Hauptbildschirm angezeigt. Würde der Pin 11 auf HIGH gesetzt sein würde der Wert 1 angezeigt werden. Falls Pin 11 auf LOW gesetzt ist, dann wird der Wert 0 angezeigt.