Код
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Для реализации данной задачи на Raspberry Pi с использованием библиотеки RPi.GPIO
мы создадим счётчик, который будет увеличивать значение при наличии импульсов на первом пине и уменьшать значение при наличии импульсов на втором пине. Программа будет записывать все изменения показаний счётчика и остановится, когда его значение достигнет нуля.
Вот пример кода, который реализует описанную функциональность:
import RPi.GPIO as GPIO
import time
# Настройки пинов
PIN_COUNT_UP = 17 # Пин для увеличения счётчика
PIN_COUNT_DOWN = 27 # Пин для уменьшения счётчика
# Инициализация счётчика и списка для записи изменений
counter = 0
history = [] # Список для хранения изменений счётчика
# Установка режима GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_COUNT_UP, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(PIN_COUNT_DOWN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# Функция для увеличения счётчика
def count_up(channel):
global counter
counter += 1
history.append(counter)
print(f'Импульс на пине {PIN_COUNT_UP}: Счётчик увеличен до {counter}')
# Функция для уменьшения счётчика
def count_down(channel):
global counter
counter -= 1
if counter < 0: # Ограничим минимальное значение счётчика
counter = 0
history.append(counter)
print(f'Импульс на пине {PIN_COUNT_DOWN}: Счётчик уменьшен до {counter}')
# Настройка прерываний
GPIO.add_event_detect(PIN_COUNT_UP, GPIO.RISING, callback=count_up, bouncetime=200)
GPIO.add_event_detect(PIN_COUNT_DOWN, GPIO.RISING, callback=count_down, bouncetime=200)
try:
print("Счётчик запущен. Нажмите Ctrl+C для выхода.")
while counter >= 0: # Остановимся, когда счётчик достигнет нуля
time.sleep(0.1) # Ждём некоторое время
print("Счётчик достиг нуля. Остановка.")
finally:
GPIO.cleanup() # Очистка GPIO при завершении работы
Объяснение кода:
Импорт библиотек: Импортируем необходимую библиотеку
RPi.GPIO
для работы с GPIO-пинами.Настройка пинов: Устанавливаем два пина: один для увеличения счётчика и другой для уменьшения.
Инициализация переменных: Создаём переменные для счётчика и истории изменений.
Настройка GPIO: Устанавливаем режим работы с пинами и подключаем их как входы.
Обработчики событий: Создаём функции
count_up
иcount_down
, которые увеличивают и уменьшают счётчик соответственно. Каждое изменение записывается в списокhistory
.Настройка прерываний: Устанавливаем прерывания для обоих пинов, чтобы вызывать соответствующие функции при появлении импульса.
Основной цикл: Программа работает до тех пор, пока значение счётчика не станет равным нулю.
Очистка: Используем блок
finally
для корректной очистки GPIO-пинов при завершении программы.
Примечание:
Перед запуском программы убедитесь, что у вас установлен соответствующий модуль RPi.GPIO
и вы имеете доступ к GPIO на своему Raspberry Pi. Также следите за безопасностью работы с электрическими сигналами.
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Комментарии
Отправить комментарий