Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Хотя покупать его несколько неудобно (потому что он недоступен во многих интернет-магазинах), я считаю необходимым обсудить STM32 L432KC. Этот чип заслуживает особого внимания, так как имеет УЛЬТРА НИЗКАЯ МОЩНОСТЬ. Однако для тех, кто не владеет STM32, он может быть заменен в этом проекте на Arduino Uno. Для этого просто измените контакт входа прерывания.
Затем давайте создадим измеритель оборотов, используя STM32 L432KC и инфракрасный датчик. Эту же программу можно использовать для измерения скорости ветра. Низкое энергопотребление этого микроконтроллера идеально подходит для Интернета вещей.
Шаг 1: модули
В нашем сегодняшнем проекте мы используем 8-значный MAX7219CWG, а также инфракрасный модуль.
Шаг 2: STM32 NUCLEO-L432KC
Шаг 3: демонстрация
В нашей сборке есть STM32, 8-разрядный дисплей и импульсный вход. Инфракрасная карта имеет фототранзистор и светодиод, который улавливает свет, отражаясь от белой ленты. Эта лента прикреплена к колесу и при каждом повороте будет генерировать импульс, который будет захвачен прерыванием STM32.
У нас есть диод и конденсатор в сборке, которые использовались для предотвращения попадания шума сигнала считывания с ленты на STM32, что заставило бы его интерпретировать включение и выключение.
На демонстрации показан наш проект, а также счетчик Minipa (оба в действии).
Шаг 4: Сборка
Шаг 5: программа
Мы создадим программу, в которой инфракрасный модуль будет запускать прерывание в STM32 L432KC каждый «оборот», и мы выполним вычисления для отображения числа оборотов на дисплее.
Шаг 6: библиотеки
Добавьте следующую библиотеку «DigitLedDisplay».
Просто зайдите в «Скетч >> Включить библиотеки >> Управление библиотеками…»
Шаг 7: Исходный код
Библиотеки и переменные
Начнем с исходного кода, включая библиотеку DigitLedDisplay. Мы покажем экранный объект. Я устанавливаю вывод прерывания, который будет 12. Кроме того, я ввожу изменчивый оператор для счетчика оборотов и времени, чтобы избежать проблем с коллизиями.
/ * Включить библиотеку DigitLedDisplay * / # include "DigitLedDisplay.h" / * Вывод Arduino для вывода вывода 7 на DIN, 6 на CS, 5 на CLK * / // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // Arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // прерывание (модуль IR) volatile unsigned int rpm; // изменение оборотов volatile unsigned long timeold; //темп
Настраивать
В Setup мы настраиваем работу отображения, а также настраиваем прерывание как Rising.
void setup () {Serial.begin (115200); / * Устанавливаем яркость min: 1, max: 15 * / ld.setBright (10); / * Устанавливаем количество цифр * / ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (контакт), interruptPin, RISING); об / мин = 0; timeold = миллис (); }
Петля
Наконец, мы определяем интервал 1 в 1 минуту для обновления дисплея. После очистки экрана печатаем обороты. Выполняем функцию, которую вызовет прерывание. Рассчитываем обороты и время обновления.
void loop () {задержка (1000); ld.clear (); ld.printDigit (об / мин); } void interruptPin () {об / мин = 60 * 1000 / (миллис () - время); timeold = миллис (); }
Шаг 8: файлы
Загрузите файлы:
Я НЕТ