Bellbot Arduino. Multitasking

Bellbot Arduino. Multitasking

Ens ha agradat aixó de poder definir diferents comportaments dels servos amb una única funció depenent de paràmetres variables. Ara volem que els llums del robot s’encenguin quan vagi marxa enrera i s’apaguin quan vagi cap endavant. La nostra solució no sabem si és molt correcta a nivell de codi, però … hem solucionat el problema!

Multitasking. Control de servos i LEDs

Hem afegit l’estat dels LEDs com un nou paràmetre variable a la funció que defineix la navegació:

Com que el senyal digital LOW correspón a 0 i HIGH a 1, al void loop hem assignat aquests valors a la variable estat dels LEDs: 0 en la navegació endavant (LEDs apagats) i 1 en la navegació endarrera (LEDs encesos):

Aixó ens ha permés solucionar el problema del multiasking: control diferenciat dels servos i dels LEDs amb una única funció, peró ens ha creat un altre problema:
Tot i que el loop és un bucle infinit, la seqüència de la navegació només funciona un cop, perquè la funció aturada anul·la els senyals servo al final de l’execució, però els LEDs continuen encenent-se i apagant-se. Volem que la funció aturada aturi totes les execucions.

Per solucionar el problema hem utilitzat un bucle while, que executa les accions només mentre es cumpleixi una condició. La que hem definit es que el valor d’una variable que hem anomenat comptador sigui < 1. El valor inicial de comptador és 0, i al final de l’execució fem que l’incrementi en 1. Així, a la segona volta del loop, com que comptador ja no és < 1, les accions no s’executen.

Veure el programa complert >>