Étape 6: Projet 1: base contrôle moteur
La plupart de la partie la plus difficile obtient un exemple simple de travail, ainsi que les objectifs programmatiques pour cette étape sont basiques :
PHASE 1: Essai moteur - interactive
- Appuyez sur un bouton et il se met en marche (sans arrêt)
- Appuyez sur l’autre et il va dans le sens inverse (sans arrêt)
Vous aurez besoin de deux boutons, connectés aux broches de l’arduino et GND.
Arduino a besoin de deux fonctions, « configuration » et « boucle ».
Setup() s’exécute qu’une seule fois. C’est où vous décrivez vos NIP.
void setup() {}
Mettez votre code de programme d’installation ici, pour exécuter une fois :pinMode (entrée, XCAM_HOME) ;
digitalWrite (XCAM_HOME, élevé) ; pulluppinMode (MOTOR_FORWARD, sortie) ;
pinMode (MOTOR_REVERSE, sortie) ;Les boutons sont logique négative
pinMode (entrée, XBUTTON_FWD) ;
digitalWrite (XBUTTON_FWD, élevé) ; pullup
pinMode (entrée, XBUTTON_REV) ;
digitalWrite (XBUTTON_REV, élevé) ; pullup} / / installation
Ensuite, loop() - cela va très souvent, si vous voulez faire n’importe quel code exécuter ici aussi courts que possible :
motorForwardP non signé = 1 ;
Mettez votre code principal ici, pour exécuter à plusieurs reprises :
void loop() {}
updateMotorFromButton() ;
} / / loop
Enfin, le code qui effectue tout le travail : il lit depuis les boutons et définit les axes moteurs correctement. Nous avons mis un indicateur global pour marquer la direction dans laquelle nous allons.
/ * lecture bouton et définissez des variables en conséquence * /
Sub updateMotorFromButton()
{
char forwardButton = (digitalRead(XBUTTON_FWD) == faible) ;
char reverseButton = (digitalRead(XBUTTON_REV) == faible) ;ne rien faire si les deux sont pressées
Si (forwardButton & & reverseButton) return ;Si {(bouton suivant)
motorForwardP = 1 ;
moveForward() ;
}Si {(reverseButton)
motorForwardP = 0 ;
moveReverse() ;
}} / / updateMotorFromButton
Voici les méthodes utilitaires qui tourner le moteur allumé ou éteint vers l’avant ou l’inverse. Avis que nous avons mis les deux faible au départ pour empêcher toute Burnout !
Réglez de façon strictement moteur pour avancer
Sub moveForward()
{
digitalWrite (MOTOR_REVERSE, basse) ;
digitalWrite (MOTOR_FORWARD, élevé) ;
} / / moveForwardbroches moteurs pour déplacer la valeur inverse
Sub moveReverse()
{
digitalWrite (MOTOR_FORWARD, basse) ;
digitalWrite (MOTOR_REVERSE, élevé) ;
} / / moveReverse
Maintenant, testez-le !