Stap 6: Assembleren Toy Circuitry
Nu, is er een beetje een augurk hier. De arduino verzendt gewoonlijk de waarde '0'. Echter, om redenen die wij nog niet bepaald, de arduino soms zendt alles als een ASCII-teken dat 48 boven wat u wensen. We hebben rond dit probleem door gewoon met de ontvangende arduino test voor beide mogelijke waarden, maar zullen we er zeker om te updaten dit als we erachter te komen waarom we soms grappige waarden krijgen. Het helpt om ervoor te zorgen dat u de opdracht Serial.write(), niet de Serial.print() of Serial.println()-opdrachten als u hoopt om eigenlijk om gegevens te verzenden via de radio's. Ook op dit punt, zodra u begint dingen in inpluggen en code zetten de Arduinos, zult u willen vermijden code uploaden naar een Arduino die aangesloten op het TX of RX pinnen (pinnen 0 & 1) om het even wat is.
We gebruikten drie 1.5V batterijen in serie voor het aandrijven van de arduino (drie AAs). De arduino voert enkele verordening van interne macht, dus u kunt de macht van de arduino off van 4.5V of 6V.
Soldeer de grond leidt van de twee flex-sensoren en arduino samen, waardoor het einde van één loden gratis aansluiten op het bord. Doe hetzelfde met de drie macht leidt. Plug die de grond tot één van de pinnen van de grond op de arduino en de macht leidt leidt naar de pin 5V macht. Steek het netsnoer van de XBee in de 3.3V pin en de leiding van de grond van de XBee in een andere pin op de grond, dan sluit de RX/DIN voorsprong op de TX-pin van de arduino. (De XBee ontvangt van de arduino, vandaar de inbreng van de XBee wordt aangesloten op de uitgang van de arduino.) Tot slot sluit aan de leiding van de grond van de slagman pack op de laatste grond pin en het netsnoer van het pak van de batterij in de Vin pin.
De toy circuits is nu gemonteerd! Nu alles wat je hoeft te doen is program van de arduino. We gebruikten de onderstaande code om te controleren onze speelgoed.
Waarden moeten worden gelezen
int accelVal = 0;
int bendVal1 = 0;
int bendVal2 = 0;
int accelRef;
int bendRef1;
int bendRef2;
Boole accelOn = false;
Boole bendOn = false;
int sendVal = 0;
VOID Setup {}
Deze code éénmaal uitgevoerd, aan het begin
Serial.begin(9600); Initialiseren van seriële monitor
Referentiewaarden krijgen: deze laten kalibreren van de waarden die we voor elke variatie in component gedrag sturen
accelRef = analogRead(A3);
bendRef1 = analogRead(A4);
bendRef2 = analogRead(A5);
}
void loop {}
Deze code loopt voortdurend
delay(1);
Waarden krijgen
accelVal = analogRead(A3);
bendVal1 = analogRead(A4);
bendVal2 = analogRead(A5);
Controleren of versnellingsmeter op
Als ((accelVal-accelRef) > (accelRef / 3)) {/ / Dit is een willekeurige verwijzing die we vonden werkte goed
accelOn = true;
} else {}
accelOn = false;
}
Controleren of de bocht sensoren zijn op
Als ((bendVal1 < (3 * bendRef1/4)) || (bendVal2 < (3 * bendRef2/4))) {/ / Dit is een willekeurige referentie
bendOn = true;
} else {}
bendOn = false;
}
Bepalen van de juiste waarde te verzenden op basis van de sensoren
Als (accelOn == false) {}
Als (bendOn == false) {}
sendVal = 0;
} else {}
sendVal = 1;
}
} else {}
Als (bendOn == false) {}
sendVal = 2;
} else {}
sendVal = 3;
}
}
De waarde doorgeven
Serial.write(sendVal);
}