Files
NodeMCU_Lua/IR/ir_send.lua
Christian Zufferey fcfe7960cd - ajouté le workshop
2018-10-05 22:15:08 +02:00

52 lines
1.5 KiB
Lua

-- Script pour la gestion de l'émetteur IR à 38kHz (LED, infrared, infrarouge)
-- permet l'envoi d'un code (4bits seulement) avec le protocole zIR, protocole de mon invention ;-)
-- exprès pas standard afin de ne pas être parasité par les autres sources IR !
-- ATTENTION, on utilise ici l'astuce du gpio.serout pour faire la pulse de 26uS (38kHz),
-- car on n'arrive pas avec le gpio.write à faire une pulse plus courte que 400uS
print("\n ir_send.lua zf180918.1826 \n")
pin_ir_send = 7
gpio.mode(pin_ir_send,gpio.OUTPUT)
gpio.write(pin_ir_send,gpio.HIGH)
Mark_Coeff = 0.5
-- en mS/uS
Mark_Start = 3 *Mark_Coeff *1000
Mark_Bit1 = 2 *Mark_Coeff *1000
Mark_Bit0 = 1 *Mark_Coeff *1000
Mark_Space = 0.5 *Mark_Coeff *1000
-- envoi une série de pulses à 38kHz de durée zduration en uS
function pulse_ir(zduration)
-- print("pulse: "..zduration)
gpio.serout(pin_ir_send,gpio.LOW,{1,25},zduration/26)
end
-- attention, 4 bits seulement
function send_code_ir(zcode)
pulse_ir(Mark_Start)
print("Mark_Space:"..Mark_Space)
tmr.delay(Mark_Space)
for i=0, 3 do
if bit.isset(zcode,i) then
-- print("bit: "..i..",1")
pulse_ir(Mark_Bit1)
else
-- print("bit: "..i..",0")
pulse_ir(Mark_Bit0)
end
-- print("Mark_Space:"..Mark_Space)
tmr.delay(Mark_Space)
end
end
sendir_tmr1=tmr.create()
tmr.alarm(sendir_tmr1, 1000, tmr.ALARM_AUTO, function()
send_code_ir(0x05)
end)