Помогите изправить код _Автомойка_

vasily555
Offline
Зарегистрирован: 24.01.2016





    //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);
}
  
}      
      
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 
 
  

   
   
   
   
  

 

Araris
Offline
Зарегистрирован: 09.11.2012

ТС суров : желающие помочь должны сами догадаться, что именно надо исправить.

vasily555
Offline
Зарегистрирован: 24.01.2016

Здраствуйте нужна помощь в разработке таймера для автомойки для друга сам я не програмист.Логика работы устройства  :есть монетник  которъй дает разрешение на работу нашего устройства .

Если  нет разрешения  на LCD  отобажается  INSERT COIN..... 

Когда  опускаем монету  есть разрешение  и на дисплее появляется выбор  Timer1 или Timer2 .Нажимаем  Кнопку1 или Кнопку2  ,  если нажата кнопка 1  запускается таймер 1 отображаетса время  на дисплее   и реле 1 срабатывает  .  Допустим таймер1 работает  время осталось 1мин  и в етот момент мы нажимаем кнопку2 запускается таймер  2 но время таймера  2 становится= таймер1 т.е.   1мин 

 

vasily555
Offline
Зарегистрирован: 24.01.2016

Устройство срабатывает коректно но только один раз  потом начинаютса глюки  с  временами  ,они не переносятся правильно с таймера на таймер.

 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

ИМХО. Вот потому так и живем.

Я не программист, я просто содержу автомат который берет бабки за услуги. Но заплатить спецу чтоб его запрограммировали не могу или не хочу.

 

vasily555
Offline
Зарегистрирован: 24.01.2016

Я  начинаюший,  не какого автомата не содержу  ни каких бабок  никто мне не дает...  Занимаюсь  такими проектами  чтобы научится  ....