Завтра выяснится, что нужно ТС сопли подтереть ещё что-нибудь добавить, и непонятно после какой строки, а тут ... в общем, "мы всегда в ответе за тех, кого приручили".
все что мне нужно было я сделал ,все работает отлично ,только с другим скетчем
у меня просто спортивный интерес так сказать ,,,,хочу все знать,,,
в скетче который отредактировали ,так сказать общими усилиями ,при увеличении оборотов ,показания уходят в минус и идет обратный отсчет при примерно 6500 об.мин т.е. -6500 -6400 -6300 и.тд
в скетче который отредактировал,КОМАНДИР ,при увеличении оборотов ,показания уходят в минус и идет обратный отсчет при примерно 10500 об.мин т.е. -10500 -10400 -10300 и.тд
а с третьим ( рабочий) все норма ,, в чем там не состыковка что так работают?
спасибо командир, ваш скетч работает , только перед первым числом крякозябра непонятная))
всем большое спасибо
Не за что! Заходи ещё!
убрал 5 из
lcd.printNumI(rpm, CENTER, 14, 5);
все отлично ,большое спасибо командир
и 700 рублей сэкономил
А командир п
ропал!Завтра выяснится, что нужно
ТС сопли подтеретьещё что-нибудь добавить, и непонятно после какой строки, а тут ... в общем, "мы всегда в ответе за тех, кого приручили".Поздравляю, командир,
ты настоящий помощник))))
:-)
:-)
самое ценное не деньги, а информация, если бы я заплатил и получил бы готовый скетч ,я бы не узнал что и как делать,
и если бы мне не интересно было бы вообще что то делать ,собирать,паять,конструировать и т,д
я бы все готовое купил бы ,,,,, чуешь логику?
еще раз спасибо всем кто ХОТЕЛ помочь
А что сейчас узнал? Что можно у камандёра вымучать кот?
Да и денюшка на месте осталась, что тоже приятно :-)
командир, они тебе завидуют)))))))
ты настоящий добрый человек,береги себя
ты настоящий добрый человек,береги себя
Береги себя, Командир, это ж не последний код...
Всем привет и крепкого здоровья!!!!!!!!
все что мне нужно было я сделал ,все работает отлично ,только с другим скетчем
у меня просто спортивный интерес так сказать ,,,,хочу все знать,,,
в скетче который отредактировали ,так сказать общими усилиями ,при увеличении оборотов ,показания уходят в минус и идет обратный отсчет при примерно 6500 об.мин т.е. -6500 -6400 -6300 и.тд
в скетче который отредактировал,КОМАНДИР ,при увеличении оборотов ,показания уходят в минус и идет обратный отсчет при примерно 10500 об.мин т.е. -10500 -10400 -10300 и.тд
а с третьим ( рабочий) все норма ,, в чем там не состыковка что так работают?
//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(); }//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(); }//РАБОЧИЙ #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); }в последнем скетче обороты умножил на 4 ,это редукция шкифа на станке
а изночално тестировал на столе с другим мотором до 4200 об.мин, поэтому этот баг не увидел
int надо заменить на unsigned int
а лучше сразу на unsigned long
здесь?
и здесь?
volatileunsigned intrpm_array[3] = {0,0,0,0,0};И там и там
int до 32767
складывается 5 измерений - 32757/5=6553 - дальше пойдет МИНУС
да,, 6553 после шел минус , домой приеду , отредактирую ,проверю,, спас)))