Из счётчика оборотов в счётчик длины

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,8,2);

float value=0;
float rev=0;
int rpm;
int oldtime=0;
int time;

void isr()
{
rev++;
}

void setup()
{
lcd.begin();
lcd.begin();
lcd.backlight();
attachInterrupt(0,isr,RISING);
}

void loop()
{
delay(1000);
detachInterrupt(0);
time=millis()-oldtime;
rpm=(rev/time)*60000;
oldtime=millis();
rev=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Tachometer”);
lcd.setCursor(0,1);
lcd.print(“RPM”);
lcd.setCursor(5,1);
lcd.print(rpm);
lcd.print(" ");
attachInterrupt(0,isr,RISING);

}

Что сказать то хотел ?

Код , кстати нужно оформлять по правилам.

Код неправильный чуть менее чем весь.
Особенно понравились типы данных.
Пеши исчо

у меня есть фотомодуль, который считает обороты. А я хочу считать длину кабеля

Ну и для чего тебе тогда скорость вращения нужна стала вдруг ?

я нашел готовый скетч с фотомодулем, хотелось бы переделать его

и что мешает? не помнишь формулу длины окружности? или что-то другое?

А ты умеешь переделывать скетчи?
Или надеешься, что кто-то это сделает за тебя?
Если второе - тебе, скорее всего, в раздел “Ищу исполнителя”.

И еще: ты уже написал два ответа, а скетч в исходном сообщении так и не поправил. Если ты игнорируешь ответы, зачем задавать вопросы? Нехорошо.

я не на кого не надеюсь. Я лишь спросил в чём подвох и склоняюсь к тому что нужно изменить строчку rpm=(rev/time)*60000; и отменить сброс значений

Скорость в твоей задаче - место третье (если не десятое).
Длина вычисляется по формуле L = 2 * PI * R
rev - количество оборотов
Дальше догадаешься?

ЗЫ: Точность у такого измерителя +/- L.

В каком месте Вы это спросили? Не вижу никаких вопросов от Вас.

И ещё, Вам сразу же сказали, что

Но Вы упорно плюёте на это.

Вы таки вставите код правильно? И зададите нормальные вопросы? Или просто подождёте, пока Вас пошлют на юх?

Кстати, “как переделать код?” - не нормальный вопрос. На него я могу ответить сразу - “сесть, почесать репу и переделать”. Вопросы должны быть конкретными. Ну или заказывайте работу за деньги.

Охренеть .Некоторые люди вообще в школу ходили?Если рулетка имеет 2 метра длины , то 10 метров она уже не меряет(образно говоря)? Нужна особая формула “старого мастера Устат Теля”?Не хотят мозгами шевелить совсем.

представляешь, профессиональный поверенный прибор для измерения расстояния сделан на основе колеса…

И что? У него тоже только в одном месте “счет идет” или же по всему колесу? :wink:

особо не смотрел, диаметр колеса сантиметров 30 на вскидку

Я тебе намекну - в данном примере датчик в одном месте установлен. Пока колесо оборот не сделает - ничего не сработает. Поэтому +/- L

установить крыльчатку с необходимым для точности количеством прорезей не вариант?

сам сделал

#include <LiquidCrystal_I2C.h>

float x = 0;
int input = A0;
float state = 0;

LiquidCrystal_I2C lcd(0x27, 8, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.begin(); // initialize the lcd

  // Print a message to the LCD.
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("FILAMENT");
  lcd.setCursor(0, 1);
  lcd.print(x);
  lcd.print("   m");
}
void loop()
{
  int counter = digitalRead(A0);
  if (state == 0)
  {
    switch (counter) {

      case 1 : state = 1; lcd.setCursor (0, 1); x = x + 0.1; lcd.print(x); break;
      case 0 : state = 0; break;

    }
  }

  if (counter == LOW) {
    state = 0;
  }
}

где 0.1 это значение одной риски

А чем энкодер не угодил?

Я вообще запутался, блейадь!
Изначально речь шла про счётчик оборотов. Там одна «метка» на срабатывание, тоже в коде видно. Теперь какие-то риски, 0.1 … брррр.
Ну его нафиг, я видимо туп для этой херни!)))

хороший - дорого, простой не надёжно