Raspberry Pi и Pi4J. Урок 2. Как подключить кнопку

В первом уроке мы заставили светодиод мигать и таким образом научились отправлять единички и нули (логические) на пины GPIO. Во втором уроке по изучению Pi4J, мы узнаем как считывать цифровые данные с GPIO, а для тестирования мы будем подключить кнопку и инфракрасный датчик движения  HC-SR501.

Как подключить кнопку

Самый простой способ изменения состояния пина из «1» в «0» и наоборот — это подключить и нажать обычную кнопку.

Схема подключения кнопки

Схема, как мы видим, очень простая и состоит из: Orange Pi, макетной платы, кнопки и двух проводов. Нарисована в fritzing, очень удобная штука, да и красиво выглядит.

Raspberry Pi и Pi4J. Урок 2. Как подключить кнопку (Fritzing - Orange Pi One + Push Button)

Код программы

Если для подачи и снятия рабочего напряжения на пины GPIO используется интерфейс GpioPinDigitalOutput, то для чтения используется GpioPinDigitalInput.

Чтобы проверить данный код нужно:

  1. создать java файл, вставить код (в PuTTY это делается правой кнопкой мыши) и сохранить файл (CTRL+X, Y, ENTER);
  2. скомпилировать этот файл;
  3. запустить программу.

Результат

Raspberry Pi и Pi4J. Урок 2. Как подключить кнопку - результат

Как подключить HC-SR501

Подключить кнопку и нажать её — это хорошо, но давайте попробуем что-то поинтереснее, к примеру, датчик движения и присутствия — HC-SR501. Более того мы подключим светодиод и включим его, когда датчик обнаружит играющегося кота. Всё это можно сделать и без этих одноплатных компьютеров, но мы-то не ищем лёгких путей.

Схема подключения HC-SR501

Raspberry Pi и Pi4J. Урок 2. Как подключить HC-SR501 (Fritzing - Orange Pi One + HC-SR501 + LED)

Код программы

Проверяем код:

  1. создаём java файл и вставляем код;
  2. компилируем файл;
  3. запускаем программу.

Результат

Raspberry Pi и Pi4J. Урок 2. Как подключить HC-SR501 - результат
Удачи! Если у вас возникнут какие-то вопросы, пишите, буду рад вам помочь.

Похожие записи

Комментарии 2

  • При подключении к Orange Pi Zero к пину OrangePiPin.GPIO_01 и на некоторых других пинах (10, 4, 1, 5) в коде с кнопкой выдает ошибку «Unable to open GPIO edge interface for pin 1: Permission denied» (Даже если запускать от sudo), но на некоторых пинах работает. Подскажите пожалуйста, как заставить работать код?

    • Я думаю тут несколько вариантов:
      1. На Orange pi Zero нужно установить правильный WiringPi, пробуйте этот вариант:

      2. Также может выть, что пины (10, 4, 1, 5) имеют другое назначение, допустим настроены как I2C, SPI или UART, но слабо верится, потому что они общего назначения и должны работать как обычные цифровые пины.
      3. Возможно Pi4J не настроили для работы с Orange Pi Zero, работают только некоторые пины.

      Можете сделать цикл и проверить все пины, при использовании которых не выдаётся эта ошибка.
      Нашёл у одного индуса вот такой пример:

      он использует пины OrangePiPin.GPIO_00 и OrangePiPin.GPIO_07 и вроде работает.
      https://www.weargenius.in/orange-pi-zero-gpio-programming-using-java/

      К сожалению у меня нету Orange Pi Zero и не могу проверять работоспособность Pi4J, на Orange Pi PC всё работает нормально.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *