Göra en röst kontrollerat fordon! (1 / 3 steg)
Steg 1: Gör en plattform
Den plattform jag brukade bygga denna robot var Cherokey 4WD plattform. Det första steget var att få roboten att flytta – detta var den enkla biten.
Fina med detta kit är att den innehåller allt du behöver för att få det går-den har sin egen uppsättning av motorer och motor förare och en Romeo V2 mikrokontroller, så allt du behöver göra är att lägga extra moduler för att göra det gör vad du vill göra. För att sammanställa plattformen kommer att du behöva löda några kablar till varje motor och sedan tråd dem till skruvplintar på motorn förarens ombord (M1, M2, M3 och M4). Ansluta mikrokontroller i kit, måste du ansluta D4, D5, D6, D7 stift på Cherokey plattform till stift 4, 5, 6, 7 på mikrokontroller med bygel tråden (eller du kan löda om du föredrar för en permanent lösning). Du är nu redo att programmera mikrokontroller att få det går! Det finns en exempelkod på DFRobot Wiki-sidan, som kan hittas här.
Det finns fyra grundläggande funktionerna kontrolleras av viktiga insatsvaror i följetong monitor i exempelkoden. Tryck på "w" att gå framåt, tryck på "a" att svänga vänster, tryck på "d" till höger, tryck på "x" för att stoppa och tryck på "z" skriva ut "Hej" i följetong monitor. Detta är ett bra test för att se om plattformen fungerar som du behöver det, och alla motor riktningen är rätt. Om du har problem med en motor riktning, du kan prova att byta riktning stiften till antingen hög eller låg i koden, eller en lågteknologiska lösning kan du helt enkelt vända polariteten av ledningarna i motor bindande inlägg på Cherokey-plattformen.
Den koden jag använde är följande:
< p > int E1 = 5; M1 varvtalsreglering < br > int E2 = 6; M2 Varvtalsreglering
int M1 = 4; M1 Riktning kontroll
int M2 = 7. M1 Riktning kontroll
void stop(void) //Stop
{
digitalWrite(E1,0);
digitalWrite(M1,LOW);
digitalWrite(E2,0);
digitalWrite(M2,LOW);
}
void advance (char, char b) //Move fram
{
analogWrite (E1, en); PWM varvtalsreglering
digitalWrite(M1,HIGH);
analogWrite (E2, b);
digitalWrite(M2,HIGH);
}
void back_off (char, char b) //Move bakåt
{
analogWrite (E1, en);
digitalWrite(M1,LOW);
analogWrite (E2, b);
digitalWrite(M2,LOW);
}
void turn_L (char, char b) //Turn vänster
{
analogWrite (E1, en);
digitalWrite(M1,LOW);
analogWrite (E2, b);
digitalWrite(M2,HIGH);
}
void turn_R (char, char b) //Turn höger
{
analogWrite (E1, en);
digitalWrite(M1,HIGH);
analogWrite (E2, b);
digitalWrite(M2,LOW);
}
void setup(void)
{
int i;
för (jag = 4; jag < = 7; i ++)
pinMode (i, matas);
Serial.BEGIN(19200); Ange baudvärde
Serial.println ("Run Tangentbordskontroll");
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
void loop(void)
{
IF(Serial.available()) {
char val = Serial.read();
om (val! = -1)
{
Switch(val)
{
fallet "w": / / flytta fram
förskott (255,255); gå framåt i max hastighet
bryta;
fallet ": / / flytta bakåt
back_off (255,255); flytta tillbaka i max hastighet
bryta;
fallet "a": / / sväng vänster
turn_L (100.100);
bryta;
fall skulle ": / / sväng höger
turn_R (100.100);
bryta;
fallet "z":
Serial.println("Hello");
bryta;
fallet "x":
Stop();
bryta;
}
}
annat stop();
}
} < /p >