Слово мультипереключатель может показаться страшным, но это всего лишь некая кнопка, в нашем случае с тремя контактами. Пока мультипереключатель не нажат, на нём замкнута одна пара контактов, когда мультипереключатель нажат — то другая.
Область применения огромнейшая. Сигнализация, уведомления о событиях. Открылась дверь или окно, вам или письмо пришлёт raspberry pi на e-mail или камеру включит. В общем фантазии есть где разгуляться.
Сегодня попробуем реализовать простейшую схему, когда мультипереключатель нажимается, загорается светодиод. Дело с кнопкой мы уже реализовывали здесь, а со светодиодом здесь. Объединим их.
Мультипереключатель подключаем к GPIO22(пин №13) и GPIO27(пин №15). Использую только 2-а контакта, отвечающих за нажатие кнопки. У меня мультипереключатель был такой:
Распиновка разъемов raspberry pi 2:
Светодиод через резистор подключаем к пину №1(3v3) и №3(GPIO2). О том, как подсоединить светодиод к raspberry pi 2 я уже писал в статье здесь.
Дальше создаём скриптик:
sudo mkdir -p /script/gpio
sudo chmod -R 0777 /script
cd /script/gpio
sudo nano led.sh
вписываем туда:
#! /bin/bash # Указываем, что мы хотим использовать GPIO2 (№3) # к нему подключен светодиод echo "2" > /sys/class/gpio/export # # Указываем, что линия будет выходом echo "out" > /sys/class/gpio/gpio2/direction # # присваиваем значение 1 сразу, чтобы выключить светодиод # при зачении по умолчании = 0 светодиод включается echo "1" > /sys/class/gpio/gpio2/value # Указываем, что мы хотим использовать GPIO22 (№15) # к нему подключен светодиод echo "22" > /sys/class/gpio/export # # Указываем, что линия будет выходом echo "out" > /sys/class/gpio/gpio22/direction # # присваиваем значение 1 для GPIO22 echo "1" > /sys/class/gpio/gpio22/value # Указываем, что мы хотим использовать GPIO27 (№13) # к GPIO27 подключен один из контактов микропереключателя echo "27" > /sys/class/gpio/export # # Указываем, что линия будет входом echo "in" > /sys/class/gpio/gpio27/direction # Далее идёт логика: while ( true ) do # Если контакт №13(GPIO27) получает логическое значение 1 # (а он его получит от контакта №15(gpio22), когда нажмётся физическая кнопка мультпереключателя цепь замкнётся) if [ $(</sys/class/gpio/gpio27/value) == 1 ] then # тогда # передаёт значение 0 на gpio2 при котором # светодиод включится echo "0" > /sys/class/gpio/gpio2/value # Ожидание в 2 секунды, при которых значение 0 на gpio2 сохраняется и светодиод горит sleep 2 # Передаём значение 1 на gpio2, тем самым выключая диод echo "1" > /sys/class/gpio/gpio2/value fi # светодиод у нас выключен. # Перепроверяем значение gpio27 ежесекундно на наличие значения 1 # которое появляется при нажатой кнопке sleep 1 done
Сохраняем, закрываем.
Скачать скриптик можно тут или тут.
Закидываем в автозапуск следующим образом.
sudo nano /etc/rc.local
Перед словом «exit 0» вписываем:
sudo /script/gpio/led.sh &
Перезагружаем raspberry pi 2, нажимаем кнопку с задержкой и радуемся светящемуся светодиоду.