Stap 6: PROJECT 1: fundamentele motorische controle
Allermeest naar de harde deel is een eenvoudig voorbeeld werkt, krijgen zodat de programmatische doelstellingen voor deze stap zijn basic:
FASE 1: Motor test - interactieve
- Druk op een knop en het gaat vooruit (zonder te stoppen)
- Druk op de andere en het gaat in omgekeerde richting (zonder te stoppen)
U moet twee knoppen, verbonden met pinnen op de arduino en GND.
Arduino moet twee functies, "setup" en "loop".
Setup slechts éénmaal uitgevoerd. Het is waar u uw pins definiëren.
VOID Setup {}
Zet uw setup-code hier, om het eenmalig uit te voeren:pinMode (XCAM_HOME, INPUT);
digitalWrite (XCAM_HOME, hoge); pulluppinMode (MOTOR_FORWARD, uitvoer);
pinMode (MOTOR_REVERSE, uitvoer);Knoppen zijn negatieve logica
pinMode (XBUTTON_FWD, INPUT);
digitalWrite (XBUTTON_FWD, hoge); pullup
pinMode (XBUTTON_REV, INPUT);
digitalWrite (XBUTTON_REV, hoge); pullup} / / setup
Volgende, loop - draait dit heel vaak, dus u wilt code uitgevoerd hier zo kort mogelijk maken:
niet-ondertekende motorForwardP = 1;
Zet uw belangrijkste code hier, om het herhaaldelijk uitvoeren:
void loop {}
updateMotorFromButton();
} / / loop
Tot slot, de code die al het werk doet: het leest van de knoppen en de motor pinnen op de juiste manier ingesteld. We stellen een globale vlag ter gelegenheid van welke richting we gaan.
/ * Lees knop en stel de variabelen dienovereenkomstig * /
VOID updateMotorFromButton()
{
char forwardButton = (digitalRead(XBUTTON_FWD) == laag);
char reverseButton = (digitalRead(XBUTTON_REV) == laag);Doe niets als beide worden ingedrukt
Als (forwardButton & & reverseButton) terugkeer;Als (forwardButton) {}
motorForwardP = 1;
moveForward();
}Als (reverseButton) {}
motorForwardP = 0;
moveReverse();
}} / / updateMotorFromButton
Hier is de hulpprogrammamethoden die uitschakelen de motor vooruit of omgekeerde. U ziet dat we beide LOW in eerste instantie om te voorkomen dat eventuele burnouts ingesteld!
Stel motor pinnen om verder te gaan
VOID moveForward()
{
digitalWrite (MOTOR_REVERSE, laag);
digitalWrite (MOTOR_FORWARD, hoge);
} / / moveForwardmotor pinnen te verplaatsen omgekeerde instellen
VOID moveReverse()
{
digitalWrite (MOTOR_FORWARD, laag);
digitalWrite (MOTOR_REVERSE, hoge);
} / / moveReverse
Nu, test het!