Stap 8: Assembleren mobiele Circuitry
Sluit de 3,3 v pin van de arduino aan de VDD pin van de XBee, de RX-pin van de arduino de de VIN pin van de XBee en een grond pin van de arduino aan de grond pin van de XBEE. We vonden dat we nodig hadden voor het aandrijven van de twee motoren los van de arduino, want de arduino kon niet source genoeg stroom voor het aandrijven van de arduinos evenals alle andere onderdelen. Sluit de draden van de macht van de servo's aan elkaar en de draad van de macht van de AAA battery pack. Sluit de draden van de servo's aan elkaar en de draad van de grond van de AAA battery pack. Soldeer de draden van de LED's, de blacklights en de servo's alles bij elkaar, waardoor een einde gratis aansluiten op een grond pin. Verbind alle onderdelen op de vereiste pinnen--we gebruikt pins 12 en 11 voor blacklights, 10 en 9 voor servo's, en 8, 7 en 6 LEDs.
Ten slotte sluit de arduino zelf. We gebruikten twee accusets twee aas elk in serie aangesloten te geven ons een 6V ingevoerd; u kunt ook, zoals eerder besproken stroom arduinos off van 4.5V; We gebruikten wat we hadden beschikbaar. Sluit het netsnoer aan op de VIN pin en de grond leiden naar een GND pin. Overigens vonden we dat leidt naar de batterijpakken van de zaklampen solderen goed werkte--we een van deze gebruikt voor het aandrijven van de servo's.
Nu alles wat je hoeft te doen is program van de arduino. We gebruikten de onderstaande code op de mobiele arduino bepalen de verschillende onderdelen.
#include < Servo.h >
int serial_val = 0;
Boole motors_on = false;
Items voor de LED's knipperen
int x1 = 0;
int x2 = 0;
int x3 = 0;
Monster pinnen voor mobiele gemonteerde arduino
statische int ledPin1 = 6;
statische int ledPin2 = 7;
statische int ledPin3 = 8;
statische int motorPin1 = 9;
statische int motorPin2 = 10;
statische int flashlightPin1 = 11;
statische int flashlightPin2 = 12;
Servo informatie
Servo motor1;
Servo motor2;
int pos1 = 0; positie van motor1
int pos2 = 0; positie van motor2
VOID Setup {}
Code verzoekinstellingen eenmaal wordt uitgevoerd aan het begin
Serial.begin(9600); Hiermee start u de seriële monitor
Vertellen de arduino welke pinnen zal worden gebruikt voor uitvoer; geen pinnen zal worden gebruikt voor invoer op de mobiele
pinMode (motorPin1, OUTPUT);
pinMode (motorPin2, OUTPUT);
pinMode (flashlightPin1, OUTPUT);
pinMode (flashlightPin2, OUTPUT);
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
pinMode (ledPin3, OUTPUT);
Pin 13 is de ingebouwde LED, meestal gebruikt om aan te duiden dat het programma correct wrote
pinMode (13, OUTPUT);
digitalWrite (13, hoge);
}
void loop {}
Belangrijkste code, die wordt telkens opnieuw uitgevoerd
lezen van de waarde van (radio), 48 voor snelle oplossing van ASCII voor int aftrekken
if(Serial.available())
serial_val = Serial.read ()-48;
Controleer of de waarde die lezen is redelijk
Serial.println(serial_val);
if(serial_val > 0)
{
digitalWrite (13, hoge);
}
anders
{
digitalWrite (13, laag);
}
Increment tellers
x1 = x1 + 1;
x2 = x2 + 1;
x3 = x3 + 1;
Selectievakje waarden van items; willekeurige priemgetallen werden geselecteerd als cutoffs zodat de cycli zou niet line-up
Als (x1 > 20483) {}
x1 = 0;
} else {}
Als (x1 < 1000) {}
digitalWrite (ledPin1, hoge); Inschakelen voor 1 seconde elke 20.483 seconden
} else {}
digitalWrite (ledPin1, laag); Uitschakelen van de rest van de tijd
}
}
Als (x2 > 29303) {}
x2 = 0;
} else {}
Als (x2 < 1200) {}
digitalWrite (ledPin2, hoge); Inschakelen voor 1,2 seconden elke 29.303 seconden
} else {}
digitalWrite (ledPin2, laag); Uitschakelen van de rest van de tijd
}
}
Als (x3 > 18397) {}
x3 = 0;
} else {}
Als (x3 < 900) {}
digitalWrite (ledPin3, hoge); Inschakelen voor 0.9 seconden elke 18.397 seconden
} else {}
digitalWrite (ledPin3, laag); Uitschakelen van de rest van de tijd
}
}
Gewoon een beetje vertragen zodat het programma kan reageren
delay(1);
om te schakelen de blacklights in- / uitschakelen:
Als (serial_val == 1 || serial_val == 3)
{
digitalWrite (flashlightPin1, hoge);
digitalWrite (flashlightPin2, hoge);
}
anders
{
digitalWrite (flashlightPin1, laag);
digitalWrite (flashlightPin2, laag);
}
De motoren draaien in- of uitschakelen
Deze code eigenlijk verandert hen in- en uitschakelen voor kort spurts door koppelen en loskoppelen van de motoren
want anders liep ze met een te hoge snelheid en de stukken elkaar raken
Als (serial_val == 2 || serial_val == 3)
{
if(motors_on)
{
motors_on = false;
motor1.Detach();
Motor2.Detach();
}
anders
{
motors_on = true;
motor1.attach(motorPin1); Motor1 koppelen aan passende pin
Motor2.attach(motorPin2); Motor2 hechten aan juiste pin
motor1.write(0);
Motor2.write(0);
delay(300);
}
}
anders
{
if(motors_on)
{
motors_on = false;
motor1.Detach();
Motor2.Detach();
}
}
}