Помогите изправить код _Автомойка_
- Войдите на сайт для отправки комментариев
Вс, 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мин
Устройство срабатывает коректно но только один раз потом начинаютса глюки с временами ,они не переносятся правильно с таймера на таймер.
ИМХО. Вот потому так и живем.
Я не программист, я просто содержу автомат который берет бабки за услуги. Но заплатить спецу чтоб его запрограммировали не могу или не хочу.
Я начинаюший, не какого автомата не содержу ни каких бабок никто мне не дает... Занимаюсь такими проектами чтобы научится ....