Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 28, 2014 12:47:46

Wojaovlad
От: Минск
Зарегистрирован: 2014-04-16
Сообщения: 12
Репутация: +  0  -
Профиль   Адрес электронной почты  

Отслеживание очередности. Автоматизация включения света.

Добрый день. Есть такой вопрос. Не могу продумать алгоритм определения порядка срабатывания датчиков. Есть датчик_1 и датчик_2. Если сначала срабатывает датчик_1 потом датчик_2 , то свет включается, если в обратном порядке то выключается. Так же если дважды сработало в первом порядке то чтобы выключился нужно чтобы дважды сработало в обратном порядке. Вот что у меня получилось, но реализовать идею не удалось(

http://pastebin.com/sawEjzPr

[code python]
import RPi.GPIO as GPIO
import time
import threading

GPIO.setmode(GPIO.BCM)

TRIG = 14
ECHO = 15

L = 24

TRIG_W = 23
ECHO_W = 18

distance1 = 0
distance2 = 0

a = 0
b = 0
c = 0

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.setup(TRIG_W,GPIO.OUT)
GPIO.setup(ECHO_W,GPIO.IN)
GPIO.setup(L,GPIO.OUT)

def ultrasonic1():
try:
GPIO.output(TRIG, False)
time.sleep(1)

GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)

while GPIO.input(ECHO)==0:
pulse_start = time.time()

while GPIO.input(ECHO)==1:
pulse_end = time.time()

pulse_duration = pulse_end - pulse_start

global distance1
distance1 = pulse_duration * 17150

distance1 = round(distance1, 2)

print "Distance1:",distance1,"cm"
if distance1 < 20:
global a
a += 1
time.sleep(0.2)
except KeyboardInterrupt:
print "KeyboardInterrupt detected!"
GPIO.cleanup()
def ultrasonic2():
try:
GPIO.output(TRIG_W, False)
time.sleep(1)

GPIO.output(TRIG_W, True)
time.sleep(0.00001)
GPIO.output(TRIG_W, False)

while GPIO.input(ECHO_W)==0:
pulse_start = time.time()

while GPIO.input(ECHO_W)==1:
pulse_end = time.time()

pulse_duration = pulse_end - pulse_start
global distance2
distance2 = pulse_duration * 17150

distance2 = round(distance2, 2)

print "Distance2:",distance2,"cm"
if distance2 < 20:
global b
b += 1
time.sleep(0.2)
except KeyboardInterrupt:
print "KeyboardInterrupt detected!"
GPIO.cleanup()

try:
while True:
e1 = threading.Event()
e2 = threading.Event()
t1 = threading.Thread(target=ultrasonic1)
t2 = threading.Thread(target=ultrasonic2)
t1.start()
t2.start()
if b > a:
c = 1
elif a > b:
c = 0
if c <= 0:
print "a = ", a, "b = ", b
print "c = ", c
print "turn off"
GPIO.output(L,GPIO.LOW)
elif c >= 1:
print "a = ", a, "b = ", b
print "c = ", c
print "turn on"
GPIO.output(L,GPIO.HIGH)
time.sleep(0.5)
except KeyboardInterrupt:
print "KeyboardInterrupt detected!"
t1.join()
t2.join()
GPIO.cleanup()[/code]

Отредактировано Wojaovlad (Дек. 28, 2014 12:48:31)

Офлайн

#2 Дек. 30, 2014 19:51:13

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Отслеживание очередности. Автоматизация включения света.

Все зависит от что вы сделали для Навального.



Офлайн

#3 Дек. 30, 2014 20:03:09

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Отслеживание очередности. Автоматизация включения света.

Isem а кто такой этот Навальный? я мог бы посмотреть в интернете, но думаю что от вас это будет интереснее услышать))



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Дек. 30, 2014 20:13:34

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Отслеживание очередности. Автоматизация включения света.

terabayt
terabayt
Это программист.


p.s. шучу. Это кто борется с коррупцией, но ему нужна поддержка



Отредактировано Isem (Дек. 30, 2014 20:18:22)

Офлайн

#5 Дек. 31, 2014 05:07:24

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Отслеживание очередности. Автоматизация включения света.

Isem
p.s. шучу. Это кто борется с коррупцией, но ему нужна поддержка
Угу, даже фильм такой есть “Борец и клоун”. Модератор пристрелите нас.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version