Ljusblå driven bean RC Bil mod (3 / 3 steg)
Steg 3: Programmeras
Nästa, jag öppnade den ljusblå bean loader app på en ipad och använde den för att ladda upp här koden till styrelsen.
Observera detta prov endast använder accelerometern. Jag kommer att lägga till kod för att inaktivera accelerometern och få kommandon via bluetooth i framtiden när jag gör kopplingen möjligt från en mobiltelefon.
Också märke hur jag aktivera knapparna genom att linjen ska vara en utgång och sättande den låg. Detta skäl produktionen och den registeransvarige att upptäcka en buttonpress. När det inte är pressas, ändra jag knappen för att vara en ingång så det inte hävda något på linjen.
Jag märkte detta trick fungerar bara på en denna låg spänning controller. På en domänkontrollant som använder ett 9v batteri, böna erbjuda inte tillräckligt motstånd och registeransvarige tror knappen trycks alltid. Så det är en annan anledning (förutom att undvika behovet av en 3.3V regulator) att gå med en låg spänning regulator.
Lysdioden är också grönt när man kör framåt, blå när bakåt och rött när den stoppas. Detta var till hjälp vid felsökning av vad bönan försöker skicka.
Jag är inte säker varför koden visas i flera kod boxar, men det bör klistra ut ordentligt.
void setup() {
initiera seriell kommunikation 57600 bitar per sekund:
Serial.BEGIN(57600);
}
Annullera utgång (int16_t d, int16_t v) {
IF(v==0) {
pinMode (d, produktionen);
digitalWrite d, låg.
} annat {
pinMode d, INPUT_PULLUP.
}
}
void loop() {
tröskelvärde för int16_t = 8;
Bean.setLed(0,0,0);
AccelerationReading accel = Bean.getAcceleration();
int16_t sidan = (accel.xAxis)/8;
int16_t enhet = (accel.yAxis)/8;
om (enhet <-tröskel) {
output(0,0);
output(1,1);
Bean.setLedGreen(100);
} annat if(drive > threshold) {
output(1,0);
output(0,1);
Bean.setLedBlue(100);
} annat {
output(0,1);
output(1,1);
Bean.setLedRed(abs(drive));
}
om (sidan <-tröskel) {
output(2,1);
output(3,0);
} annat if(side > threshold) {
output(3,1);
output(2,0);
} annat {
output(2,1);
output(3,1);
}
Bean.Sleep(250);
}