Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры

P14J предоставляет серию триггеров, которые могут выполнять действия на пины GPIO на основе изменения состояния другого пина. Триггеры также предоставляют расширяемый интерфейс, который позволяет расширять и создавать собственные пользовательские триггеры.

Триггеры GpioBlinkStateTrigger и GpioBlinkStopStateTrigger

Триггеры GpioBlinkStateTrigger и GpioBlinkStopStateTrigger используются для включения и, соответственно, выключения мигания на пины GPIO. К примеру, мы хотим подключить датчик движения (к примеру HC-SR501) и светодиод, мигать им, когда датчик обнаружит движение и выключить мигание в противном случае.

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioBlinkStateTrigger и GpioBlinkStopStateTrigger (Fritzing - Orange Pi One + HC-SR501 + LED)

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

В этом примере кода показано, как настроить и использовать мигающие триггеры GpioBlinkStateTrigger и GpioBlinkStopStateTrigger для контактов GPIO на Orange Pi. Триггер GpioBlinkStateTrigger мигает светодиодом «myLed» с интервалом в 100 мс, когда на пин «myButton» меняется состояние из «0» в «1», а GpioBlinkStopStateTrigger отключает мигание, когда состояние переходит из «1» в «0».

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - PushButtonGpioBlinkStateTrigger

Триггер GpioToggleStateTrigger

Триггер GpioToggleStateTrigger используется для изменения состояния GPIO пинов на противоположное. Если выходной пин в состоянии «1», при срабатывании триггера (к примеру нажали на кнопку) состояние пина меняется в лог. «0» и на оборот, если пин в состоянии «0» — тогда менится в лог. «1». Срабатывание триггера GpioToggleStateTrigger можно настроить тремя способами:

  1. при переходе из «1» в «0» — new GpioToggleStateTrigger(PinState.LOW, myLed);
  2. при переходе из «0» в «1» — new GpioToggleStateTrigger(PinState.HIGH, myLed);
  3. любое изменение состояния — new GpioToggleStateTrigger(myLed);

Чтобы проверить как GpioToggleStateTrigger работает, мы можем подключить кнопку и светодиод как показано на схеме ниже и выполнить приведённый код программы.

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - PushButtonGpioToggleStateTrigger (Fritzing - Orange Pi One + Push Button + LED)

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

В этом примере показано, как настроить и использовать триггер GpioToggleStateTrigger. Триггер включает и выключает светодиод если нажимать на кнопку, т.е. когда пин «myButton» меняет состояние из «1» в «0».

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - PushButtonGpioToggleStateTrigger

Триггеры GpioSyncStateTrigger и GpioInverseSyncStateTrigger

Триггеры GpioSyncStateTrigger (также называется «follow-me») и GpioInverseSyncStateTrigger можно использовать для синхронизации и, соответственно, обратной синхронизации состояния одного пина с другим. GpioSyncStateTrigger работает по принципу «делай как я», т.е. если на входном пине менится состояние из «1» в «0», на выходном также менится. GpioInverseSyncStateTrigger работает по принципу «делай наоборот», если на входном пине состояние менится из «0» в «1», на выходном менится из «1» в «0».

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioSyncStateTrigger и GpioInverseSyncStateTrigger (Fritzing - Orange Pi One + Push Button + 2xLED)

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

Следующий пример демонстрирует простую реализацию триггера «follow-me» (следи за мной). При нажатии кнопки загорается синий светодиод, а при отжатии — красный.

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioSyncStateTrigger и GpioInverseSyncStateTrigger

Триггер GpioPulseStateTrigger

Триггер GpioPulseStateTrigger используются для отправки импульсов на пины GPIO на определённое время. Срабатывание триггера GpioPulseStateTrigger можно настроить тремя способами:

  1. при переходе из «1» в «0» — new GpioPulseStateTrigger(PinState.LOW, myLed, 1000);
  2. при переходе из «0» в «1» — new GpioPulseStateTrigger(PinState.HIGH, myLed, 1000);
  3. любое изменение состояния — new GpioPulseStateTrigger(myLed, 1000);

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioPulseStateTrigger (Fritzing - Orange Pi One + Push Button + 2xLED)

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

В этом примере я добавил два триггера GpioPulseStateTrigger, чтобы при нажатии на кнопку (переход из «1» в «0») загорелся красный светодиод, а при отжатии (переход из «0» в «1») — синий. Оба светодиода будут гореть по 1000 мс.

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioPulseStateTrigger

Триггер GpioSetStateTrigger

С помощью триггера GpioSetStateTrigger можно задать состояние GPIO пинам. Его можно настроить, чтобы срабатывал при переходе из лог. «0» в лог. «1» (и наоборот) и задал «0» или «1» (PinState.LOW или PinState.HIGH) на другой пин.

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioSetStateTrigger (Fritzing - Orange Pi One + Push Button + LED)

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

В этом примере я добавил два триггера GpioSetStateTrigger, чтобы при нажатии на кнопку светодиод включился, а при отжатии — отключился.

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - PushButtonGpioSetStateTrigger

Триггер GpioCallbackTrigger

Если вам нужно выполнять какую-то задачу при нажатии кнопки, тогда вы можете использовать триггер GpioCallbackTrigger. Срабатывание триггера можно настроить тремя способами:

  1. при переходе из «1» в «0»
  2. при переходе из «0» в «1»
  3. любое изменение состояния

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

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioCallbackTrigger (Fritzing - Orange Pi One + Push Button)

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

Этот пример выводит в консоль текст при нажатии/отжатии кнопки.

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

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

Результат

Raspberry Pi и Pi4J. Урок 3. GPIO Триггеры - GpioCallbackTrigger
Надеюсь данные примеры будут вам полезны. Если возникнут какие-то вопросы, пишите, буду рад вам помочь.




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

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