Interaktiva barns mobil (8 / 9 steg)
Steg 8: Montera mobila kretsar
Ansluta den 3.3V pin av arduino till XBee, RX stift av arduino VDD stift den VIN stiftet av XBee och en marken pin av arduino till marken stift XBEE. Vi hittade att vi behövs för att driva de två motorerna separat från arduino eftersom arduino inte kunde source tillräckligt aktuellt att driva arduinos samt alla andra komponenter. Anslut ström sladdar på servon till varandra och till power binda av AAA ackumulatorn packe. Ansluta marken trådar av servon till varandra och till en jordledning AAA batteri Pack. Löda marken trådar av lysdioder, blacklights och servon tillsammans, lämnar ena änden gratis att plugga in en marken pin. Ansluta alla komponenter till nödvändiga stift--vi använt stift 12 och 11 för blacklights, 10 och 9 för servon, och 8, 7 och 6 för lysdioder.
Slutligen, power arduino själv. Vi använde två batterier av två AAs var ansluten i serie för att ge oss en 6V ingång; Du kan också, som diskuterats tidigare, driva arduinos bort av 4.5V; Vi använde vad vi hade tillgängliga. Anslut strömkabeln till VIN stift och marken bly till en GND stift. Förresten, Vi hittade att lödning leder till ackumulatorn packe från ficklampor fungerat bra--vi använde en av dessa för att driva servon.
Nu allt du behöver göra är att programmera arduino. Vi använde den under kod på mobila arduino att styra de olika komponenterna.
#include < Servo.h >
int serial_val = 0;
booleska motors_on = false;
Räknare för lysdioderna blinkar
int x1 = 0;
int x2 = 0;
int x3 = 0;
Provet stift för mobil-monterad arduino
statisk int ledPin1 = 6;
statisk int ledPin2 = 7.
statisk int ledPin3 = 8;
statisk int motorPin1 = 9;
statisk int motorPin2 = 10;
statisk int flashlightPin1 = 11;
statisk int flashlightPin2 = 12;
Servo information
Servo motor1;
Servo motor2;
int pos1 = 0; Placera av motor1
int pos2 = 0; Placera av motor2
void setup() {
Installation kod körs en gång i början
Serial.BEGIN(9600); Startar den seriella monitorn
Berätta för arduino vilket stift kommer att användas för produktion; inga stift kommer att användas för input i mobilen
pinMode (motorPin1, produktionen);
pinMode (motorPin2, produktionen);
pinMode (flashlightPin1, produktionen);
pinMode (flashlightPin2, produktionen);
pinMode (ledPin1, produktionen);
pinMode (ledPin2, produktionen);
pinMode (ledPin3, produktionen);
Stift 13 är inbyggt LED, oftast används för att beteckna att programmet skrev korrekt
pinMode (13, OUTPUT);
digitalWrite 13, hög.
}
void loop() {
Huvudkoden, som löper flera gånger
läsa värdet från (radio), subtrahera 48 för quick fix från ASCII till int
IF(Serial.available())
serial_val = Serial.read ()-48;
Kontrollera att värdet läsa är rimligt
Serial.println(serial_val);
IF(serial_val > 0)
{
digitalWrite 13, hög.
}
annat
{
digitalWrite 13, låg.
}
Increment räknare
x1 = x1 + 1.
x2 = x2 + 1.
x3 = x3 + 1.
Kontrollera värdena i räknare; Random primtal valdes som cutoffs så cyklar inte skulle rada upp
om (x1 > 20483) {
x1 = 0;
} annat {
om (x1 < 1000) {
digitalWrite (ledPin1, hög); Slå på 1 sekund var 20.483 sekunder
} annat {
digitalWrite (ledPin1, låg); Stänga av resten av tiden
}
}
om (x2 > 29303) {
x2 = 0;
} annat {
om (x2 < 1200) {
digitalWrite (ledPin2, hög); Aktivera för 1,2 sekunder var 29.303 sekunder
} annat {
digitalWrite (ledPin2, låg); Stänga av resten av tiden
}
}
om (x3 > 18397) {
x3 = 0;
} annat {
om (x3 < 900) {
digitalWrite (ledPin3, hög); Aktivera för 0.9 sekunder varje 18.397 sekunder
} annat {
digitalWrite (ledPin3, låg); Stänga av resten av tiden
}
}
Fördröja bara lite så att programmet kan svara
Delay(1);
att vända blacklights / på:
om (serial_val == 1 || serial_val == 3)
{
digitalWrite (flashlightPin1, hög);
digitalWrite (flashlightPin2, hög);
}
annat
{
digitalWrite (flashlightPin1, låg);
digitalWrite (flashlightPin2, låg);
}
Aktivera eller inaktivera motorerna
Denna kod faktiskt vänder sig dem på och av för korta skurar av fästa och ta loss motorerna
eftersom annars de körde med för hög hastighet och bitar träffar varandra
om (serial_val == 2 || serial_val == 3)
{
IF(motors_on)
{
motors_on = false;
motor1.detach();
motor2.detach();
}
annat
{
motors_on = sant;
motor1.attach(motorPin1); Bifoga motor1 till lämpligt stift
motor2.attach(motorPin2); Koppla motor2 till lämpliga pin
motor1.write(0);
motor2.write(0);
Delay(300);
}
}
annat
{
IF(motors_on)
{
motors_on = false;
motor1.detach();
motor2.detach();
}
}
}