135 lines
4.8 KiB
Lua
135 lines
4.8 KiB
Lua
-- écrit le 23/10/2024 par Lukian Leizour
|
|
-- ce programme doit tourner sur un ESP32 sous LUARTOS
|
|
|
|
-- fonction permettant d'allumer la led bleue du du circuit de l'ESP32
|
|
function ledon()
|
|
pinon(pio.GPIO2)
|
|
end
|
|
|
|
-- fonction permettant d'étteindre la led bleue du du circuit de l'ESP32
|
|
function ledoff()
|
|
pinoff(pio.GPIO2)
|
|
end
|
|
|
|
-- fonction permettant de faire clignoter la led bleue du circuit de l'ESP32
|
|
function blink(n) -- pin : la patte de sortie; n : int, nombre d'itérations
|
|
pinblink(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 de faire clignoter la led sur la pin 18 4 fois brièvement
|
|
function blink_pwm1()
|
|
device = pwm.attach(pio.GPIO18, 1, 0.2) -- 1Hz et 20% de signal "haut"
|
|
device:start() -- départ
|
|
tmr.delayms(4000) -- on attend que la led ait finit de clignoter
|
|
device:stop() -- on arrête le signal
|
|
device:detach() -- on se détache de la pin
|
|
end
|
|
|
|
-- fonction permettant de faire clignoter la led sur la pin 18 4 fois longuement
|
|
function blink_pwm2()
|
|
device = pwm.attach(pio.GPIO18, 1, 0.8) -- 1Hz et 80% de signal "haut"
|
|
device:start() -- départ
|
|
tmr.delayms(4000) -- on attend que la led ait finit de clignoter
|
|
device:stop() -- on arrête le signal
|
|
device:detach() -- on se détache de la pin
|
|
end
|
|
|
|
-- fonction permettant d'allumer et étteindre progressivement une led sur la pin 18
|
|
function smooth()
|
|
device = pwm.attach(pio.GPIO18, 200, 0)
|
|
device:start()
|
|
i = 0
|
|
while i <= 1 do
|
|
device:setduty(i)
|
|
tmr.delayms(200)
|
|
i = i + 0.05
|
|
end
|
|
i = 1.
|
|
while i >= 0 do
|
|
device:setduty(i)
|
|
tmr.delayms(200)
|
|
i = i - 0.05
|
|
end
|
|
device:stop()
|
|
end
|
|
|
|
function rgb(r, g, b)
|
|
red = pwm.attach(pio.GPIO21, 2000, r / 256); red:start()
|
|
green = pwm.attach(pio.GPIO19, 2000, g / 256); green:start()
|
|
blue = pwm.attach(pio.GPIO18, 2000, b / 256); blue:start()
|
|
|
|
tmr.delayms(5000)
|
|
|
|
red:stop(); red:detach()
|
|
green:stop(); green:detach()
|
|
blue:stop(); blue:detach()
|
|
end
|
|
|
|
function allrgb()
|
|
red = pwm.attach(pio.GPIO21, 2000, 1.); red:start()
|
|
green = pwm.attach(pio.GPIO19, 2000, 0); green:start()
|
|
blue = pwm.attach(pio.GPIO18, 2000, 0); blue:start()
|
|
|
|
for i=0,255,5 do green:setduty(i / 256); tmr.delayms(50) end
|
|
for i=255,0,-5 do red:setduty(i / 256); tmr.delayms(50) end
|
|
for i=0,255,5 do blue:setduty(i / 256); tmr.delayms(50) end
|
|
for i=255,0,-5 do green:setduty(i / 256); tmr.delayms(50) end
|
|
for i=0,255,5 do red:setduty(i / 256); tmr.delayms(50) end
|
|
|
|
red:stop(); red:detach()
|
|
green:stop(); green:detach()
|
|
blue:stop(); blue:detach()
|
|
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
|
|
pinblink(pio.GPIO21, 1, 200) -- appel de la fonciton blink pour faire clignoter une fois la led en rouge pendant 200ms
|
|
pinblink(pio.GPIO19, 1, 200) -- appel de la fonciton blink pour faire clignoter une fois la led en vert pendant 200ms
|
|
pinblink(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
|
|
pinblink(pio.GPIO2, 3, 400) -- on clignotte 3 fois longuement
|
|
pinblink(pio.GPIO2, 3, 200) -- on clignotte 3 fois courtement
|
|
pinblink(pio.GPIO2, 3, 400) -- on clignotte 3 fois longuement
|
|
tmr.delayms(400) -- on fait une longue pause de 400ms
|
|
end
|
|
end
|
|
|
|
function rgb(r, g, b)
|
|
-- on attache et démarre les pins
|
|
red = pwm.attach(pio.GPIO21, 2000, r / 256); red:start()
|
|
green = pwm.attach(pio.GPIO19, 2000, g / 256); green:start()
|
|
blue = pwm.attach(pio.GPIO18, 2000, b / 256); blue:start()
|
|
|
|
-- on attend 5 secondes
|
|
tmr.delayms(5000)
|
|
|
|
-- on stoppe et détache les pins
|
|
red:stop(); red:detach()
|
|
green:stop(); green:detach()
|
|
blue:stop(); blue:detach()
|
|
end
|
|
|
|
function allrgb()
|
|
-- on attache et démarre les pins
|
|
red = pwm.attach(pio.GPIO21, 2000, 1.); red:start()
|
|
green = pwm.attach(pio.GPIO19, 2000, 0); green:start()
|
|
blue = pwm.attach(pio.GPIO18, 2000, 0); blue:start()
|
|
|
|
-- on boucle pour afficher toutes les couleurs RGB
|
|
for i=0,255,5 do green:setduty(i / 256); tmr.delayms(50) end
|
|
for i=255,0,-5 do red:setduty(i / 256); tmr.delayms(50) end
|
|
for i=0,255,5 do blue:setduty(i / 256); tmr.delayms(50) end
|
|
for i=255,0,-5 do green:setduty(i / 256); tmr.delayms(50) end
|
|
for i=0,255,5 do red:setduty(i / 256); tmr.delayms(50) end
|
|
|
|
-- on stoppe et détache les pins
|
|
red:stop(); red:detach()
|
|
green:stop(); green:detach()
|
|
blue:stop(); blue:detach()
|
|
end
|