树莓派4B接KY008激光头是一个比较简单的应用。只要接线正确就能很快的跑起来。
首先我们先有知道KY008激光头的每一个引脚的接法:
下面是实物连接的照片
(在实际接线时发现不接5V也是可以正常工作的 )
然后在Raspberry Pi 4上运行下面的Python脚本就可以控制激光头了(前提是你的树莓派已经安装了Python3和RPI.GPIO模块):
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
LaserGPIO = 17 # --> PIN11/GPIO.0
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(LaserGPIO, GPIO.OUT)
GPIO.output(LaserGPIO, GPIO.HIGH)
def loop():
while True:
print('打开激光')
GPIO.output(LaserGPIO, GPIO.HIGH) # led on
time.sleep(1.0)
print('关闭激光')
GPIO.output(LaserGPIO, GPIO.LOW) # led off
time.sleep(1.0)
def destroy():
GPIO.output(LaserGPIO, GPIO.LOW)
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt:
destroy()
如果你有树莓派4B的.net core环境,你也可以用下面的代码控制激光头。(需要从Nuget上引入“System.Device.Gpio”包)
using System;
using System.Device.Gpio;
using System.Threading;
namespace LaserSensor1
{
class Program
{
static void Main(string[] args)
{
var pin = 17;
var lightTimeInMilliseconds = 1000;
var dimTimeInMilliseconds = 200;
GpioController gpioController = new GpioController();
gpioController.OpenPin(pin, PinMode.Output);
Console.WriteLine($"打开引脚{pin}!");
Console.CancelKeyPress += (obj, args) =>
{
gpioController.Dispose();
};
while (true)
{
Console.WriteLine($"点亮{lightTimeInMilliseconds}毫秒!");
gpioController.Write(pin, PinValue.High);
Thread.Sleep(lightTimeInMilliseconds);
Console.WriteLine($"熄灭{dimTimeInMilliseconds}毫秒!");
gpioController.Write(pin, PinValue.Low);
Thread.Sleep(dimTimeInMilliseconds);
}
}
}
}