Ардуино Нано Тахометр

Источник:

Предупреждение: потенциометр на некоторых ИК-датчиках может находиться в несколько ином положении. Я использовал модель https://grabcad.com/library/hw-201-1. Убедитесь, что ваши совпадают.
Кроме того, настройте потенциометр на известные обороты. Некоторые показания могут быть слишком высокими из-за дребезга. Уменьшайте чувствительность до минимально возможного уровня.

Детали предназначены для приклеивания на место.

ВЫПОЙКИ ОТ OLED-ДИСПЛЕЯ (очень помогает удаление черной прокладки). паять непосредственно на контактные площадки

Аппаратное обеспечение:
Arduino Nano с портом USB-C, без разъемов (я использовал китайскую подделку)

OLED-дисплей I2C 128X64 (белый текст, 0,96)

ИК-датчик приближения (один прозрач��ый светодиод, один черный светодиод.)

Проводка:
ИК-датчик ВЫХОД → D2
Дисплей ПДД → А4
Дисплей SCL → A5
Соедините все GND вместе
Соедините все 5В вместе

Код:

#include
#include

#define OLED_RESET -1
Дисплей Adafruit_SSD1306 (128, 64, &Wire, OLED_RESET);

#define PULSE_PIN 2
#define DEBOUNCE_US 10000 // порог устранения дребезга в микросекундах

энергозависимые длинные беззнаковые импульсы = 0;
летучий беззнаковый long LastPulseTime = 0;
беззнаковый длинный LastTime = 0;

// Прерываем сервисную процедуру с устранением дребезга
недействительный countPulse() {
unsigned long now = micros();
if (сейчас — LastPulseTime > DEBOUNCE_US) {
импульсы++;
LastPulseTime = сейчас;
}
}

недействительная настройка() {
pinMode (PULSE_PIN, INPUT);
AttachInterrupt(digitalPinToInterrupt(PULSE_PIN), countPulse, RISING);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
}

недействительный цикл() {
if (millis() — LastTime >= 1000) {
нетПрерывания();
беззнаковый длинный счет = импульсы;
импульсы = 0;
прерывания();

беззнаковое целое число оборотов = количество * 60;

display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print(«RPM:»);
display.setTextSize(3);
display.setCursor(0, 20);
display.print(об/мин);
дисплей.дисплей();

LastTime = миллис();
}
}

09:47
16
Нет комментариев. Ваш будет первым!

Ссылка появится после регистрации

Похожие модели

Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.