Код
- Получить ссылку
 - 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
 - Электронная почта
 - Другие приложения
 
Комментарии
Отправить комментарий