Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from machine import Pin
- import time
- # debounce and interrupts to avoid triggering things too fast
- debounce_time1=0
- debounce_time2=0
- debounce_time3=0
- debounce_time4=0
- debounce_time5=0
- debounce_time6=0
- debounce_time7=0
- debounce_time8=0
- interrupt_flag1=0
- interrupt_flag2=0
- interrupt_flag3=0
- interrupt_flag4=0
- interrupt_flag5=0
- interrupt_flag6=0
- interrupt_flag7=0
- interrupt_flag8=0
- # inputs and outputs
- relay1 = Pin(7, Pin.OUT)
- relay2 = Pin(6, Pin.OUT)
- relay3 = Pin(5, Pin.OUT)
- relay4 = Pin(4, Pin.OUT)
- relay5 = Pin(3, Pin.OUT)
- relay6 = Pin(2, Pin.OUT)
- relay7 = Pin(1, Pin.OUT)
- relay8 = Pin(0, Pin.OUT)
- button1 = Pin(8, Pin.IN, Pin.PULL_UP)
- button2 = Pin(9, Pin.IN, Pin.PULL_UP)
- button3 = Pin(10, Pin.IN, Pin.PULL_UP)
- button4 = Pin(11, Pin.IN, Pin.PULL_UP)
- button5 = Pin(12, Pin.IN, Pin.PULL_UP)
- button6 = Pin(13, Pin.IN, Pin.PULL_UP)
- button7 = Pin(14, Pin.IN, Pin.PULL_UP)
- button8 = Pin(15, Pin.IN, Pin.PULL_UP)
- # things for the relay resets
- reset = Pin(16, Pin.IN, Pin.PULL_UP) # reset all outputs
- debounce_time_reset=0
- interrupt_flag_reset=0
- # definitions to debounce the inputs
- def callback1(button1):
- global interrupt_flag1, debounce_time1
- if (time.ticks_ms()-debounce_time1) > 500:
- interrupt_flag1=1
- debounce_time1=time.ticks_ms()
- def callback2(button2):
- global interrupt_flag2, debounce_time2
- if (time.ticks_ms()-debounce_time2) > 500:
- interrupt_flag2=1
- debounce_time2=time.ticks_ms()
- def callback3(button3):
- global interrupt_flag3, debounce_time3
- if (time.ticks_ms()-debounce_time3) > 500:
- interrupt_flag3=1
- debounce_time3=time.ticks_ms()
- def callback4(button4):
- global interrupt_flag4, debounce_time4
- if (time.ticks_ms()-debounce_time4) > 500:
- interrupt_flag4=1
- debounce_time4=time.ticks_ms()
- def callback5(button5):
- global interrupt_flag5, debounce_time5
- if (time.ticks_ms()-debounce_time5) > 500:
- interrupt_flag5=1
- debounce_time5=time.ticks_ms()
- def callback6(button6):
- global interrupt_flag6, debounce_time6
- if (time.ticks_ms()-debounce_time6) > 500:
- interrupt_flag6=1
- debounce_time6=time.ticks_ms()
- def callback7(button7):
- global interrupt_flag7, debounce_time7
- if (time.ticks_ms()-debounce_time7) > 500:
- interrupt_flag7=1
- debounce_time7=time.ticks_ms()
- def callback8(button8):
- global interrupt_flag8, debounce_time8
- if (time.ticks_ms()-debounce_time8) > 500:
- interrupt_flag8=1
- debounce_time8=time.ticks_ms()
- def callback_reset(reset):
- global interrupt_flag_reset, debounce_time_reset
- if (time.ticks_ms()-debounce_time_reset) > 500:
- interrupt_flag_reset=1
- debounce_time_reset=time.ticks_ms()
- # interrupts
- button1.irq(trigger=Pin.IRQ_RISING, handler=callback1)
- button2.irq(trigger=Pin.IRQ_RISING, handler=callback2)
- button3.irq(trigger=Pin.IRQ_RISING, handler=callback3)
- button4.irq(trigger=Pin.IRQ_RISING, handler=callback4)
- button5.irq(trigger=Pin.IRQ_RISING, handler=callback5)
- button6.irq(trigger=Pin.IRQ_RISING, handler=callback6)
- button7.irq(trigger=Pin.IRQ_RISING, handler=callback7)
- button8.irq(trigger=Pin.IRQ_RISING, handler=callback8)
- reset.irq(trigger=Pin.IRQ_RISING, handler=callback_reset)
- # begin the main program
- while True:
- if interrupt_flag1 is 1:
- interrupt_flag1=0
- relay1.toggle()
- if interrupt_flag2 is 1:
- interrupt_flag2=0
- relay2.toggle()
- if interrupt_flag3 is 1:
- interrupt_flag3=0
- relay3.toggle()
- if interrupt_flag4 is 1:
- interrupt_flag4=0
- relay4.toggle()
- if interrupt_flag5 is 1:
- interrupt_flag5=0
- relay5.toggle()
- if interrupt_flag6 is 1:
- interrupt_flag6=0
- relay6.toggle()
- if interrupt_flag7 is 1:
- interrupt_flag7=0
- relay7.toggle()
- if interrupt_flag8 is 1:
- interrupt_flag8=0
- relay8.toggle()
- if interrupt_flag_reset is 1: #reset outputs
- interrupt_flag_reset=0
- relay1.value(0)
- relay2.value(0)
- relay3.value(0)
- relay4.value(0)
- relay5.value(0)
- relay6.value(0)
- relay7.value(0)
- relay8.value(0)
Advertisement
Add Comment
Please, Sign In to add comment