Clusterbot! (9 / 11 steg)

Steg 9: Tråd upp Arduino och koden för din första provkörning

Ansluter jumper kablarna och från din Arduino att mini bakbord på din protoshield. Använd bilden från föregående steg för att åstadkomma detta.

Som för I/O pins på Arduino, koppla dem till motor föraren enligt följande:

PWMA ansluter till stift 3 på Arduino.
AIN1 ansluter till stift 0 på Arduino.
AIN2 ansluter till stift 1 på Arduino.
PWMB ansluter till stift 5 på Arduino.
BIN1 ansluter till stift 2 på Arduino.
BIN2 ansluter till stift 4 på Arduino.
STBY ansluter till stift 6 på Arduino.

I koden nedan skrev jag upp några funktioner för att göra det lättare att styra roboten. Avsnittet huvudkoden ser väldigt lik det gamla logotypen programmeringsspråket.

Jag var tvungen att spendera lite tid att få ClusterBot att spåra rakt. Jag har inga fysiska sätt att göra en front-end justering på roboten, så jag fixade funktionerna goForward() och goBackward() genom att ändra PWM tills bot spåras relativt rakt. Det är inte viktigt att det är perfekt med denna robot, men när jag sprang först ClusterBot, han skulle flytta i bågar i stället för raderna. Jag är inte säker på om roboten inte spårar direkt eftersom det är fysiskt krokiga, vikten är ojämnt fördelad, PWM signaler är olika från två stiften på Arduino, eller om det är helt enkelt en fråga om olika egenskaper av de två motorerna som billiga-o. Förmodligen en kombination av allt ovan.

Jag tog också några grova mätningar av den kantiga tillryggalagda när Rotera vänster och höger så jag kunde lätt göra roboten slår ungefär 90 grader, 180 grader, etc. Problemet med detta är att eftersom batterierna ansvarsfrihet, kantiga resa minskar också. Det är bara en grov uppskattning. Det kan inte vara på denna bot, men jag kommer att behöva ha kodare på mina hjul någon gång, eller bara använda stegmotorer. Kodade hjul kommer förmodligen vara svaret ändå.

Koden:

#define PWMA 3
#define AIN1 0
#define AIN2 1
#define PWMB 5
#define BIN1 2
#define BIN2 4
#define STBY 6

/ * Robot gör 27 rotationer i en minut och
10 fot i 25 sekunder. Aktuella rak spårning är 233 vänster, 255 höger. */

void setup() {
sätta din installation kod här, om du vill köra en gång:
pinMode(PWMA,OUTPUT);
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(PWMB,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
pinMode(STBY,OUTPUT);

}

void loop() {

startUp();
goForward();
Delay(5500);
turnAround();
goForward();
Delay(5500);
turnAround();
goBackward();
Delay(5500);
rotateLeft();
Delay(560);
rotateRight();
Delay(560);
goForward();
Delay(3000);
applyBrakes();
Delay(2000);
}

void goForward)
{
digitalWrite (AIN1, hög);
digitalWrite (AIN2, låg);
analogWrite(PWMA,234);
digitalWrite (BIN1, hög);
digitalWrite (BIN2, låg);
analogWrite(PWMB,255);
}

void goBackward)
{
digitalWrite (AIN1, låg);
digitalWrite (AIN2, hög);
analogWrite(PWMA,233);
digitalWrite (BIN1, låg);
digitalWrite (BIN2, hög);
analogWrite(PWMB,255);
}

void rotateRight)
{
digitalWrite (AIN1, hög);
digitalWrite (AIN2, låg);
analogWrite(PWMA,255);
digitalWrite (BIN1, låg);
digitalWrite (BIN2, hög);
analogWrite(PWMB,255);
}

void rotateLeft)
{
digitalWrite (AIN1, låg);
digitalWrite (AIN2, hög);
analogWrite(PWMA,255);
digitalWrite (BIN1, hög);
digitalWrite (BIN2, låg);
analogWrite(PWMB,255);
}

void veerLeft)
{
digitalWrite (AIN1, hög);
digitalWrite (AIN2, låg);
analogWrite(PWMA,190);
digitalWrite (BIN1, hög);
digitalWrite (BIN2, låg);
analogWrite(PWMB,255);
}

void veerRight)
{
digitalWrite (AIN1, hög);
digitalWrite (AIN2, låg);
analogWrite(PWMA,255);
digitalWrite (BIN1, hög);
digitalWrite (BIN2, låg);
analogWrite(PWMB,190);
}

void applyBrakes)
{
digitalWrite (AIN1, hög);
digitalWrite (AIN2, hög);
analogWrite(PWMA,255);
digitalWrite (BIN1, hög);
digitalWrite (BIN2, hög);
analogWrite(PWMB,255);
}

Ogiltig start)
{
digitalWrite(STBY,HIGH);
}

void turnAround()
{
rotateLeft();
Delay(1370);
}

void avstängning)
{
digitalWrite(STBY,LOW);
}

Se Steg
Relaterade Ämnen