Собрал вендинговый аппарат воды из реле, монетоприемника HX-616, датчика расхода воды YF-S201. Мой код не работает, нужно подкорректировать код или при необходимости, полностью переписать.
001 | #include <LCD_1602_RUS.h> |
002 | LCD_1602_RUS lcd(0x27, 16, 2); |
007 | const int sensor_pulse =12; |
011 | volatile int pulse = 0; |
012 | volatile unsigned long timelastPulse = 0; |
013 | boolean coinInsert = false ; |
016 | boolean currentstart_stop = LOW; |
017 | boolean laststart_stop =LOW; |
018 | boolean lastsensor_pulse = LOW; |
019 | boolean currentsensor_pulse = LOW; |
020 | boolean relayState = LOW; |
029 | pinMode(relay, OUTPUT); |
030 | pinMode(coinpin,INPUT_PULLUP); |
037 | boolean debounce(boolean last, int pin) |
039 | boolean current = digitalRead(pin); |
043 | current = digitalRead(pin); |
053 | currentstart_stop = debounce(laststart_stop, start_stop); |
054 | currentsensor_pulse = debounce(lastsensor_pulse, sensor_pulse); |
058 | if (currentstart_stop == HIGH && laststart_stop == LOW){ |
060 | if (relayState == HIGH){ |
061 | digitalWrite(relay, LOW); |
065 | digitalWrite(relay, HIGH); |
070 | laststart_stop = currentstart_stop; |
076 | if (relayState == LOW){ |
078 | attachInterrupt(digitalPinToInterrupt(coinpin),coinInterrupt,FALLING); |
080 | unsigned long lastTime = millis() - timelastPulse; |
081 | if ((pulse > 0) && (lastTime > 24)){ |
088 | set_point = set_point +500; |
091 | else if (credits == 2){ |
092 | set_point = set_point +1000; |
095 | else if (credits == 3){ |
096 | set_point = set_point +1500; |
099 | else if (credits == 4){ |
100 | set_point = set_point +2000; |
103 | else if (credits == 5){ |
104 | set_point = set_point +2500; |
107 | else if (credits == 6){ |
108 | set_point = set_point +3000; |
111 | else if (credits == 7){ |
112 | set_point = set_point +3500; |
115 | else if (credits == 8){ |
116 | set_point = set_point +4000; |
119 | else if (credits == 9){ |
120 | set_point = set_point +4500; |
123 | else if (credits == 10){ |
124 | set_point = set_point +5000; |
136 | if (relayState == HIGH){ |
137 | if (lastsensor_pulse== LOW && currentsensor_pulse == HIGH){ |
138 | counter = counter + cal; |
141 | lastsensor_pulse = currentsensor_pulse; |
145 | TotalCount = TotalCount + 10; |
150 | lcd.print(set_point); |
152 | lcd.print(TotalCount); |
155 | if (set_point <= TotalCount){ |
157 | digitalWrite(relay, LOW); |
167 | timelastPulse = millis(); |
3тр, если монетник рабочий и подключен правильно
man9913@mail.ru