2017-01-28 15 views
-1

Я пытаюсь включить три различных светодиода, но я хочу, чтобы отключить в разное время, но это выглядит невозможно ....: плакать: Вот мой код:Multiple СИД в разное время

import RPi.GPIO as GPIO 
import time from threading 
import Thread 
def led1(): 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(36, GPIO.OUT) 
GPIO.output(36,1) 
time.sleep(3) 
GPIO.output(36,0) 
GPIO.setwarnings(False) 
def led2(): GPIO.setmode(GPIO.BOARD) 
GPIO.setup(38, GPIO.OUT) 
GPIO.output(38,1) 
time.sleep(5) 
GPIO.output(38,0) 
GPIO.setwarnings(False) 
def led3(): 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(40, GPIO.OUT) 
GPIO.output(40,1) 
time.sleep(7) 
GPIO.output(40,0) 
GPIO.setwarnings(False) 
thread1= Thread(target = led1) 
thread2= Thread(target = led2) 
thread3= Thread(target = led3) 
thread1.run() thread2.run() 
thread3.run() 
##thread1.join() // not sure if I have to put that or not 
##thread2.join() 
##thread3.join() 
GPIO.cleanup() 

ответ

0

Почему бы не сделать что-то подобное?

import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BOARD) 
GPIO.setup(36, GPIO.OUT) 
GPIO.setup(38, GPIO.OUT) 
GPIO.setup(40, GPIO.OUT) 
GPIO.setwarnings(False) 

GPIO.output(36,1) 
GPIO.output(38,1) 
GPIO.output(40,1) 

time.sleep(3) 
GPIO.output(36,0) 
time.sleep(2) 
GPIO.output(38,0) 
time.sleep(2) 
GPIO.output(40,0) 

GPIO.cleanup() 

Edit: Если вы не знаете, времена каждый светодиод будет в течение:

import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BOARD) 
GPIO.setup(36, GPIO.OUT) 
GPIO.setup(38, GPIO.OUT) 
GPIO.setup(40, GPIO.OUT) 
GPIO.setwarnings(False) 

led1time = 3 
led2time = 5 
led3time = 7 
m = max(led1time, led2time, led3time) 

GPIO.output(36,1) 
GPIO.output(38,1) 
GPIO.output(40,1) 

t = 0 
while t <= m: 
    if t >= led1time: 
     GPIO.output(36,0) 
    if t >= led2time: 
     GPIO.output(38,0) 
    if t >= led3time: 
     GPIO.output(40,0) 
    time.sleep(0.1) 
    t += 0.1 

GPIO.cleanup() 

Теперь вы можете установить, как долго каждый водить будет в течение 0,1 секунды с точностью, и вы может увеличить эту точность, заменив любые вхождения 0,1 на меньшее число.

+0

Проблема заключается в том, что второй нужно подождать 2 + 3 секунды, прежде чем отключиться, а третий - с 3 + 2 + 2 секунды, а следующий этап кода - попросить пользователя ввести время поэтому, если t2 ниже t1, он не будет работать –

+0

Я обновил свой ответ, в будущем эта информация должна быть включена в вопрос. – BluCode

 Смежные вопросы

  • Нет связанных вопросов^_^