import asyncio
classTest(object):def__init__(self, loop=None):
self._queue = asyncio.Queue(loop=loop)
self._future = asyncio.Future(loop=loop)asyncdef_producer(self, interval):
v =0whileTrue:await asyncio.sleep(interval)print('add value to queue:',str(v))await self._queue.put(v)
v = v +1asyncdef_consumer(self):whileTrue:try:
r =await asyncio.wait_for(self._queue.get(), timeout=1.0)# r = await self._queue.get()print('consumer value>>>>>>>>>>>>>>>>>>', r)except asyncio.TimeoutError:print('get value timeout')continueexcept:breakprint('quit')asyncdefrun(self):
asyncio.ensure_future(self._producer(2))
asyncio.ensure_future(self._consumer())if __name__ =='__main__':
loop = asyncio.get_event_loop()
t = Test(loop=loop)
asyncio.ensure_future(t.run())try:
loop.run_forever()except KeyboardInterrupt as e:print(asyncio.Task.all_tasks())for task in asyncio.Task.all_tasks():print(task.cancel())
loop.stop()
loop.run_forever()finally:
loop.close()
6.3 水泵继电器代码(python3+)
import RPi.GPIO as GPIO
import time
if __name__ =='__main__':
GPIO.setmode(GPIO.BCM)
pin_reply =23
GPIO.setup(pin_reply, GPIO.OUT)#水泵放水3秒
GPIO.output(pin_reply, GPIO.HIGH)
time.sleep(3)
GPIO.output(pin_reply, GPIO.LOW)
GPIO.cleanup()
6.4 红外障碍检测代码(python3+)
import RPi.GPIO as GPIO
import time
if __name__ =='__main__':
pin_avoid_obstacle=18
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_avoid_obstacle, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)try:whileTrue:
status = GPIO.input(pin_avoid_obstacle)if status ==1:print('我是红外避障模组,没有检测到障碍物,一切正常!')else:print('我是红外避障模组,检测到障碍物,注意停车')
time.sleep(0.5)except KeyboradInterrupt:
GPIO.cleanup()