Помогите перекинуть дисплей

el666
Offline
Зарегистрирован: 27.12.2019

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

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

el666 пишет:

всем большое спасибо

Не за что! Заходи ещё!

el666
Offline
Зарегистрирован: 27.12.2019

убрал 5 из

 lcd.printNumI(rpm, CENTER, 14, 5);

все отлично  ,большое  спасибо командир

b707
Offline
Зарегистрирован: 26.05.2017

и 700 рублей сэкономил

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

А командир пропал!

Завтра выяснится, что нужно ТС сопли подтереть ещё что-нибудь добавить, и непонятно после какой строки, а тут ... в общем, "мы всегда в ответе за тех, кого приручили".

Поздравляю, командир,

el666 пишет:

ты  настоящий  помощник))))

:-)

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

:-)

el666
Offline
Зарегистрирован: 27.12.2019

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

и если бы мне не интересно было бы вообще что то делать ,собирать,паять,конструировать и т,д

я бы все готовое купил бы   ,,,,,  чуешь логику?

еще раз спасибо всем кто  ХОТЕЛ помочь

sadman41
Offline
Зарегистрирован: 19.10.2016

А что сейчас узнал? Что можно у камандёра вымучать кот?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:
А что сейчас узнал? Что можно у камандёра вымучать кот?
А разве это не ценная информация? Теперь человек знает как впредь решать такие задачи! 

Да и денюшка на месте осталась, что тоже приятно :-)

el666
Offline
Зарегистрирован: 27.12.2019

командир,   они  тебе  завидуют)))))))

ты  настоящий  добрый человек,береги себя

b707
Offline
Зарегистрирован: 26.05.2017

el666 пишет:

ты  настоящий  добрый человек,береги себя

Береги себя, Командир, это ж не последний код...

el666
Offline
Зарегистрирован: 27.12.2019

Всем привет и крепкого здоровья!!!!!!!!

все что мне нужно было  я сделал ,все работает  отлично ,только с другим скетчем

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

 в скетче  который  отредактировали ,так сказать общими усилиями   ,при увеличении  оборотов ,показания уходят в минус  и идет обратный отсчет  при  примерно 6500 об.мин   т.е.  -6500 -6400  -6300 и.тд

 в скетче  который  отредактировал,КОМАНДИР  ,при увеличении  оборотов ,показания уходят в минус  и идет обратный отсчет  при  примерно 10500 об.мин   т.е.  -10500 -10400  -10300 и.тд

а  с третьим  (  рабочий)  все норма  ,,  в чем  там   не состыковка что так    работают?

el666
Offline
Зарегистрирован: 27.12.2019

//taho уходит в минус -6500 об

#include <LCD5110_Graph.h>         
//LCD5110 lcd(8,9,10,12,11); 
LCD5110 lcd(7,6,5,3,4); 
extern unsigned char BigNumbers[];  

volatile float time = 0;
volatile float time_last = 0;
volatile int rpm_array[5] = {0,0,0,0,0};
//////////////////////////////////////////
void setup()
 { 
   //Digital Pin 2 
 attachInterrupt(0,taho, FALLING);
  ///lcd.begin(); 
 lcd.InitLCD();              
 lcd.setFont(BigNumbers);    
 lcd.clrScr();               
 lcd.update();               
 delay(500); 
}
/////////////////////////////////////////////
void loop()
 { int rpm = 0;
  while(1)     
  {delay(400);
      
   lcd.setFont(BigNumbers);     
   lcd.clrScr();                 
   lcd.printNumI(rpm, CENTER, 14);
   lcd.update();                 
    if(time > 0)
     { rpm_array[0] = rpm_array[1];
      rpm_array[1] = rpm_array[2];
      rpm_array[2] = rpm_array[3];
      rpm_array[3] = rpm_array[4];
      rpm_array[4] = 60*(1000000/(time));
      rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4]) / 5;
  }}}
/////////////////////////////////////////////
void taho()
  { time = (micros() - time_last); 
   time_last = micros();
}

 

el666
Offline
Зарегистрирован: 27.12.2019
//komandir     уходит в минус -105000 об/мин 

#include <LCD5110_Graph.h>
LCD5110 lcd(8,9,10,12,11);          
extern unsigned char BigNumbers[];  

volatile float time = 0;
volatile float time_last = 0;
volatile int rpm_array[3] = {0,0,0,0,0};
//////////////////////////////////////////
void setup()
 { 
   //Digital Pin 2 
 attachInterrupt(0,taho, FALLING);
  ///lcd.begin(); 
 lcd.InitLCD();              
 lcd.setFont(BigNumbers);    
 lcd.clrScr();               
 lcd.update();               
 delay(500); 
}
/////////////////////////////////////////////
void loop()
{
  int rpm = 0;
  int old_rpm=1;
  while(1)     
  {
    delay(400);
    if(time > 0)
    {
      rpm_array[0] = rpm_array[1];
      rpm_array[1] = rpm_array[2];
      rpm_array[2] = rpm_array[3];
      rpm_array[3] = rpm_array[4];
      rpm_array[4] = 60*(1000000/(time));
      rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4] ) / 5;
    }
    if (rpm!=old_rpm)
    {                 
      lcd.printNumI(rpm, CENTER, 14);
      lcd.update();
      old_rpm=rpm;
    }        
  }
}
/////////////////////////////////////////////
void taho()
  { time = (micros() - time_last); 
   time_last = micros();
}

 

el666
Offline
Зарегистрирован: 27.12.2019
//РАБОЧИЙ
#include <LCD5110_Graph.h>         
LCD5110 lcd(7,6,5,3,4); 
extern unsigned char BigNumbers[]; 

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

void isr() //interrupt service routine
{
rev++;
}

void setup()
{
 lcd.InitLCD();              
 lcd.setFont(BigNumbers);    
 lcd.clrScr();               
 lcd.update();               
 delay(500); 
attachInterrupt(0,isr,RISING);  //attaching the interrupt
}

void loop()
{
delay(500);
detachInterrupt(0);           //detaches the interrupt
time=millis()-oldtime;        //finds the time 
rpm=((rev/time)*60000)*4;         //calculates rpm  умножил на 4
oldtime=millis();           //saves the current time
rev=0;
  lcd.setFont(BigNumbers);     
  lcd.clrScr();                 
  lcd.printNumI(rpm, CENTER, 14);
  lcd.update();      
attachInterrupt(0,isr,RISING);

}

 

el666
Offline
Зарегистрирован: 27.12.2019

в последнем  скетче   обороты умножил на 4 ,это редукция шкифа   на станке

а изночално тестировал на столе с другим мотором  до 4200 об.мин,  поэтому  этот баг не увидел

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

int надо заменить на unsigned int

а лучше сразу на unsigned long

el666
Offline
Зарегистрирован: 27.12.2019

здесь?

void loop()
{
  unsigned int  rpm = 0;
 unsigned int old_rpm=1;
  while(1)     
  {  
el666
Offline
Зарегистрирован: 27.12.2019

и здесь?

volatile unsigned int rpm_array[3] = {0,0,0,0,0};

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

И там и там

int до 32767

складывается 5 измерений - 32757/5=6553 - дальше пойдет МИНУС

el666
Offline
Зарегистрирован: 27.12.2019

да,, 6553 после шел минус , домой приеду , отредактирую ,проверю,, спас)))