Hola, tengo un problema con el que llevo toda la tarde, al final poniendo un boton he conseguido que funcione pero no es la mejor opcion, el caso esque manejando un motor a traves de unos pulsos, a veces el tiempo es 0 y cuando eso ocurre quiero que haga lo que hay en el IF de cuando se pulsa el boton, no se como hacerlo de manera automatica porque si pongo un if cuando vuelve a repetir el ciclo si sigue siendo 0 lo vuelve a hacer y solo quiero que lo haga una vez. A ver si alguien me puede iluminar.
Un saludo y gracias.
puedes crear una variable tipo int que valga cero.
cuando ejecutes el codigo if compruebas tu condicion y que la variable int siga valiendo cero,
cuando entres en el IF te aseguras de que al final aumenta el valor de la varialbe int en 1 y asi ya no volvera a entrar mas porque en el IF no se cumplira que variable == 0
he puesto un contado, mas o menos como dices tu y asi parece q va bastante bien, hay alguna manera de optimizar este codigo al máximo para que en hacer los calculos tarde el menor número de ciclos posible?
Un saludo.
digitalWrite(12, HIGH);
por
PORTB &= ~(_BV(PORTB4));
digitalWrite(stepperPin, LOW);
por
PORTB |= _BV(PORTB4);
Lo que no se es como cambiar digitalWrite(13,dir); donde dir es una variable 0 o 1.
Sustituyendo digitalwrite se pasa de usr 56 ciclos a 2 q no esta mal, el resto si q ya no se que mas hacer.
Cuando programas la placa, piensas en que PORTB5 es el pin 13, pero en las mega es el pin 11, por lo que funcionaría pero tienes que estar convirtiendo pines entre placas.
En mi caso de momento no tendria ese problema, pero hay algun comando para identificar q placa estas usando y segun eso poner una configuracion u otra? solo por curiosidad.