Hallo alle zusammen, ich habe einen Arduino Uno und ein WIFI-Shield (RN-XV WiFly Module (Roving Networks) http://www.watterott.com/de/Roving-Networks-RN-XV-WiFly-Module ) Außerdem verwende ich diese Arduino Total Control App: https://play.google.com/store/apps/details?id=com.apps.emim.btrelaycontrol Diese App soll mehrere Relays (8) ansteuern. Dies geht über eine Bluetooth oder Wlan-Verbindung (in meinem Fall WLAN). Ich habe bin bis jetzt soweit dass ich das WLAN-Modul und mein Smartphone in einem Netztwerk habe. Außerdem habe ich ´das WIFI-Shield soweit programmiert, dass er Buchstaben die von der App über das Netzwerk ankommen an seinem RX/TX ausgibt. Ich kann also wenn ich auf den Arduino eienen Bare Minimum Sketch lade und den seriellen Monitor öffne die Buchstaben empfangen wenn ich in der App auf den entsprechenden Button drücke. Außerdem kann ich über den Seriellen Monitor "Sachen" an die App senden diese erscheinen dann oben in der App. Mein Problem ist es jetzt den Arduino so zu Programmieren, dass er einfach wenn z.B. Ein A ankommt er Pin 2 auf High setzt und wenn später ein a akomm er Pin 2 auf Low setzt. Dies sollt ja durch Serial.Begin und dann mit einer if-Bedingung und mehreren cases möglich sein. Bei der App gibt es schon Beispiel-Programme dazu. Eines ist für die Verwendung eines Bluetooth Shields welches am RX-TX angeschlossen ist. Das Andere für die Verwendung eines WLAN shields an wo die Pins 10, 11, 12, 13 benötigt werden. Also brauche ich meiner Meinung nach eher den Bluetooth-Sketch weil ich ja nur ankommende Daten vom RX verarbeiten möchte allerdings ist das Programm viel ausführlicher ich kann den Sketch gerne zeigen. Mein Problem: wenn ich den Beispiel Sketch auf en Arduino Lade und dann wieder RX/TX mit dem Wifi Shield verbinde und Anschließend den Serial Monitor öffne bekomme ich nur irgendwelche Sensor Daten. Hat jemand von euch solch ein einfaches Programm welches nur ankommende Buchstaben/Signale verarbeitet?
Es liest sich so, als ob das dein erstes Arduino-Projekt ist. Dafür und zum Lernen ist es m.E. viel zu komplex. Das genannte Projekt kann ja dein Ziel sein, zum Einstieg würde ich auf einfachere (Teil-) Aufgaben setzten. Zu deiner Frage: Du musst die einkommenden Zeichen durch einen Puffer (String oder Chr-Array) "schieben" (Pufferinhalt um eine Stelle verschieben, ältestes Zeichen fällt weg, neues Zeichen kommt auf Platz 1). Wie viele Stellen du brauchst, hängt von der Zahl der benötigten Befehle ab. Zusätzlich (später!) könnte man noch Start- und Stopzeichen und eine Prüfsumme hinzufügen, damit zufällig durch Störungen erzeugte Zeichenfolgen keine wilde Schaltorgie auslösen ... Immer wenn also ein neues Zeichen in deinem Puffer hinzugekommen ist, vergleichst du in einer Reihe von if- oder select/case-Statements, ob ein bekannter Befehl dabei ist. Gibts einen Treffer, löschst du den Puffer und führst den Befehl (z.B. Pin setzen) aus, danach beginnt das Lesen bzw. Warten auf Zeichen von vorn ...
:
Bearbeitet durch User
Ich habe jetzt dieses Programm ausprobiert: #define ledPin 13 int incomingByte; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); if (incomingByte == 'A') { digitalWrite(ledPin, HIGH); Serial.println("LED ist eingeschaltet!"); } if (incomingByte == 'a') { digitalWrite(ledPin, LOW); Serial.println("LED ist ausgeschaltet!"); } } } Wenn ich es auf meinen Arduino lade und rx und tx wieder verbinde und anschließend am Serial Monitor ein A sende geht die Led an pin 13 an. Auch wenn ich ein a sende geht sie wieder aus. Wenn ich aber von der App ein A oder a sende passiert nichts. Wenn ich das richtig verstehe: der Arduino Uno hat sowohl die USB-Buchse als serielle Schnittstelle als auch den 0/1 Port als serielle Schnittstelle. Woher weiß der Arduino welcher RX/TX gemeint ist??? Ich habe ihn vom Pc getrennt und über eine externe Spannungsquelle versorgt und anschließend von meiner App ein A gesendet, aber es ist nichts passiert. Wenn ich aber auf den Arduino nur ein Bare Minimum Lade kann ich im Serial Monitor sehen dass ein A von der App ankommt. Vielen Dank für eure Hilfe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.