Нужна помощь в настройке скетча

Всем привет! Сделал всё по инструкции от Alex Измеряем скорость спиннера, или оптический тахометр своими руками - YouTube
Внес изменения по его же инструкции для подсчета количества оборотов, вместо определения скорости. Но у меня при старте кол-во начинается с 1, а не с 0. В чем может быть причина? Спасибо заранее!

  Created 2017
  by AlexGyver
  AlexGyver Home Labs Inc.
*/

byte n = 1;      // число лопастей
float r = 2;   // радиус тела В САНТИМЕТРАХ

#include "LCD_1602_RUS.h"
LCD_1602_RUS lcd(0x27, 16, 2);

float r_speed, rev_time;
volatile unsigned long lastflash, flash, lastshow;
unsigned int RPM;
String spaces = "       ";
int revolutions;
void setup() {
  Serial.begin(9600);                  // открыть порт
  attachInterrupt(0, sens, RISING);    // подключить прерывание на 2 пин при повышении сигнала
  pinMode(3, OUTPUT);                  // 3 пин как выход
  digitalWrite(3, HIGH);               // подать 5 вольт на 3 пин
  lcd.init();                 // инициализация дисплея
  lcd.backlight();            // включить подсветку
  lcd.setCursor(0, 0);        // курсор слева 1 строчка
  lcd.print(L"Об/мин: ");    // слово Обороты
  lcd.setCursor(0, 1);        // курсор слева 2 строчка
  lcd.print(L"Оборотов: ");   // слово Скорость
}
void sens() {
  flash = micros() - lastflash;   // вычислить время между двумя оборотами
  revolutions++;
  lastflash = micros();           // запомнить время последнего оборота
}

void loop() {
  if (micros() - lastflash > 1000000) { // если сигнала нет больше секунды
    RPM = 0;                            // считаем, что всё стоит и не крутится
    r_speed = 0;
     } else {
    rev_time = (float) flash / 1000000 * n;             // время одного оборота в секундах, с учётом числа лопастей
    RPM = (float) 60 / rev_time;                        // обороты в минуту
    r_speed = (float) 2 * 3.1415 * r / 100 / rev_time * 3.6;  // скорость точки на радиусе, км/ч
  }
  if (millis() - lastshow > 200) {  // кадждые 300 миллисекунд
    lcd.setCursor(10, 0);  // курсор 10 слева 1 строчка
    lcd.print(RPM);       // выводим RPM
    lcd.print(spaces);    // очищаем цифры с прошлого вывода
    lcd.setCursor(10, 1); // курсор 10 слева 2 строчка
    lcd.print(revolutions);   // выводим циклы
    lcd.print(spaces);    // очищаем цифры с прошлого вывода
    lastshow = millis();  // сброс таймера
  }
} ```

Пробовал замерять без движения?

Молодец!

И с вопросами, надо также обращаться к Alex. У него для этого специальный сайт имеется.

3 лайка

Что замерять? При запуске на дисплее отоброжается 1. Отсчет циклов начинается с 1+. Нужно,что бы начиналось с 0.

Ваше мнение очень важно для нас! Оставайтесь на связи! )

Хамите, парниша? Ну готовьтесь, сейчас вам помощи осыплют мешка на два :sweat_smile:

Собственно так же как и ваша проблема нам. Если нет желания решать проблему, то зачем вы сюда пришли?

Здесь новая версия форума, поэтому не все важные моменты успели перекочевать сюда со старого.
Изложу вкратце:
Алекс Гайвер - талантливый блогер, но весьма посредственный программист. Причем с амбициями. Ему неоднократно указывали на явные ошибки в составленных им программах, но без толку.
В общем, написанный им код не рекомендуется к использованию. И вычищать из него ошибки на этом форуме никто не будет. На специализированный форум, где это по идее должны были бы делать, Вам указали.

Ну и на будущее: если хотите получить помощь, к вопросу нужно добавлять не только код, но и схему подключения.
Не видя схемы, трудно что-нибудь сказать, но навскидку я бы перенес attachInterrupt() в конец setup(), возможно даже, добавив небольшую задержку перед ней.

А здесь че, дедовщина? ) В адрес новичков можно хамить, а в обратку нельзя? )))

Правильно ли я понимаю, что если бы не указал автора кода и почистил его имя в самом коде, то мне сразу же, перебивая друг-друга кинулись бы помогать с проблемой? Т.е. из-за личной неприязни к конкретному блогеру, данное сообщество посылает лесом всех, кто решил реализовать его идею, впервые прикоснувшись к ардуино и программированию? Я ничего не пропустил?
Предвосхищая Ваши оправдания, я Вам скажу, что это ущербная стратегия специалистов и специализированного ресурса в целом. Этот блогер, каким бы кривым не был его код, делает для популяризации данной темы и собственно привлечения юзеров на данный ресурс, гораздо больше всех вместе взятых здешних снобов.

Понял, учту.

В полной мере для интернет ресурса. Обычную то застали?

Во-первых, да, дедовщина (правила на новый форум пока не перенесли, но новички и на старом их не читали). Во-вторых, в ваш адрес хамства не было

Ваше мнение очень важно для нас (с). У вас ущербное понимание вопроса - это не специализированный, а хоббийный ресурс. Здесь не занимаются ни популяризацией темы, ни привлечением новых пользователей, соответственно, никто вам ничего не должен. В том числе разбирать ваши (или не ваши) ошибки. Хотите, чтобы вам помогли, сделайте так, чтобы вам захотели помочь. Но Гайвера здесь недолюбливают не без оснований. Вот и вы тоже с его ошибками у него помощи не получили :wink:

4 лайка

Совершенно непонятно, почему Вы до сих пор здесь, а не на форуме Гайвера.

2 лайка

прямо таки и недолюбливают? да нормально относимся, нормально, прикольный пацан …у него просто времени нет вылизывать коды…вы к нему на форум сходите…вот там настоящая дедовщина…банят влёт )))

Теперь по существу вопроса - с типами переменных ты запутался, при округлении будет округлять в большую сторону то-есть, 0.00001 == 1

1 лайк

Пацан прикольный, а коды - дерьмо. А народ с этим дерьмом почему-то к нам идет

2 лайка

тут можно было ответить словами из анекдота …зато их много )))
PS по кодам - не мне судить…но к примеру библиотека кнопок у него неплохо работает

Вопрос не в том, что работает, а в том, что разбираться со своими ошибками человек не хочет, а народ сюда с ними идет

2 лайка

Да.

Не нравится - я Вам дал ссылку правильного форума для вопросов по кодам гивера.

2 лайка

Помогаю с кодами гивера на материальной основе.
ЗЫ: от изначального кода обычно там мало что остается

1 лайк