Sekvensstyring-Timere

Her har vi en sekvensstyring basert på timere.

Den første utgaven av programmet er ganske enkel, men det har den svakheten at man må stå og holde stoppbryteren inne fram til at siste sekvens har kjørt ut. Dette har sammenheng med at programmet bruker en type timere som får programmet til å stanse opp mens timeren kjører.


# Sekvensstyring
# Problemer med å stoppe sekvensen
# Arne G

from gpiozero import Button, LED
from signal import pause
import time

run = False

led1 = LED(21)
led2 = LED(26)
led3 = LED(19)
knapp1 = Button(2)
knapp2 = Button(16)
knapp3 = Button(20)
   
while True:

    if knapp1.value:
        print("Run")
        run = True
        
    if knapp2.value:
        print("Stop")
        run = False

    if run == True:
        
        print("Sekvens 1")
        led1.on()
        led2.off()
        led3.off()
        time.sleep(5)
       
        print("Sekvens 2")
        led1.off()
        led2.on()
        led3.off()
        time.sleep(5)
  
        print("Sekvens 3")
        led1.off()
        led2.off()
        led3.on()
        time.sleep(5)
    
        print("Sekvens 4")
        led1.on()
        led2.on()
        led3.on()
        time.sleep(5)

    else:
        print("Stanset")
        led1.off()
        led2.off()
        led3.off()
        time.sleep(5)

pause()

#

Her er en forbedret utgave av programmet. Det brukes en annen type timere slik at det  holder med et kort trykk på stopp knappen, og så stanser programmet.


# Sekvensstyring med
# en annen type timere
# Arne G

from gpiozero import Button, LED
from signal import pause
import time

run = False
sekvens = 1
tid1 = 1.1

led1 = LED(21)
led2 = LED(26)
led3 = LED(19)
knapp1 = Button(2)
knapp2 = Button(16)
knapp3 = Button(20)
   
while True:

    if knapp1.value:
        print("Run")
        run = True
        
    if knapp2.value:
        print("Stop")
        run = False

    if run == True:
        
        if sekvens == 1 and time.time() >= tid1 + 5:
            print("Sekvens 1")
            led1.on()
            led2.off()
            led3.off()
            sekvens = 2
            tid1 = time.time()

        if sekvens == 2 and time.time() >= tid1 + 5:
            print("Sekvens 2")
            led1.off()
            led2.on()
            led3.off()
            sekvens = 3
            tid1 = time.time()

        if sekvens == 3 and time.time() >= tid1 + 5:
            print("Sekvens 3")
            led1.off()
            led2.off()
            led3.on()
            sekvens = 1
            tid1 = time.time()

    time.sleep(0.2)
  
pause()

#

Her er en litt forbedret utgave av programmet som setter alle utgangene til null ved stans og som gjør styringen klar til en ny start.


from gpiozero import Button, LED
from signal import pause
import time

run = False
sekvens = 1
tid1 = 1.1

led1 = LED(21)
led2 = LED(26)
led3 = LED(19)
knapp1 = Button(2)
knapp2 = Button(16)
knapp3 = Button(20)
   
while True:

    if knapp1.value:
        print("Run")
        run = True
        
    if knapp2.value:
        print("Stop")
        run = False

    if run == True:
        
        if sekvens == 1 and time.time() >= tid1 + 5:
            print("Sekvens 1")
            led1.on()
            led2.off()
            led3.off()
            sekvens = 2
            tid1 = time.time()

        if sekvens == 2 and time.time() >= tid1 + 5:
            print("Sekvens 2")
            led1.off()
            led2.on()
            led3.off()
            sekvens = 3
            tid1 = time.time()

        if sekvens == 3 and time.time() >= tid1 + 5:
            print("Sekvens 3")
            led1.off()
            led2.off()
            led3.on()
            sekvens = 1
            tid1 = time.time()

    if run == False:
        led1.off()
        led2.off()
        led3.off()
        sekvens = 1

    time.sleep(0.2)
  
pause()

#