Étape 3: Programmer le contrôleur
Ensuite, j’ai ouvert la couleur Lightblue haricot chargeur app sur un ipad et utilisé pour charger ce code au Conseil d’administration.
Notez que cet exemple n’utilise que l’accéléromètre. J’ai ajouter du code pour désactiver l’accéléromètre et de recevoir des commandes à l’avenir quand je fais le lien possible à partir d’un téléphone portable via bluetooth.
Notez également la façon dont j’ai activer les boutons est en affectant la ligne soit une sortie et il faible. Ce terrain à la sortie et permet au contrôleur de déceler une buttonpress. Quand il n’est pas pressé, j’ai changer le bouton pour être une entrée, donc il n’est pas affirmer quoi que ce soit sur la ligne.
J’ai remarqué cette astuce ne fonctionne que sur ce contrôleur de basse tension. Sur un contrôleur qui utilise une pile 9v, la fève n’offre pas assez de résistance et le contrôleur pense que toujours la touche. Donc c’est une autre raison (en plus d’éviter la nécessité de 3, 3V régulateur) pour aller avec un contrôleur de basse tension.
La LED est également vert en marche avant, bleu lorsqu’il est en arrière et rouge lorsqu’ils sont arrêtés. Cela a été utile lors du débogage de ce que la fève essayait d’envoyer.
Je ne sais pas pourquoi le code apparaît dans plusieurs zones de code, mais il doit copier/coller dehors correctement.
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;
Si (lecteur <-seuil) {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)); } d’autre 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)) ; }
Si (côté <-seuil) {output(2,1) ; output(3,0) ;d’autre if(side > threshold) {output(3,1) ; output(2,0) ;else {output(2,1) ; output(3,1) ;