Помогите изправить код _Автомойка_
- Войдите на сайт для отправки комментариев
Вс, 24/01/2016 - 11:42
//Arduino AUTOWASH TIMER //Vasily Stefanov//6.1.2016 #include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); int Timer1Counting = 0; int Timer2Counting = 0; int Acces = 0; int pinButton1 = 3; int pinButton2 = 11; int Coin = 13; int relayPin1=12; int relayPin2=2; int player1ButtonState = 0; int player2ButtonState = 0; int CoinState = 0; void setup() { //pinMode(buzzerPin, OUTPUT); pinMode(pinButton1, INPUT); pinMode(pinButton2, INPUT); pinMode(Coin, INPUT); digitalWrite(Coin, HIGH); pinMode(relayPin1,OUTPUT); pinMode(relayPin2,OUTPUT); pinMode(relayPin1,HIGH); pinMode(relayPin2,HIGH); digitalWrite(pinButton1, HIGH); digitalWrite(pinButton2, HIGH); Serial.begin(9600); lcd.begin(16, 2); } long player2Time = 40000; long player2Minutes = 0; long player2Seconds = 0; long player2LastCheck = millis(); long player1Time = 40000; long player1Minutes = 0; long player1Seconds = 0; long player1LastCheck = millis(); void loop() { if(Acces == 0) { lcd.setCursor(0,0); lcd.print("< INSERT COIN "); lcd.setCursor(0,1); lcd.print("AND PRESS 1 / 2"); } CoinState = digitalRead(Coin); if ( CoinState==LOW) { Acces = 1; lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(0,0); lcd.print("Timer1 Timer2"); } digitalWrite(relayPin1,HIGH); digitalWrite(relayPin2,HIGH); player1ButtonState = digitalRead(pinButton1); player2ButtonState = digitalRead(pinButton2); if ((player1ButtonState == LOW)&&(Acces == 1)) { delay(1000); Timer1Counting = 1; } if((player2ButtonState == LOW)&&(Acces == 1)) { delay(1000); Timer2Counting = 1; } timers(); if (player1Time<=0) { Timer1Counting = 0; player1Time = 40000; Acces = 0; lcd.setCursor(10, 1); lcd.print(" "); } if (player2Time<=0) { Timer2Counting = 0; player2Time = 40000; Acces = 0; lcd.setCursor(2, 1); lcd.print(" "); } if ((player1ButtonState == LOW)&&(Timer2Counting == 1)) { Timer2Counting = 0; lcd.setCursor(2, 1); lcd.print(" "); Timer1Counting = 1; player1Time -= ((millis() - player2LastCheck)); player2LastCheck = millis(); } if ((player2ButtonState == LOW)&&(Timer1Counting == 1)) { Timer1Counting = 0; lcd.setCursor(10, 1); lcd.print(" "); Timer2Counting = 1; player2Time -= ((millis() - player1LastCheck)); player1LastCheck = millis(); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void timers() { if (Timer1Counting == 1) { digitalWrite(relayPin1,LOW); lcd.setCursor(10, 1); player1Time -= ((millis() - player1LastCheck)); player1LastCheck = millis(); player1Minutes = floor(player1Time / 60000); player1Seconds = floor(player1Time / 1000) - player1Minutes * 60; lcd.print(player1Minutes); lcd.print(":"); if (player1Seconds < 10) { lcd.print(0); } lcd.print(player1Seconds); } //********************************************************************************************************************* if (Timer2Counting == 1) { digitalWrite(relayPin2,LOW); lcd.setCursor(2, 1); player2Time -= ((millis() - player2LastCheck)); player2LastCheck = millis(); player2Minutes = floor(player2Time / 60000); player2Seconds = floor(player2Time / 1000) - player2Minutes * 60; //Print the minutes, then a colon, then the seconds. lcd.print(player2Minutes); lcd.print(":"); if (player2Seconds < 10) { lcd.print(0); } lcd.print(player2Seconds); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ТС суров : желающие помочь должны сами догадаться, что именно надо исправить.
Здраствуйте нужна помощь в разработке таймера для автомойки для друга сам я не програмист.Логика работы устройства :есть монетник которъй дает разрешение на работу нашего устройства .
Если нет разрешения на LCD отобажается INSERT COIN.....
Когда опускаем монету есть разрешение и на дисплее появляется выбор Timer1 или Timer2 .Нажимаем Кнопку1 или Кнопку2 , если нажата кнопка 1 запускается таймер 1 отображаетса время на дисплее и реле 1 срабатывает . Допустим таймер1 работает время осталось 1мин и в етот момент мы нажимаем кнопку2 запускается таймер 2 но время таймера 2 становится= таймер1 т.е. 1мин
Устройство срабатывает коректно но только один раз потом начинаютса глюки с временами ,они не переносятся правильно с таймера на таймер.
ИМХО. Вот потому так и живем.
Я не программист, я просто содержу автомат который берет бабки за услуги. Но заплатить спецу чтоб его запрограммировали не могу или не хочу.
Я начинаюший, не какого автомата не содержу ни каких бабок никто мне не дает... Занимаюсь такими проектами чтобы научится ....