-- écrit le 13/09/2024 par Lukian Leizour -- ce programme doit tourner sur un ESP32 sous LUARTOS -- fonction permettant d'allumer une led sur l'ESP32 sur une patte donnée function pinon (pin) -- pin : la patte sur laquelle la led est branchée pio.pin.setdir(pio.OUTPUT, pin) -- permet d'indiquer que la patte sert de sortie pio.pin.sethigh(pin) -- permet de mettre la tension au max end -- fonction permettant d'eteindre une led sur l'ESP32 sur une patte donnée function pinoff (pin) -- pin : la patte sur laquelle la led est branchée pio.pin.setdir(pio.OUTPUT, pin) -- permet d'indiquer que la patte GPIO2 sert de sortie pio.pin.setlow(pin) -- permet de mettre la tension au minimum end -- fonction permettant de faire clignoter la led de l'ESP32 function blink (pin, n, delay) -- pin : la patte de sortie; n : int, nombre d'itérations; delay : le temps en ms que la led reste allumé et étteinte for i=1,n do pinon(pin) -- appel de la fonction ledon tmr.delayms(delay) -- le programme attend en fonction du délai donné pinoff(pin) -- appel de la fonctio ledoff tmr.delayms(delay) -- le programme attend en fonction du délai donné end end function blink_pwm(pin, n, delay) print(1 / (delay * 2 / 1000), 0.5) device = pwm.attach(pin, math.floor(1 / (delay * 2 / 1000)), 0.5) device:start() tmr.delayms(n * delay) device:stop() end function test(n, delay) blink_pwm(pio.GPIO18, n, delay) end -- fonction permettant d'allumer un buzzer pendant un temps donné function buzz(pin, delay) -- pin : la patte sur laquelle le buzzer est connecté; delay : le temps pendant lequel le buzzer reste allumé pinon(pin) -- on allume le buzzer tmr.delayms(delay) -- on attend pendand le temps désiré pinoff(pin) -- on étteint le buzzer une fois la durée atteinte end -- fonction permettant de faire "clignoter" un buzzer sur un pin donné pour une durée donnée et un nombre d'itérations donné function blink_buzz(pin, n, delay) -- pin : la patte du buzzer; n : le nombre d'itérations; delay : le délai en ms for i=1,n do buzz(pin, delay) -- on allume le buzzer pendant la durée désirée tmr.delayms(delay) -- on attend avant de passer à la suite end end -- fonction permettant de faire clignoter la led bleu du circuit de l'ESP32 function blink_2(n) -- pin : la patte de sortie; n : int, nombre d'itérations blink(pio.GPIO2, n, 200) -- appel de la fonciton blink en lui donnant la bonne patte en paramètre ainsi que le temps d'éclairage end -- fonction permettant d'afficher successivement les clouleurs Rouge, Vert et Bleu en connectant la led RGB sur les pins D18, D19 et D21 function triColors(n) -- n : nombre de fois qu'on réalise le paterne for i=1,n do blink(pio.GPIO21, 1, 200) -- appel de la fonciton blink pour faire clignoter une fois la led en rouge pendant 200ms blink(pio.GPIO19, 1, 200) -- appel de la fonciton blink pour faire clignoter une fois la led en vert pendant 200ms blink(pio.GPIO18, 1, 200) -- appel de la fonciton blink pour faire clignoter une fois la led en bleu pendant 200ms end end -- fonction qui envoie un signal SOS lumineux sur la led bleu du circuit de l'ESP32 function sos_led(n) -- n : nombre de fois qu'on affiche le signal SOS for i=1,n do blink(pio.GPIO2, 3, 400) -- on clignotte 3 fois longuement blink(pio.GPIO2, 3, 200) -- on clignotte 3 fois courtement blink(pio.GPIO2, 3, 400) -- on clignotte 3 fois longuement tmr.delayms(400) -- on fait une longue pause de 400ms end end -- fonction qui envoie un signal SOS sonore sur un buzzer branché sur la patte D18 de l'ESP32 function sos_buzz(n) -- n : nombre de fois qu'on fait le signal SOS for i=1,n do blink_buzz(pio.GPIO18, 3, 400) -- on clignotte 3 fois longuement blink_buzz(pio.GPIO18, 3, 200) -- on clignotte 3 fois courtement blink_buzz(pio.GPIO18, 3, 400) -- on clignotte 3 fois longuement tmr.delayms(400) -- on fait une longue pause de 400ms end end