Skip to content

Commit d296bd4

Browse files
authored
v 0.0.4
1 parent 5873c0c commit d296bd4

File tree

1 file changed

+18
-23
lines changed

1 file changed

+18
-23
lines changed

water_count.ino

+18-23
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
//////////////////////////////////////////////////////////////////////////////////////////////
66

77
#define DEBUG 1 // Выдача отладочной информации в COM-порт
8-
#define RESET 0 // Установка первоначального "0"
8+
#define RESET 1 // Установка первоначального "0"
99
//////////////////////////////////////////////////////////////////////////////////////////////
1010
// Пины для подключения устройств
1111
#define BUTTON_PIN 6 //Пин с конпкой
@@ -14,13 +14,13 @@
1414
#define COUNTERS 2 //Колличество счетчиков в системе
1515
//////////////////////////////////////////////////////////////////////////////////////////////
1616

17-
unsigned int CounterHighBase[COUNTERS] = {0000,0000}; // Если значение отлично от нуля - то пишем его в качестве базового
18-
unsigned int CounterLowBase[COUNTERS] = {130,80}; // Если значение отлично от нуля - то пишем его в качестве базового
17+
unsigned int CounterHighBase[COUNTERS] = {00000,00000}; // Если значение отлично от нуля - то пишем его в качестве базового
18+
unsigned int CounterLowBase[COUNTERS] = {180,180}; // Если значение отлично от нуля - то пишем его в качестве базового
1919
int counterReadDelay = 0; // Текущая задержка считывания счетчика
2020
// (нужна для уверенной отработки переключения счетчика)
2121
int CounterPin[COUNTERS] = {COLD_COUNTER_PIN, HOT_COUNTER_PIN}; // Пины
22-
int CounterHighAddress[COUNTERS] = {0x30, 0x40}; //Адреса EEPROM для младшего слова (кубометры) 4 байта
23-
int CounterLowAddress[COUNTERS] = {0x38, 0x48}; //Адреса EEPROM для младшего слова (литры) 2 байта
22+
int CounterHighAddress[COUNTERS] = {0x30, 0x3A}; //Адреса EEPROM для младшего слова (кубометры) 4 байта
23+
int CounterLowAddress[COUNTERS] = {0x38, 0x42}; //Адреса EEPROM для младшего слова (литры) 2 байта
2424
char *CounterName[COUNTERS] = {"Cold :", "Hot :"}; // Названия счетчиков для вывода на экран
2525
Bounce CounterBouncer[COUNTERS] = {}; // Формируем для счетчиков Bounce объекты
2626
//////////////////////////////////////////////////////////////////////////////////////////////
@@ -46,10 +46,10 @@ void setup() {
4646
#endif
4747
for (int i=0; i<COUNTERS; i++)
4848
{
49-
pinMode(CounterPin[i], INPUT); // Инициализируем пин
49+
pinMode(CounterPin[i], INPUT_PULLUP); // Инициализируем пин
5050
digitalWrite(CounterPin[i], HIGH); // Включаем подтягивающий резистор
51-
CounterBouncer[i].attach(CounterPin[i]); // Настраиваем Bouncer
52-
CounterBouncer[i].interval(10); // и прописываем ему интервал дребезга
51+
CounterBouncer[i].attach(CounterPin[i], INPUT_PULLUP); // Настраиваем Bouncer
52+
CounterBouncer[i].interval(25); // и прописываем ему интервал дребезга
5353
}
5454

5555
lcd.init(); // Инициализируем дисплей
@@ -73,7 +73,7 @@ delay (1);
7373
}
7474

7575

76-
void printPos(byte col, byte row, char* str)
76+
void printPos(byte col, byte row, char *str)
7777
{
7878
lcd.setCursor(col, row);
7979
lcd.print(str);
@@ -129,24 +129,19 @@ void readCounter()
129129
counterReadDelay = 0;
130130
for (int i=0; i<COUNTERS; i++)
131131
{
132-
boolean changed = CounterBouncer[i].update();
133-
//Serial.println(changed);
134-
if ( changed ) {
135-
int value = CounterBouncer[i].read();
136-
if ( value == LOW) // Если значение датчика стало ЗАМКНУТО, т.е сработал счетчик
137-
{
138-
#if DEBUG
139-
Serial.print("Counter [ "); Serial.print(CounterName[i]); Serial.print("] switched ");
140-
#endif
132+
CounterBouncer[i].update();
133+
if ( CounterBouncer[i].fell()) {
134+
141135
if (CounterLowBase[i]<990) // если не произошло перехода на кубометры - увеличиваем счетчик литров на 10
142136
{
143137
CounterLowBase[i]+=10;
144138
printLow(13,i,CounterLowBase[i]);
145139
EEPROM.writeInt (CounterLowAddress[i],CounterLowBase[i]);
146140
#if DEBUG
147-
Serial.print("Write to EEPROM "); Serial.print(i,DEC ); Serial.print(" counter. Name "); Serial.println(CounterName[i]);
141+
Serial.print("Write to EEPROM "); Serial.print(i,DEC ); Serial.println(" counter. Name ");
142+
//Serial.println(CounterName[i]);
148143
Serial.print(CounterHighAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterHighBase[i]);
149-
Serial.print(CounterLowAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterLowBase[i] );
144+
Serial.print(CounterLowAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterLowBase[i] );
150145
#endif
151146
}
152147
else // иначе, если произошел переход - обнуляем счетчик литров и увеличиваем счетчик кубометров на 1
@@ -158,12 +153,12 @@ void readCounter()
158153
EEPROM.writeInt( CounterLowAddress[i], CounterLowBase[i] );
159154
EEPROM.writeInt( CounterHighAddress[i], CounterHighBase[i]);
160155
#if DEBUG
161-
Serial.print("Write to EEPROM "); Serial.print(i,DEC ); Serial.print(" counter. Name "); Serial.println(CounterName[i]);
156+
Serial.print("Write to EEPROM "); Serial.print(i,DEC ); Serial.println(" counter. Name ");
157+
//Serial.println( CounterName[i] );
162158
Serial.print(CounterHighAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterHighBase[i]);
163-
Serial.print(CounterLowAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterLowBase[i] );
159+
Serial.print(CounterLowAddress[i] ,HEX); Serial.print(" => "); Serial.println(CounterLowBase[i] );
164160
#endif
165161
}
166-
}
167162
}
168163
}
169164
}

0 commit comments

Comments
 (0)