Schritt 3: Programmieren des Controllers
Als nächstes, ich öffnete die hellblauen Bohne Loader app auf dem Ipad und benutzte es, um diesen Code auch direkt hochladen.
Beachten Sie, dass dieses Beispiel nur den Beschleunigungsmesser verwendet. Ich will hinzufügen, dass Code zum Deaktivieren des Beschleunigungsmessers und Befehle über Bluetooth empfangen, in Zukunft, wenn ich den Link von einem Mobiltelefon ermöglichen.
Beachten Sie auch, dass die Weise ich die Buttons aktivieren indem die Schlange, um einen Ausgang und niedrig eingestellt. Das erdet die Ausgabe und ermöglicht die Steuerung um eine Buttonpress zu erkennen. Wenn es nicht gedrückt wird, ändere ich die Schaltfläche, um eine Eingabe zu sein, so dass es nichts auf der Strecke nicht durchsetzen.
Ich habe bemerkt, dass dieser Trick funktioniert nur auf eine dieser Niedervolt-Controller. Auf einem Controller, der eine 9v Batterie verwendet, die Bohne nicht genügend Widerstand bieten und der Controller denkt immer die Taste gedrückt wird. So ist es ein weiterer Grund (neben der Vermeidung der Notwendigkeit für ein 3,3V Regler) mit einem Niederspannungs-Controller zu gehen.
Auch ist die LED grün beim vorwärts fahren, rückwärts blau und rot Stillstand. Das war hilfreich bei der Fehlersuche, was die Bohne schicken wollte.
Ich bin mir nicht sicher warum der Code in verschiedenen Code-Boxen erscheint, aber es sollte kopieren/einfügen richtig.
void setup() {
// initialize serial communication at 57600 bits per second: Serial.begin(57600); }
void output(int16_t d, int16_t v) { if(v==0) { pinMode(d, OUTPUT); digitalWrite(d, LOW); } else { pinMode(d, INPUT_PULLUP); }
}
void loop() { int16_t threshold = 8; Bean.setLed(0,0,0); AccelerationReading accel = Bean.getAcceleration();
int16_t side = (accel.xAxis)/8; int16_t drive = (accel.yAxis)/8;
Wenn (Laufwerk <-Schwelle) {output(0,0); output(1,1); Bean.setLedGreen(100); if(drive < -threshold) { output(0,0); output(1,1); Bean.setLedGreen(100); } else if(drive > threshold) { output(1,0); output(0,1); Bean.setLedBlue(100); } else { output(0,1); output(1,1); Bean.setLedRed(abs(drive)); } sonst If(drive > threshold) {output(1,0); output(0,1); Bean.setLedBlue(100); if(side < -threshold) { output(2,1); output(3,0); } else if(side > threshold) { output(3,1); output(2,0); } else { output(2,1); output(3,1); } Bean.sleep(250); Else {output(0,1); output(1,1); Bean.setLedRed(abs(drive)); }
Wenn (Seite <-Schwelle) {output(2,1); output(3,0);sonst If(side > threshold) {output(3,1); output(2,0);Else {output(2,1); output(3,1);