- ajouté le workshop
This commit is contained in:
92
IR/ir_receive.lua
Normal file
92
IR/ir_receive.lua
Normal 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)
|
||||
]]
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user