Нет 21 строка в скетче а говорит он первый файл. А первый файл у меня ноль. Я менял count =0; на другую цыфру все равно говорит ноль первый файл в папке.
Может лучше не озвучивать литры, а сделать что-то типа счетчика Гейгера? Каждый оборот счетчика инкрементирует переменную, и частота тиканья устройства зависит от накопленного значения.
Первый литр или два устройство не замечает. А потом начинает зловеще тикать тем чаще, чем больше воды протекло.
А после остановки счетчик начинает декрементировать накопленное значение, или просто сбрасывает его через 3-5-10 минут остановки.
По поводу оптики... Современные счетчики не имеют механической связи между турбинкой и счетным механизмом. Вращение передается постоянным магнитом. А если так, можно попробовать снять информацию об оборотах с помощью датчика Холла, поискав куда его приклеить.
#define buttonPin A1 // вывод кнопки 0 нажата 1 нет uint8_t count,button,button_old; // переменные: кол-во нажатий клавиш,состояние нажатие клавиши сейчас и раньше #include <SoftwareSerial.h> #include <mp3TF.h> #define BusyState 9 // пин BUSY плеера #define c19 19 #define c100 29 #define c1000 38 #define odna 76 #define dve 77 bool fl; mp3TF mp3tf = mp3TF (); char ccc[3]; byte troyka [3]; void setup() { Serial.begin(9600); // Запускаем последовательный порт count =0; // счет с нуля pinMode(buttonPin, INPUT_PULLUP); // вывод на ввод с подтягивающим резистром button_old = digitalRead(buttonPin); SoftwareSerial mySerial(8, 7);// RX, TX mySerial.begin (9600); mp3tf.init (&mySerial); delay(200); pinMode(BusyState,INPUT); mp3tf.volumeSet(30); delay(200); } //------------------------------------------------------------ void ozv(int myfile) { mp3tf.playFolder2(1,myfile); delay(200); while(!digitalRead(BusyState)); } //------------------------------------------------------------ void voicedig(char cc[]) { int a,b,c,d,jj,sme,dp; a=strlen(cc); if (atoi(cc)==0) ozv(1); else { for (byte i=0;i<3;i++) ccc[i]=0; b=a%3;c=a/3;jj=0; for (byte i=0;i<c+1;i++) {strncpy(ccc,cc+jj,b); d=atoi(ccc); a=d; for (byte i=0;i<3;i++) { troyka[2-i]=a%10; a=a/10; } if (d>0) { dp=troyka[2]; if (c-i==1) if (troyka[2]==1) dp=odna; else if(troyka[2]==2) dp=dve; if (troyka[0]>0) ozv(c100+troyka[0]-1); if (troyka[1]>1) ozv(c19+troyka[1]); else if (troyka[1]==1) {ozv(troyka[1]*10+troyka[2]+1); goto m1; } if (troyka[2]>0) ozv(dp+1); m1: a=d%100; if (a>19) a=d%10; if (a==1) sme=0; else if (a>1 && a<5) sme=1; else sme=2; if (c-i>0) ozv(c1000+(c-i-1)*3+sme); }; jj=jj+b;b=3; delay(100); } } } //------------------------------------------------------------ void loop() { delay(30); // задержка защита от дребезга button = digitalRead(buttonPin); if ((button == 0)&&(button_old ==1 )) // счет по фронту { count = count + 2; Serial.println(count); voicedig(count); // while(true); }; button_old=button; }вот сегодня сделал другой код но он всегда говорит первый файл но в порт уже выводит число нажатий
тоесть он говорит 21
count =0;// счет с нуляЗнавал я женщин, которые заявляли "мытье посуды - не мужское дело" и гоняли мужиков от мойки ))
ну так это не обсуждаемо однако, а вытирать оную - подолом и, заметь никакой эзотерики, чистая практика )))
PS если кто не знает почему так и гугл забанили, можно продолжить в отвлечённых
Нет 21 строка в скетче а говорит он первый файл. А первый файл у меня ноль. Я менял count =0; на другую цыфру все равно говорит ноль первый файл в папке.
Знавал я женщин, которые заявляли "мытье посуды - не мужское дело" и гоняли мужиков от мойки ))
Вот именно у меня такая говорит я не так мою лучше она сама
Может лучше не озвучивать литры, а сделать что-то типа счетчика Гейгера? Каждый оборот счетчика инкрементирует переменную, и частота тиканья устройства зависит от накопленного значения.
Первый литр или два устройство не замечает. А потом начинает зловеще тикать тем чаще, чем больше воды протекло.
А после остановки счетчик начинает декрементировать накопленное значение, или просто сбрасывает его через 3-5-10 минут остановки.
По поводу оптики... Современные счетчики не имеют механической связи между турбинкой и счетным механизмом. Вращение передается постоянным магнитом. А если так, можно попробовать снять информацию об оборотах с помощью датчика Холла, поискав куда его приклеить.