Klein und kurz: Das Arduino-Programm
Das Arduino-Programm/Sketch wurde kurzerhand von obiger Quelle übernommen. Es fragt nach seriellen Daten der Form "0" oder "1" und schaltet entsprechend die LED am Pin mit der Nummer LED. Bei 13 ist das die On-Board-LED. Ist das kurze Programm zum Arduino übertragen, so kann im Serial-Monitor der IDE überprüft werden, ob wie gewünscht geschaltet wird, indem "0" und "1" (ohne Anführungszeichen) übertragen werden:
char incomingByte; // incoming data
int LED = 13; // LED pin
void setup() {
Serial.begin(9600); // initialization
pinMode(LED, OUTPUT);
Serial.println("Press 1 to LED ON or 0 to LED OFF...");
}
void loop() {
if (Serial.available() > 0) { // if the data came
incomingByte = Serial.read(); // read byte
if(incomingByte == '0') {
digitalWrite(LED, LOW); // if 1, switch LED Off
Serial.println("LED OFF. Press 1 to LED ON!"); // print message
}
if(incomingByte == '1') {
digitalWrite(LED, HIGH); // if 0, switch LED on
Serial.println("LED ON. Press 0 to LED OFF!");
}
}
}
Wenn alles funktioniert, kann der Arduino vom Rechner getrennt werden. Nun noch die zwei Verbindungen zum RS232/Bluetooth-Adapter und beide Geräte mit Spannung versorgen. Das kann auch ein Solarakku mit USB-Anschluss sein, wie beim "Zollstock".
Kurz und klein: Das RFO-Programm
Im Buch "Messen mit dem Smartphone" ist beschrieben, wie mit einer Bluetooth-Verbindung auf serielle Geräte zugegriffen werden kann. Mit einer Änderung im zweiten Teil des dortigen Listings 'Bluetooth1.bas' ist es möglich mit dem Adapter zu kommunizieren und die LED am Arduino via Bluetooth zu schalten. Bis zur Zeile BT.DEVICE.NAME device$ sind die Zeilen identisch mit dem Listing in Kapitel 15.
Das RFO-Programm arbeitet im Grafikmodus, da hier der Touch etwas besser funktioniert als im Konsolenfenster. Zunächst werden einige Dinge initialisiert und die Bildschirmgröße ermittelt. Vor Eintritt in die Hauptschleife wird ein gelber Kreis konstruiert, aber noch nicht angezeigt. Nun wird bei jeder Bildschirmberührung umgeschaltet. Damit der Bildschirm nicht "prellt" sind weitere Touch-Abfragen eingebaut, die in ein Unterprogramm ausgelagert sind. Insgesamt ist das rechte Listing erheblich kürzer als das in oben genannter Quelle.
Zusammenspiel Es funktioniert
Wird das Basic-Programm gestartet, so zeigt Android die gekoppelten Bluetooth-Geräte zur Auswahl. Der Adapter mit dem Namen "BOLUTEK" ist hier die Wahl. Nach einer Weile steht die Verbindung und am Adapter leuchtet die blaue LED konstant. Das Smartphone schaltet in den Grafikmodus und zeigt einen gelben Kreis. Mit BT.WRITE "1" bekommt der Arduino über die RS232-Leitung die "1" weiter gereicht, worauf hin das Arduino-Programm die Leuchtdiode an Pin 13 einschaltet. Nur der Empfang vom Arduino klappt hier noch nicht ... auch nicht mit drei oder mehr Drähten.
Der dritte, orange Draht kam später hinzu und ist die Verbindung Arduino 3,3 V zu VDD-Adapter. Dadurch wird nur noch eine Spannungsquelle benötigt, die den Arduino versorgt. Dieser gibt seine 3,3 Volt an den Adapter weiter. Dann leuchtet nur noch die blaue Leuchtdiode, die Power-LED bleibt aus - sie signalisiert vermutlich nur Spannung am Mikro-USB-Anschluss.
Ein vierter Draht gesellt sich noch hinzu, damit auch die Meldung "Press 1 to LED ON or 0 to LED OFF..." im Arduino-Sketch erscheinen kann.
Pegelprobleme Diode hilft wieder
Der vierte Draht ist nur ein 'halber' Draht - ein Halbleiter. Mit einer Universaldiode (1N4148) - wie schon beim Arduino-Radio - wird das Problem aus der Welt geschafft. In Richtung Arduino geschaltet (Pin 1) klappt nun auch die Kommunikation in beiden Richtungen.
Die Überprüfung erfolgt diesmal in einem der vielen Bluetooth-Terminal-Programme, die es inzwischen in Play-Store gibt. Das "Bluetooth-Terminal" eignet sich gut für diesen schnellen Testlauf. Mit der Tastatur können Zeichen (Ascii) oder Hexadezimalwerte eingegeben und gesendet werden.
Mit "1" schaltet die LED an, mit "0" wieder aus. Die entsprechende Meldung vom Arduino wird nun auch endlich angezeigt. Wird in den HEX-Modus umgeschaltet, können auch Bytes gesendet werden, die nicht im Ascii-Bereich liegen. Da dann eine "1" einer 31 entspricht, schaltet dieser Wert nun die LED an. Das Terminal stellt auch die Antwort hexadezimal dar. Die 30 entspricht dann der "0" und schaltet aus.
Schalten mit Play-Store-Apps
Aus derselben Feder, wie das "Bluetooth-Terminal" stammt die Applikation "Bluetooth-Serial". Diese App beinhaltet ebenfalls die Terminalfunktion, kann aber zusätzlich sehr einfach und ohne Programmierkenntnisse bis zu 25 Schalter frei verwalten. Einstellbar sind z.B.:
- Größe
- Sichtbarkeit
- Text
- Sendekommando
Für einfache Steuerungen könnte das reichen. Zumindest bekam das Arduino-Radio einige Sendertasten ... Das Ergebnis hier gleicht dem der Quelle, nur mit anderen Mitteln realisiert.
*) Stimmt so nicht ganz. Später mehr ...