Paso 6: Proyecto 1: control motor básico
La mayoría de la parte más difícil es conseguir un ejemplo simple de trabajo, por lo que las metas programáticas para este paso son básicas:
FASE 1: Prueba de Motor - interactivo
- Pulse un botón y pone en marcha (sin parar)
- Presione a la otra y va en sentido contrario (sin parar)
Necesitarás dos botones, conectados a los pines de arduino y GND.
Arduino tiene dos funciones, "setup" y "loop".
Setup() se ejecuta sólo una vez. Es donde defines tus pins.
void setup() {}
Pon tu código de instalación, para ejecutar una vez:pinMode (XCAM_HOME, entrada);
digitalWrite (XCAM_HOME, alto); pulluppinMode (MOTOR_FORWARD, salida);
pinMode (MOTOR_REVERSE, salida);Los botones son de lógica negativa
pinMode (XBUTTON_FWD, entrada);
digitalWrite (XBUTTON_FWD, alto); pullup
pinMode (XBUTTON_REV, entrada);
digitalWrite (XBUTTON_REV, alto); pullup} / / setup
Siguiente, loop() - esto funciona muy a menudo, por lo que quiere hacer cualquier código aquí funciona tan corto como sea posible:
motorForwardP sin signo = 1;
Pon tu código principal, para ejecutar varias veces:
void loop() {}
updateMotorFromButton();
} / / lazo
Por último, el código que hace todo el trabajo: Lee de los botones y establece los pernos motor adecuadamente. Hemos creado un indicador global para marcar en qué dirección vamos.
/ * leer botón y establecer en consecuencia las variables * /
void updateMotorFromButton()
{
char forwardButton = (digitalRead(XBUTTON_FWD) == LOW);
char reverseButton = (digitalRead(XBUTTON_REV) == LOW);no hacer nada si no se presionan tanto
Si (forwardButton & & reverseButton) volver;Si (forwardButton) {}
motorForwardP = 1;
moveForward();
}Si (reverseButton) {}
motorForwardP = 0;
moveReverse();
}} / / updateMotorFromButton
Aquí es los métodos de utilidad que gire el motor encendido o apagado remite o revertir. Aviso que fijamos ambos bajo inicialmente para prevenir cualquier quemaduras!
ajustar pernos de motor para seguir adelante
void moveForward()
{
digitalWrite (MOTOR_REVERSE, bajo);
digitalWrite (MOTOR_FORWARD, alto);
} / / moveForwardajustar pernos de motor para mover inversa
void moveReverse()
{
digitalWrite (MOTOR_FORWARD, bajo);
digitalWrite (MOTOR_REVERSE, alto);
} / / moveReverse
Ahora, probarlo!