Hacka en RC bil med Arduino och Android (8 / 9 steg)
Steg 8: Utlöser DC motorer VIA H-bro
De främre och bakre motorerna är anslutna till H-brygga som visas i diagrammet ovan, och varje Arduino stift, som bör definieras som en utgång under installationen, kommer att ha en variabel tilldelas:
CONST int rearMtFw = 4; Bakre motorn - FW
CONST int rearMtBw = 7. Bakre motorn - BW
CONST int rearMtEne = 6; Bakre motorn - aktivera
CONST int frontMtLeft = 2; Främre Motor - vänster Stäng
CONST int frontMtRight = 3; Främre motor - sväng höger
CONST int frontMtEne = 5; Främre motorn aktivera
Till exempel, om vi vill flytta bilen framåt, funktionen "(moveForward)" bör sätta till stift 4 en hög och pin 7-låg, detta kommer att orsaka nuvarande strömma "medurs" som visas i det andra diagrammet ovan.
Stift 6 är "Aktivera", endast när det är i "Hög", kan bron nuvarande flödar till motorn. Eftersom denna pin är en PWM typ, hastigheten då motorn blir, bero på värdet av variabeln "MotorSpeed", på pin 6 (värde varierar från 0 till 255).
Funktionen bör också se till att främre motorn "rotera fritt" och för att den pin 5 som är stiftet "Aktivera" bör vara låg (status för stift 2 och 3 inte spelar någon roll, eftersom aktivera är låg). Röda LED som fungerar som "backväxel ljus" ska alltid vara avstängd när bilen rör sig framåt:
void moveForward () / / bakre motorn FW
{
analogWrite (rearMtEne, MotorSpeed);
digitalWrite (rearMtFw, hög);
digitalWrite (rearMtBw, låg);
digitalWrite (frontMtEne, låg);
digitalWrite (ledRed, låg);
fördröjning (5).
}
Analogt är det uppenbart att för att göra bilen "flytta tillbaka", motorn måste rotera i motsatt riktning. För detta måste stift 4 vara låg och hög pin 7. Observera att i detta fall av "backväxel light", det bör vara på. Funktionen kommer att i det här fallet vara:
void moveBackward () / / bakre motorn BW
{
analogWrite (rearMtEne, MotorSpeed);
digitalWrite (rearMtFw, låg);
digitalWrite (rearMtBw, hög);
digitalWrite (frontMtEne, låg);
digitalWrite (ledRed, hög);
fördröjning (5).
}
Samma resonemang kan användas för främre motorn, bara att i detta fall finns det ingen hastighetskontroll. Att sätta stift 2 (aktivera) gör hög motorn att "försöka att vända" kan ena eller det andra beroende på status för stift 2 och 3:
Annullera moveLeft () / / främre vänster motor
{
digitalWrite (frontMtEne, hög);
digitalWrite (frontMtLeft, hög);
digitalWrite (frontMtRight, låg);
digitalWrite (ledRed, låg);
fördröjning (10).
}
// ************************************//
Annullera moveRight () / / främre motorn rätt
{
digitalWrite (frontMtEne, hög);
digitalWrite (frontMtLeft, låg);
digitalWrite (frontMtRight, hög);
digitalWrite (ledRed, låg);
fördröjning (10).
}
För att stoppa bilen, bara sätta alla bron utgångar för bakre motorn i låg, som "fånga" motoraxeln (på främre motorn, bara aktivera PIN-koden bör vara låg):
void moveStop () / / stänga av bakre motorn
{
analogWrite (rearMtEne, låg);
digitalWrite (rearMtFw, låg);
digitalWrite (rearMtBw, låg);
digitalWrite (frontMtEne, låg);
digitalWrite (ledRed, låg);
fördröjning (5).
}
I länken nedan hittar du den fullständiga koden för Arduino: