Озвучивание счетчика воды при расходе.

pacha74
Offline
Зарегистрирован: 12.07.2016
#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;
   
 }

вот сегодня сделал другой код но он всегда говорит первый файл но в порт уже выводит  число нажатий

 

pacha74
Offline
Зарегистрирован: 12.07.2016

тоесть он говорит 21

  count =0; // счет с нуля

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

Знавал я женщин, которые заявляли "мытье посуды - не мужское дело" и гоняли мужиков от мойки ))

ну так это не обсуждаемо однако, а вытирать оную - подолом и, заметь никакой эзотерики, чистая практика )))

PS если кто не знает почему так и гугл забанили, можно продолжить в отвлечённых

pacha74
Offline
Зарегистрирован: 12.07.2016

Нет 21 строка в скетче а говорит он первый файл. А первый файл у меня ноль. Я менял count =0; на другую цыфру все равно говорит ноль первый файл в папке.

pacha74
Offline
Зарегистрирован: 12.07.2016

v258 пишет:

Знавал я женщин, которые заявляли "мытье посуды - не мужское дело" и гоняли мужиков от мойки ))


Вот именно у меня такая говорит я не так мою лучше она сама

ИгорьЛабспирт
ИгорьЛабспирт аватар
Offline
Зарегистрирован: 08.03.2021

Может лучше не озвучивать литры, а сделать что-то типа счетчика Гейгера? Каждый оборот счетчика инкрементирует переменную, и частота тиканья устройства зависит от накопленного значения.

Первый литр или два устройство не замечает. А потом начинает зловеще тикать тем чаще, чем больше воды протекло.

А после остановки счетчик начинает декрементировать накопленное значение, или просто сбрасывает его через 3-5-10 минут остановки. 

По поводу оптики... Современные счетчики не имеют механической связи между турбинкой и счетным механизмом. Вращение передается постоянным магнитом. А если так, можно попробовать снять информацию об оборотах с помощью датчика Холла, поискав куда его приклеить.