- ajouté le workshop

This commit is contained in:
Christian Zufferey
2018-10-05 22:15:08 +02:00
parent 04f7369cfc
commit fcfe7960cd
29 changed files with 607 additions and 5 deletions

92
IR/ir_receive.lua Normal file
View File

@@ -0,0 +1,92 @@
-- Script pour la gestion du récepteur IR à 38kHz (LED, infrared, infrarouge)
-- permet la réception 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 !
print("\n ir_receive.lua zf180918.1906 \n")
pin_hp = 8
gpio.mode(pin_hp,gpio.OUTPUT)
gpio.write(pin_hp,gpio.LOW)
pin_ir_receive = 7
gpio.mode(pin_ir_receive, gpio.INT, gpio.PULLUP)
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
function detect_start_begin()
t_start_begin = tmr.now()
gpio.trig(pin_ir_receive,"up",detect_start_end)
end
function detect_start_end()
t_start_len = tmr.now()-t_start_begin
if t_start_len >= Mark_Start*0.8 and t_start_len <= Mark_Start*1.2 then
ir_code = 0 num_bit = 0
print("stxfir")
gpio.trig(pin_ir_receive,"down",detect_bit_begin)
else
gpio.trig(pin_ir_receive,"none")
end
end
function detect_bit_begin()
t_bit_begin = tmr.now()
gpio.trig(pin_ir_receive,"up",detect_bit_end)
end
function detect_bitt_end()
bit_ok = flase
t_bit_len = tmr.now()-t_bit_begin
if t_bit_len >= Mark_Bit1*0.8 and t_bit_len <= Mark_Bit1*1.2 then
ir_code = ir_code+(1+num_bit)^2
bit_ok = true
elseif t_bit_len >= Mark_Bit0*0.8 and t_bit_len <= Mark_Bit0*1.2 then
bit_ok = true
end
if bit_ok = true then
if num_bit <= 3 then
num_bit = num_bit+1
gpio.trig(pin_ir_receive,"down",detect_bit_begin)
else
print("code reçu: "..ir_code)
gpio.trig(pin_ir_receive,"down",detect_start_begin)
end
else
ir_code = 200
gpio.trig(pin_ir_receive,"none")
print("code error")
end
end
gpio.trig(pin_ir_receive,"down",detect_start_begin)
--[[
i=1 j=i
function pulse_detected()
-- gpio.write(pin_hp,gpio.HIGH)
--tmr.delay(500)
i=i+1
-- gpio.write(pin_hp,gpio.LOW)
end
ir_receive_tmr1=tmr.create()
tmr.alarm(ir_receive_tmr1, 500, tmr.ALARM_AUTO, function()
if i~=j then
gpio.write(pin_hp,gpio.HIGH)
print(i)
j=i
gpio.write(pin_hp,gpio.LOW)
end
end)
]]

View File

@@ -1,10 +1,10 @@
-- Script pour la gestion de l'émetteur IR à 38kHz (LED, infrared, infrarouge)
-- permet l'envoi d'un code avec le protocole zIR, protocole de mon invention ;-)
-- 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 zf180916.1706 \n")
print("\n ir_send.lua zf180918.1826 \n")
pin_ir_send = 7
gpio.mode(pin_ir_send,gpio.OUTPUT)
@@ -13,9 +13,9 @@ gpio.write(pin_ir_send,gpio.HIGH)
Mark_Coeff = 0.5
-- en mS/uS
Mark_Start = 3 *Mark_Coeff *1000
Mark_Bit1 = 1 *Mark_Coeff *1000
Mark_Bit0 = 2 *Mark_Coeff *1000
Mark_Space = 1 *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)