Аркадный автомат код таймера
- Войдите на сайт для отправки комментариев
Ср, 18/12/2019 - 12:14
Делаем с сыном аркадный автомат, ну и решили сделать его полностью "аркадным" т.е. заказали манетоприемник. Увидев цены на таймеры к манетоприемникам решили сделать на Ардуино. Накопал в интернете схему и скетч, Но скетч почему то не работает пишет на экране Hello и Coin Ready и все не реагирует на импульсы с манетоприемника (имитирую). Прошу помощи!
// WEI-YA HI-07 const int moneyPin3=3; const int button1Pin = 2; //Кнопка 1 пин 2 const int add5V = 10; const int ledPin = 13; //Реле float sum=0.0; //Сумма int time; //Время int button1State; int moneyPin; int pulse1=0; unsigned long timeCount1=0; // дисплей WH1602 #include <LiquidCrystal.h> //Библиотека LiquidCrystal lcd(12,11,7,6,5,4); byte p20[8] = { //Создаем символы для анимации заряда B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000, }; byte p40[8] = { B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000, }; byte p60[8] = { B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100, }; byte p80[8] = { B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110, }; byte p100[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111, }; void setup() { Serial.begin(9600); //Подключаем монитор порта для просмотра данных на компьютере pinMode(button1Pin, INPUT); //Кнопка, на прием pinMode(ledPin, OUTPUT); //13, на подачу pinMode(moneyPin3,INPUT); //Монетник, на прием pinMode(add5V,INPUT); //+5V pin attachInterrupt(1,count_pulse1,FALLING); Serial.println("Coin ready!"); lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,1); lcd.print("Coin ready!"); lcd.setCursor(0,0); lcd.print("Hello=)"); lcd.createChar(0, p20); //Создаем перемение для анимации заряда (j) lcd.createChar(1, p40); lcd.createChar(2, p60); lcd.createChar(3, p80); lcd.createChar(4, p100); } void loop() { moneyPin = digitalRead(moneyPin3);//Cчитываем if (pulse1=0) //Проверка { lcd.clear(); lcd.setCursor(0,1); lcd.print("Coin ready!"); lcd.setCursor(0,0); lcd.print("Hello=)"); delay(200); } if (pulse1>0 && timeCount1<300) //Проверка { lcd.clear(); lcd.setCursor(0,0);lcd.print("Error:/"); lcd.setCursor(0,1);lcd.print("Fast pulse!"); delay(1100); pulse1=0; lcd.clear(); lcd.setCursor(0,0);lcd.print("Waiting!"); lcd.setCursor(0,1);lcd.print("Check the power!"); delay(1100); pulse1=0; } if(pulse1>0 && timeCount1>300) //Проверка условий { sum+=0.25; time=sum*4; lcd.clear(); lcd.setCursor(0,0);lcd.print(time); lcd.setCursor(4,0);lcd.print("minute"); //Вывод показателей на ЖКД. lcd.setCursor(0,1);lcd.print("Total="); //Вывод показателей на ЖКД. lcd.setCursor(6,1);lcd.print(sum); } button1State = digitalRead(button1Pin); //Запись показателей кнопки в переменную digitalWrite(add5V, HIGH ); //Задаем значение digitalWrite(ledPin, HIGH ); //Задаем значение if ((button1State == LOW) && (sum != 0))// если жмём на кнопку и сумма не 0 // тогда { digitalWrite(ledPin, LOW); lcd.clear(); lcd.setCursor(0,0);lcd.print("Power ok!"); for (int i = 0; i<16; i++) // Запуск анимации (16 раз) { for (int j=0; j<5; j++) { lcd.setCursor(i, 1); //Определяем блок ЖКД lcd.write(j); //Определяем символ в блоке delay(sum*3200); //в суме = 64 сек ((0.25*3100/1000)*(16*5)) } } digitalWrite(ledPin, HIGH ); lcd.clear(); lcd.setCursor(0,0);lcd.print("Power off!"); sum=0; } //Проверка на переполнение if (sum==20 || sum>20){ lcd.clear(); lcd.setCursor(0,0);lcd.print("It's too much!!!"); lcd.setCursor(0,1);lcd.print("Start Now!!!"); delay(1000); } if (sum<0){ lcd.clear(); lcd.setCursor(0,0);lcd.print("Error=("); sum=0.0; delay(1000); } } void count_pulse1(){ //detachInterrupt(0); detachInterrupt(1); pulse1++; if(pulse1==1) timeCount1=millis(); //attachInterrupt(0,count_pulse,FALLING); attachInterrupt(1,count_pulse1,FALLING); }
этот раздел для готовых проектов. для вопросов есть другие разделы