Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- byte n = 1; // число лопастей
- float D = 6.38; // диаметр тела в сантиметрах
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- float r_speed, rev_time;
- volatile unsigned long lastflash, flash, lastshow, czas;
- float RPM;
- //String spaces = "";
- void setup() {
- //Serial.begin(9600); // открыть порт
- attachInterrupt(0, sens, FALLING); // подключить прерывание на 2 пин при ponizenii сигнала
- lcd.begin(); // инициализация дисплея
- lcd.backlight(); // включить подсветку
- lcd.setCursor(0, 0); // курсор слева 1 строчка
- lcd.print("rpm "); // слово Обороты
- lcd.setCursor(0, 1); // курсор слева 2 строчка
- lcd.print("speed "); // слово Скорость
- }
- void sens()
- {
- flash = micros() - lastflash; // вычислить время между двумя оборотами
- lastflash = micros(); // запомнить время последнего оборота
- }
- void loop()
- {
- czas = millis()/1000/60;
- // Serial.println (czas);
- if (micros() - lastflash > 4000000) // если сигнала нет больше N - секунд
- {
- RPM = 0; // считаем, что всё стоит и не крутится
- r_speed = 0;
- }
- else
- {
- rev_time = (double) flash / 1000000 * 1; // время одного оборота в секундах, с учётом числа лопастей
- //Serial.println (rev_time); // пишем в порт время одного оборота
- RPM = (double) 60 / rev_time; // обороты в минуту
- r_speed = (double) 3.14159265358979323846 * D*60 / rev_time /100; // скорость точки на радиусе, m/min
- }
- if (millis() - lastshow > 1000) { // каждые 1000 миллисекунд
- lcd.clear();
- lcd.setCursor(0, 0); // курсор слева 1 строчка
- lcd.print("rpm "); // слово RPM
- lcd.setCursor(0, 1); // курсор слева 2 строчка
- lcd.print("speed "); // слово Скорость
- lcd.setCursor(6, 0); // курсор 4 слева 1 строчка
- lcd.print(RPM, 1); // выводим RPM
- lcd.setCursor(12, 0); // курсор 12 слева 1 строка
- lcd.print("min"); // выводим /min
- lcd.setCursor(6, 1); // курсор 10 слева 2 строчка
- lcd.print(r_speed, 1); // выводим скорость
- lcd.setCursor(13, 1); // курсор 14 слева 2 строка
- lcd.print(czas); // выводим czas działania
- lastshow = millis(); // сброс таймера
- }
- }
Advertisement
RAW Paste Data
Copied
Advertisement