官术网_书友最值得收藏!

The most elaborate light switch in the world

By combining the two little projects earlier, we can now create a system that will do something useful when the pushbutton switch is pushed—for example, switching on the LED that we also have connected. Granted, we could just connect the LED directly to the switch and a battery, but not only would that be boring, it would defeat the point of what we're trying to do, which is programmatically sensing and controlling things.

Here's the breadboard layout for our elaborate light switch:

And here's the circuit diagram:

The illuminating script

Our full Bash script for our elaborate light switch is demonstrated next. This will loop endlessly, detecting the state of the switch GPIO pin, and will turn on the LED GPIO pin when the switch is pushed.

The code listing for light-switch.sh is as follows:

#!/bin/bash

#set up the LED GPIO pin
sudo echo 17 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio17/direction

#set up the switch GPIO pin
sudo echo 27 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio27/direction

# loop forever
while true
do
  # read the switch state
  SWITCH=$(sudo cat /sys/class/gpio/gpio27/value)

  #0=Pushed 1=Not Pushed
  if [ $SWITCH = "1" ]
  then
    #switch not pushed so turn off LED pin
    sudo echo 0 > /sys/class/gpio/gpio17/value
  else
    #switch was pushed so turn on LED pin
    sudo echo 1 > /sys/class/gpio/gpio17/value
  fi
  #short delay
  sleep 0.5
done

So, here we are—we have a script that will detect an input state and do something in response; in this case, it will switch on an LED. We're now forming the basis of how we are going to put together our home security system.

Note

Remember, don't connect anything to your Raspberry Pi in place of the LED, such as a buzzer or any other device that consumes lots of current. This is likely to irreversibly render your board dead. We'll look at ways, later on in this book, to control devices with higher power requirements.

主站蜘蛛池模板: 酒泉市| 莎车县| 牙克石市| 曲麻莱县| 简阳市| 青浦区| 同仁县| 彩票| 咸丰县| 衡东县| 南投县| 新营市| 左权县| 新竹县| 闽清县| 稷山县| 五寨县| 安溪县| 沭阳县| 神木县| 海淀区| 连城县| 凤凰县| 靖江市| 洛浦县| 陈巴尔虎旗| 中江县| 顺昌县| 封开县| 阜新| 房产| 瑞金市| 曲阳县| 洪湖市| 文登市| 荥经县| 大同市| 海原县| 大厂| 嘉黎县| 泗阳县|