
Интернет-магазин «Неглупый Дом»
Магнит на спице колеса раз за оборот проходит мимо геркона KY-025, закреплённого на вилке — зная длину окружности колеса, Arduino считает скорость и общий пробег на LCD1602.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int reedPin = 2;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float wheelCircumferenceM = 2.1; // длина окружности колеса, метры
volatile unsigned long lastPulse = 0;
volatile unsigned long interval = 0;
float totalDistanceKm = 0;
bool lastState = HIGH;
void setup() {
pinMode(reedPin, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
bool state = digitalRead(reedPin);
if (state == HIGH && lastState == LOW) {
unsigned long now = millis();
interval = now - lastPulse;
lastPulse = now;
totalDistanceKm += wheelCircumferenceM / 1000.0;
}
lastState = state;
float speedKmh = (interval > 0 && millis() - lastPulse < 2000)
? (wheelCircumferenceM / 1000.0) / (interval / 3600000.0) : 0;
lcd.setCursor(0, 0);
lcd.print("Speed: ");
lcd.print(speedKmh);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(totalDistanceKm);
lcd.print("km ");
delay(200);
}
`wheelCircumferenceM` нужно измерить рулеткой по факту (длина окружности колеса) — от этого числа напрямую зависит точность показаний скорости и пробега.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 312 ₽ 281 ₽ (экономия 31 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.