#! /bin/bash # 1) Говорим ядру, что мы хотим использовать GPIO20 # Cмотрим на первую картинку статьи и видим, что разъему под номером 38 # соответствует GPIO 20 # после этой команды в директории /sys/class/gpio # появится директория gpio20, в которой в свою очередь # появятся файлы active_low, device, direction, edge, subsystem, uevent, value echo "20" > /sys/class/gpio/export # # 2) Указываем, что линия будет выходом echo "out" > /sys/class/gpio/gpio20/direction # # 3) Установим логический 1 для значения исходящей (out) линии. # Вход (in) можно читать, а на выход (out) задавать значение echo "1" > /sys/class/gpio/gpio20/value # 4) Говорим ядру, что мы хотим использовать GPIO21 # смотрим на первую картинку и видим, что разъему под номером 40 # соответствует GPIO21 echo "21" > /sys/class/gpio/export # # 5) Указываем, что линия будет входом echo "in" > /sys/class/gpio/gpio21/direction # Далее идёт логика: while ( true ) do # 6) Если контакт №40(GPIO21) получает логическое значение 1 # (а он его получит от контакта №38(gpio20), когда нажмётся физическая кнопка и цепь замкнётся) if [ $( /sys/class/gpio/unexport # 8) освобождаем(unexport) порт GPIO21(порядковый номер 40) echo "21" > /sys/class/gpio/unexport # 9) подаём команду на выключение raspberry pi (shutdown -h now) shutdown -h now "The system is turned off using the GPIO" fi # 10) в противном случае приостанавливаем выполнение освобождения # портов и выключение на 0.02 секунды sleep 0.02 done