12345上山打老虎 发表于 2020-4-24 10:46:07

【临沂】第二课Python编程——红外传感控灯

这节课本来要起名为“手势控灯”,但老觉得会引起其他人的误会,好像会以为手指结印LED灯会有不同的变化,其实这节课是在第一节课的基础上加了红外避障传感器,当传感器检测到前方有无障碍物时控制小灯的亮灭。这节课有如下几个程序代码(纯粹手打,内容可能有些错误)


程序一:测试红外传感器,输出信号的“0”和“1”哪个是表示前方有障碍物。
import RPi.GPIO as gpio
import time

Dk = 24
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
gpio.setup(Dk, gpio.IN)

while True:
    if gpio.input(Dk) == 0:
      print('Dk=0')
    else:
      print('Dk=1')
    time.sleep(0.5)
通过测试我们发现,当前方有障碍是输出的是“0”.

程序二:有障碍物灯亮,否则灯不亮。
import RPi.GPIO as pi
import time

Dk = 24
led =5
pi.setwarnings(Flase)
pi.setmode(pi.BCM)
pi.setup(Dk,pi.IN)
pi.setup(led,Pi.OUT)

while True:
    if pi.input(Dk) == 0:
      pi.output(led,pi.HIGH)
    else:
      pi.output(led,pi.LOW)
    time.sleep(0.2)

程序三:红外控制LED往返流水灯。
import RPi.GPIO as pi
import time

led = 0
Dk = 24
leds = 5, 6, 12, 16, 12, 6
pi.setwarnings(False)
pi.setmode(pi.BCM)
pi.setup(Dk, pi.IN)
pi.setup(leds, pi.OUT)

while True:
    if pi.input(Dk) == 0:
      time.sleep(0.3)
      led = (led + 1) % 2
    if led == 1:
      for i in range(6):
            pi.output(leds, pi.HIGH)
            time.sleep(0.2)
            pi.output(pn, pi.LOW)
            if pi.input(Dk) == 0:
                break

学完今天的内容,明显发觉代码变长了,变长的代码也能实现更复杂的命令。学习,向更高处迈进。

DFrJ5KYVQaH 发表于 2020-4-24 17:49:45

非常好,学习了Python还学了树莓派
页: [1]
查看完整版本: 【临沂】第二课Python编程——红外传感控灯