Озвучивание счетчика воды при расходе.
- Войдите на сайт для отправки комментариев
Пнд, 08/02/2021 - 10:57
Всем привет. У меня жена очень похожа на енота полоскуна. Также любит полоскать.
Всем привет. У меня жена очень похожа на енота полоскуна. Также любит полоскать.
А у нас водопровод. Вот.
Купите ей стиральную машину. Может добрее станет))
"...пока не купите стиральную машинку Снежинка"!
Мда, озвучите счётчик фразой "куда, льёшь, дура", а Ваша жена придёт сюда с вопросом как озвучить электросчётчик когда Вы свой компьютер (или что Вы больше всего любите) включаете :-)
Мда, озвучите счётчик фразой "куда, льёшь, дура", а Ваша жена придёт сюда с вопросом как озвучить электросчётчик когда Вы свой компьютер (или что Вы больше всего любите) включаете :-)
просто поменяет мужа на того, кто в состоянии заработать хотябы на коммуналку...
ТС, а может ей хорошу стиральную машину купить? С качественным режимом полоскания?
Всем привет. У меня жена очень похожа на енота полоскуна. Также любит полоскать.
Нельзя лишать женщину невинных удовольствий. Себе дороже выйдет )))
эт точно, начнет разговаривать и не дай бог думать, платите исправно комуналку, не гневите ...
Всем привет. У меня жена очень похожа на енота полоскуна. Также любит полоскать.
Нельзя лишать женщину невинных удовольствий. Себе дороже выйдет )))
Обидится и больше не поласкает....
Всем привет. У меня жена очень похожа на енота полоскуна. Также любит полоскать.
Нельзя лишать женщину невинных удовольствий. Себе дороже выйдет )))
Обидится и больше не поласкает....
это да, сказку про Шахерезаду не забываем, которая вместо ласки всю ночь рассказывала сказки )))
стиральная машина-Шахерезада - отпустите своего енота в лес.
Так вот чтоб помыть Одну кружку после чая нужно ей примерно 15-20 литров воды! А тарелку вообще молчу. Вот и хочу ,чтоб когда она слышала сколько воды у нее утекает. Нужно сначала придумать как снять расход воды с счетчика. Но счетчик под пломбой. Нужно ка-кто считывать количество оборотов. Пробовал снимать количество импульсов при помощи лазерной указки и фоторезистора. Не стабильно. Сейчас попробовал при помощи ик датчика препятствия, уже лучше. Теперь нужно соединить два скетча, считает количество оборотов и конвертирует его в литры и выводит на 1602. На дисплее выводится два показания "сейчас -" и "всего-". Так вот нашел скетч где есть озвучка любых чисел. Он для МР3 модуля.
#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() { SoftwareSerial mySerial(8, 7); // RX, TX mySerial.begin (9600); mp3tf.init (&mySerial); delay(200); pinMode(BusyState,INPUT); mp3tf.volumeSet(22); 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() { voicedig("91352412028529003471097014534460011762920"); while(true); }Я только могу пока переделывать чужие скетчи и пока не все понимаю в коде. Вот я прошу подсказать что нужно написать чтоб вместо заданной константы чисел этот скетч говорил то, что выводится на дисплей. Я понимаю что вместо постоянных цифр нужно вставить показания. Но не знаю как.
беги от неё - дальше будет хуже.
не могу люблю ее
Счётчик-водомер на импульсный поменяй.
Вот я прошу подсказать что нужно написать чтоб вместо заданной константы чисел этот скетч говорил то, что выводится на дисплей. Я понимаю что вместо постоянных цифр нужно вставить показания. Но не знаю как.
Не "что", а "куда" - в раздел "Ищу исполнителя".
он меряет десятки литров а моим способом точность измерения почти 20 мл
Купи посудомойку. А лучше сам собери. Тут в соседней теме есть инструкция как собрать ПММ из говна и палок
. Вот я прошу подсказать что нужно написать чтоб вместо заданной константы чисел этот скетч говорил то, что выводится на дисплей. Я понимаю что вместо постоянных цифр нужно вставить показания. Но не знаю как.
Я не так выразился. Я хотел чтоб подсказали как это можно в коде написать. Я не пойму почему когда я подставляю вместо цифр переменную он его не произносит.
mp3TF mp3tf = mp3TF (); char ccc[3]; byte troyka [3]; //------------------------------------------------------------ void setup() { 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() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } voicedig(str); // voicedig("6754"); while(true); }я пытался это сделать через сериал порт, как бы отправить в ардуинку число а она его произносит. Что не так ?
pacha74, привыкайте сразу правильно форматировать текст скетча. То форматирование, что у Вас сейчас, сбивает Вас с толку и не дает самостоятельно найти ошибку.
Купи посудомойку. А лучше сам собери. Тут в соседней теме есть инструкция как собрать ПММ из говна и палок
Спасибо конечно но хотелось бы чтобы счетчик все таки озвучивал свой расход. Я думаю что это поможет.
Я живу в селе и выкачивать яму каждый месяц из за ее полосканий надоело. Ведь в цирке медведей учат на велосипеде ездить. Вот и я уверен если после озвучивания каждого литра воды у нее сработают тормоза.
Я не пойму почему когда я подставляю вместо цифр переменную он его не произносит.
потому что процедура "говорения" хочет тип char[]. а ты ей подсовываешь String
Еще str объявляется в строке 64 внутри условия, и после выхода из условия может не существовать.
68voicedig(str);69// voicedig("");Вот почему цифры в коавычках озвучивает, переменную voicedig(str); Нет? В мониторе порта то пишет.
68voicedig(str);69// voicedig("");Вот почему цифры в коавычках озвучивает, переменную voicedig(str); Нет? В мониторе порта то пишет.
Еще str объявляется в строке 64 внутри условия, и после выхода из условия может не существовать.
+100
voicedig(str); надо перенести на 1 строчку вверх
Я живу в селе и выкачивать яму каждый месяц из за ее полосканий надоело.
Пусть сама качает. Поверь, очень быстро сама перейдет на сухой способ очистки посуды))
Качает машина за деньги. А вычерпывать ведром заставить мне ее жалко.
Еще str объявляется в строке 64 внутри условия, и после выхода из условия может не существовать.
+100
voicedig(str); надо перенести на 1 строчку вверх
точно я пропустил что voicedig(str); стоит за скобкой. Сейчас попробую
ничего не говорит и перестало писать в мониторе порта
Спасибо конечно но хотелось бы чтобы счетчик все таки озвучивал свой расход. Я думаю что это поможет.
Скорее всего это начнет раздражать. В том числе и вас. Таки соглашусь с советовавшими купить посудомойку
void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } } этот код выводит числа а в этом нет теперь, что не так #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() { 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() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } // voicedig(str); voicedig("6754"); while(true); }void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } } этот код выводит числа а в этом нет теперь, что не так #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() { 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() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } // voicedig(str); voicedig("6754"); while(true); }блин все в одну кучу слил
void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } }так пишет в порт
а в этом нет. вроде все одно и тоже или он передает на 7,8 пины
#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() { 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() { if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); } // voicedig(str); voicedig("6754"); while(true); }Я не пойму почему когда я подставляю вместо цифр переменную он его не произносит.
потому что процедура "говорения" хочет тип char[]. а ты ей подсовываешь String
а где это поменять я не очень в этом понимаю String-обьект а char-массив символов. Где все это прописать или объявить.
https://www.arduino.cc/reference/en/language/variables/data-types/string...
68voicedig(str);69// voicedig("");Вот почему цифры в коавычках озвучивает, переменную voicedig(str); Нет? В мониторе порта то пишет.
Качает машина за деньги. А вычерпывать ведром заставить мне ее жалко.
усилия безполезны, видимо детство прошло в квартире с централизованной канализацией, а сельские девчата моют ворох посуды в трёх чашках воды )))
Я читаю только не всё понимаю что мне советуют если бы я также разбирался как те кто советуют или даже в 5раз меньше я бы тут не просил помочь понять принцип кода говорили
"Образ сурка ведете жизни". Напомнило.
Блин аж самому смешно стало когда прочёл что написал. Нет я не такой.
Лучше бы магнит повесил.
А на яму ,куда вода течет,что вешать?
Дык купи посудомойку, вот тебе и экономия. А если хочешь сэкономить прям совсем, то перекрой подачу воды. Ну и что что вши заведутся, за то бесплатно :)
Че так странно... Вода из водопровода, а канализации нет ?
Если сравнить стоимость подводки водопровода и канализации - ничего удивительного.
Канализации может не быть физически, а водопровод есть почти везде
Че так странно... Вода из водопровода, а канализации нет ?
такое нередко. У моей жены так в материнском доме, так что у меня жена тренированная, нет таких проблем, как у ТС :)
TC, просто возьми это нелёхкое бремя мытья посуды в свои руки.
Знавал я женщин, которые заявляли "мытье посуды - не мужское дело" и гоняли мужиков от мойки ))