Interaktiva barns mobil (6 / 9 steg)
Steg 6: Montera leksak kretsar
Nu finns det lite av en ättikslag här. Arduinoen sänder vanligtvis värdet '0'. Dock skäl inte har vi ännu fastställt sända arduino ibland allt som ett ASCII-tecken som är 48 ovan vad du önskat. Vi fick runt detta problem genom att bara ha den mottagande arduino testen för båda möjliga värden, men vi ska se till att uppdatera detta om vi lista ut varför vi får roliga värden ibland. Det hjälper till att kontrollera att du använder kommandot Serial.write(), inte Serial.print() eller Serial.println() kommandona när du hoppas att faktiskt överföra data över radioapparater. Även på denna punkt, när du börjar plugga saker i och sätta koden på Arduinos, ska du undvika ladda upp koden till en Arduino som har något ansluten till det är TX eller RX stift (stift 0 & 1).
Vi använde tre 1,5 v batterier i serie att driva arduino (tre AAs). Arduinoen utför vissa interna förordningen, så att du kan driva arduino bort av 4.5V eller 6V.
Löda marken leder två flex sensorerna och arduino tillsammans, lämna en bly fri att koppla in i styrelsen. Gör samma sak med tre makt leder. Plug marken leder in i marken stiften på arduino och makt leder till 5V power pin. Anslut strömkabeln XBee in de 3.3V pin och marken bly av XBee in i another marken pin, sedan koppla in RX/DIN ledningen i den TX pin av arduino. (XBee tar emot från arduino, därav tillförsel av XBee kopplad till produktionen av arduino.) Slutligen Anslut jordledning smeten Pack i sista marken stiftet och strömkabeln för batteripaketet i Vin PIN-koden.
Leksak kretsarna monteras nu! Nu allt du behöver göra är att programmera arduino. Vi använde den under kod för att styra vår leksak.
Värden skall läsas
int accelVal = 0;
int bendVal1 = 0;
int bendVal2 = 0;
int accelRef;
int bendRef1;
int bendRef2;
booleska accelOn = false;
booleska bendOn = false;
int sendVal = 0;
void setup() {
Denna kod körs en gång, i början
Serial.BEGIN(9600); Initiera seriell monitor
Få referensvärden: dessa tillåter oss att kalibrera de värden vi skickar för varje variation i komponenten beteende
accelRef = analogRead(A3);
bendRef1 = analogRead(A4);
bendRef2 = analogRead(A5);
}
void loop() {
Denna kod körs kontinuerligt
Delay(1);
Hämta värden
accelVal = analogRead(A3);
bendVal1 = analogRead(A4);
bendVal2 = analogRead(A5);
Kontrollera om accelerometer är på
om ((accelVal-accelRef) > (accelRef / 3)) {/ / Detta är en godtycklig referens som vi hittade fungerat bra
accelOn = sant;
} annat {
accelOn = false;
}
Kontrollera att böja sensorer är på
om ((bendVal1 < (3 * bendRef1/4)) || (bendVal2 < (3 * bendRef2/4))) {/ / Detta är en godtycklig referens
bendOn = sant;
} annat {
bendOn = false;
}
Bestämma rätt värde överföra baserat på sensorerna
om (accelOn == false) {
om (bendOn == false) {
sendVal = 0;
} annat {
sendVal = 1;
}
} annat {
om (bendOn == false) {
sendVal = 2;
} annat {
sendVal = 3;
}
}
Överföra värdet
Serial.write(sendVal);
}