Schritt 6: Programmierung Phase
Nun, ich eine Checkliste hatte zu gehen aus gehe ich schnell um Schreiben eines Skripts in mein Arduino IDE (integrierte Entwicklungsumgebung) zu arbeiten. Ich werde nicht um zu langweilen Sie mit allem, was in meinem Skript, es geht auch unzähligen YouTube-Videos zeigen, wie Sie ein Skript schreiben, aber ich werde erklären, was passiert, im Skript.
Ich benutze mein Arduino Uno Atmel 328 Chips programmieren.
Meine ein-/Ausgänge
Ausgang = const Int Pivotoneerror = 7; Dies ist eine rote LED, Pivot ein Fehler
Ausgang = const Int Pivottwoerror = 8; Dies ist eine rote LED, Pivot zwei Fehler hinweisen
Ausgang = const Int Runled = 9; Dies ist eine gelbe LED um anzuzeigen, dass System in einem Lauf Zustand befindet
Ausgang = const Int Wiederöffnen = 10; Dies ist eine Schaltfläche "Start", um System zu starten
Eingabe = const Int EngineRly = 11; Dies ist die Ausgabe für Relais, Murphy Schalter
Ausgang = const Int Testlight = 13; Dies ist eine leichte Kommunikationstest, beim Test auf remote-Radio das Licht Taste wird lite
Die Bibliotheken, die ich verwendet
#include //Xbee Bibliothek. Quelle: http://code.google.com/p/xbee-arduino/
Das SETUP-Skript zu starten ich Xbee Serial Port mit:
XBee.Begin(9600);
Nun, für die Hauptschleife mein Arduino Programm, es sieht folgendermaßen aus...
void loop() {}
Lesen Sie den Zustand der Schaltfläche "Start" in einer lokalen Variablen:
StartButtonRead = digitalRead(startbutton);
StartButtonState = StartButtonRead;
Wenn die Schaltfläche "Start" gedrückt und der Zustand der Schaltfläche ist nicht dasselbe, wie es vorher war, ändert den Status des START
Wenn (StartButtonState == HIGH & & StartButtonState! = StartButtonLastState) {}
START =! START;
}
Stellen Sie sicher, dass das nächste Mal durch die Schlaufe StartButtonLastState starten Schaltfläche Status entspricht
StartButtonLastState = StartButtonRead;
Wenn START auf hoch festgelegt ist, das Motor Relais energetisieren und run-LED
Wenn (START == True) {}
DigitalWrite (EngineRly, HIGH);
DigitalWrite (Runled, HIGH);
}
Wenn START auf niedrig eingestellt ist, deenergize Motor Relais und run-LED
Wenn (START == False) {}
DigitalWrite (EngineRly, LOW);
DigitalWrite (Runled, LOW);
}
der Versuch, ein Paket von Xbee lesen
xbee.readPacket();
Wenn (xbee.getResponse().isAvailable()) {}
haben Sie etwas
Wenn (xbee.getResponse().getApiId() == ZB_IO_SAMPLE_RESPONSE) {}
xbee.getResponse().getZBRxIoSampleResponse(ioSample);
Überprüfen Sie, ob Xbee Check-in durch den Vergleich IoSample Xbee Adresse mit Xbee-Adresse habe ich in Programmierung
Wenn (ioSample.getRemoteAddress64().getLsb() == PivotoneaddressLSB) {}
Pivotonecheckin = millis(); Mark schwenken ein Xbee als eingecheckt
}
ElseIf (ioSample.getRemoteAddress64().getLsb() == PivottwoaddressLSB) {}
Pivottwocheckin = millis(); Markierungen drehen zwei Xbee als eingecheckt
}
sehen Sie, ob die Pin wollen wir niedrig ist
Wenn (! ioSample.isDigitalOn(1)) {}
Es ist ein Fehler heruntergefahren Motor
START = False;
können überprüfen, welche Radio aus, und senden Sie es an das Display.
Wenn (ioSample.getRemoteAddress64().getLsb() == PivotoneaddressLSB) {}
DigitalWrite (Pivotoneerror, HIGH); LED1 schaltet sich für Fehler
}
ElseIf (ioSample.getRemoteAddress64().getLsb() == PivottwoaddressLSB) {}
DigitalWrite (Pivottwoerror, HIGH); LED2 schaltet sich für Fehler
}
}
Wenn (! ioSample.isDigitalOn(2)) {}
Zyklus abgeschlossen ist, beenden Sie Motor
START = False;
}
{If(!ioSample.isDigitalOn(3))}
Weg, um Knoten zu testen, indem Sie eine LED einschalten
DigitalWrite (Testlight, HIGH);
}
Else {}
digitalWrite(testlight,LOW);
}
}
}
prüft, ob Xbees eingecheckt haben in den letzten 1 min., wenn sie nicht; Herunterfahren (Xbees sind
programmiert, Einchecken alle 20 sec.) Wenn Xbee nicht eingecheckt hat im System herunter und schalten Sie
Appropreat zeigen die Fehler-LED
Wenn (millis() - Pivotonecheckin > = 60000) {}
START = False;
DigitalWrite (Pivotoneerror, HIGH); LED1 schaltet sich für Fehler
}
Wenn (millis() - Pivottwocheckin > = 60000) {}
START = False;
DigitalWrite (Pivottwoerror, HIGH); LED2 schaltet sich für Fehler
}
} / / Ende der Schleife