天天看點

一起玩轉樹莓派(10)——觸控雷射燈一起玩轉樹莓派(10)——觸控雷射燈

一起玩轉樹莓派(10)——觸控雷射燈

      如果你已經閱讀并且練習了本系列部落格前面實驗,那麼我相信你已經能夠使用樹莓派做很多有趣的事情。本部落格将要介紹的内容就是一個例子。

      你在小時候有玩過雷射燈麼?其模樣類似于一個小型的手電筒,隻是其光線十分集中,亮度強,并且通過不同的濾片,可以在牆上或地上打射出不同的圖案,十分有趣。本實驗,我們将找回童趣,使用觸摸傳感器和雷射燈傳感器來實作一個簡易的觸控雷射燈。

      本實驗的原理非常簡單,無非是通過樹莓派的GPIO引腳來讀取觸摸傳感器的資料,之後将其用于操作雷射傳感器的開關控制上。本次實驗使用的觸摸傳感器如下圖所示:

一起玩轉樹莓派(10)——觸控雷射燈一起玩轉樹莓派(10)——觸控雷射燈

此觸摸傳感器有3個引腳,除了正負極引腳外,最外側的引腳用來輸出信号,當手指觸摸傳感器上的圓形區域時,其信号引腳會輸出高電平,否則輸出低電平。對于這種類型的傳感器,我們可以直接使用GPIO的下拉電阻功能,将其預設設定為低電平,輪詢等待高電平信号。

      首先,先來體驗下觸摸傳感器的應用,連線如下:

觸摸傳感器 樹莓派
GND
VCC 3.3V
SIG BCM編碼17的引腳(對應實體引腳為11)

編寫如下測試代碼:

#coding:utf-8

import RPi.GPIO as GPIO
import time

touchPin = 11

GPIO.setmode(GPIO.BOARD)
GPIO.setup(touchPin,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

while True:
    swi = GPIO.input(touchPin)
    print(swi)
    time.sleep(0.5)           

在樹莓派上運作上面代碼。通過觸摸傳感器,可以看到控制台上列印出對應的電平資訊。

      下面,我們再來看一下本次實驗所使用的雷射子產品,如下圖所示:

一起玩轉樹莓派(10)——觸控雷射燈一起玩轉樹莓派(10)——觸控雷射燈

此雷射子產品也有3個引腳,其中“-”号一側的引腳接地,中間引腳接3.3V電壓,“S”一側引腳接GPIO信号引腳。當S信号引腳輸入高電平時,雷射子產品被激活發射雷射,當S信号引腳輸入低電平時,雷射發射關閉。雷射子產品的接線如下:

雷射子產品
-
中間引腳
S BCM編碼18的引腳(對應實體引腳為12)

 修改上面的示例代碼如下:

#coding:utf-8

import RPi.GPIO as GPIO
import time

# 觸摸傳感器的信号引腳
touchPin = 11
# 雷射子產品的信号引腳
lightPin = 12

# 設定采用實體編碼
GPIO.setmode(GPIO.BOARD)
# 對觸摸傳感器的引腳進行初始化
GPIO.setup(touchPin,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# 對雷射傳感器的引腳進行初始化
GPIO.setup(lightPin,GPIO.OUT)

while True:
    swi = GPIO.input(touchPin)
    # 當觸摸發生時,觸摸傳感器的引腳輸入高電平 
    if swi == 1:
        # 向雷射子產品的引腳輸出高電平,發射雷射
        GPIO.output(lightPin, GPIO.HIGH)
    else:
        # 與上面相反,關閉雷射
        GPIO.output(lightPin, GPIO.LOW)
    time.sleep(0.5)           

在樹莓派上運作上面代碼,體驗下這個自制的雷射燈玩具吧!

繼續閱讀