RobotPower MegaMoto kontroll sköld Beskrivning (2 / 3 steg)
Steg 2: Programmering av MegaMoto
Denna kod har en exempel motion rutin programmerad för en MegaMoto styrelse. Koden är skriven för att ha 3 styrelser staplade, men linjer kommenteras ut så att endast en styrelse är aktiverat. Du kan kommentera och avkommentera linjer för att styra upp till 3 sköldar.
Denna kod läser sensorn stift, men använder inte värden utöver skriver ut dem till seriell bildskärmen.
/ * Exempelkod för Robot Power MegaMoto. Denna styrelse kan staplas upp till tre
gånger för att kontrollera tre motorer. Koden ingår för varje motor i installationen rutiner,
kommentera bort raderna kod för att motorerna du behöver.
Viktigaste loop av detta program ramper hastigheten på den första styrelsen från noll till max (0-255)
1 sekund, håller över den på max hastighet i 2 sekunder, sedan ramper tillbaka (255-0) för 1 sekund.
Stiften byta, så riktning förändringarna och loopen upprepas.
Uppdaterad av progressiva automatiseringar, med hjälp av den ursprungliga exempel föreskrivs:
http://www.robotpower.com/downloads/
Hårdvara:
-1 till 3 RobotPower MegaMoto kontroll styrelser
-Arduino Uno
Ledningar:
-Anslut den +/-Aktiveringsorganets till A / B motor kanaler
-Anslut den +/-makt leverans till den +/-BAT anslutningar
Denna exempelkod är offentlig.
*/
int EnablePin1 = 8;
int EnablePin2 = 12;
int EnablePin3 = 13.
int tull.
Använda byglarna på styrelsen för att välja som A och B signalerar du vill
int PWMPinA1 = 11; Timer2
int PWMPinB1 = 3;
int PWMPinA2 = 9; Timer0
int PWMPinB2 = 10;
int PWMPinA3 = 6; Timer1
int PWMPinB3 = 5;
CONST byte CPin1 = A0; analog ingångskanal
CONST byte CPin2 = A1; analog ingångskanal
CONST byte CPin3 = A4; analog ingångskanal
int CRaw1; RAW A/D-värde
int CRaw2;
int CRaw3;
void setup() {
Serial.BEGIN(9600);
pinMode (EnablePin1, OUTPUT);
pinMode (EnablePin2, OUTPUT);
pinMode (EnablePin3, OUTPUT); //Enable styrelser
pinMode (PWMPinA1, OUTPUT);
pinMode (PWMPinB1, OUTPUT);
pinMode (PWMPinA2, OUTPUT);
pinMode (PWMPinB2, OUTPUT);
pinMode (PWMPinA3, OUTPUT);
pinMode (PWMPinB3, OUTPUT); //Set motor utgångar
} //end setup
void loop() {
digitalWrite (EnablePin1, hög); ge styrelsen
analogWrite (PWMPinB1, 0); Ställ in pinB till 0, hastighet skrivs till pinA motorn kommer att utöka
för (tull = 0; plikt < = 255, tull + = 5) / / ramp upp hastighet
{
analogWrite (PWMPinA1, tull);
Delay(5);
}
analogWrite (PWMPinA1, 255); //end på max hastighet
CRaw1 = analogRead(CPin1);
Serial.println("feedback");
Serial.Print(CRaw1);
fördröjning (2000), //hold hastighet
för (tull = 255, tull > = 0; duty-= 5) / / ramp ned fart
{
analogWrite (PWMPinA1, tull);
Delay(20);
}
analogWrite (PWMPinA1, 0); inställd på 0 hastighet
Delay(500);
digitalWrite (EnablePin1, låg); / / växla möjligt för att återställa makt marker om vi har haft en överström eller overtemp fel
Delay(500); Byt stiften för att göra den motoriska ändra riktningen
om (PWMPinA1 == 11)
{
PWMPinA1 = 3;
PWMPinB1 = 11;
}
annat
{
PWMPinA1 = 11;
PWMPinB1 = 3;
}
/ * om (PWMPinA2 == 9)
{
PWMPinA2 = 10;
PWMPinB2 = 9;
}
annat
{
PWMPinA2 = 9;
PWMPinB2 = 10;
}*/
/ * if(PWMPinA3 == 6)
{
PWMPinA3 = 5;
PWMPinB3 = 6;
}
annat
{
PWMPinA3 = 6;
PWMPinB3 = 5;
}*/
} //end huvudloop