Создание управляющей програмы(не бесплатно)
- Войдите на сайт для отправки комментариев
В связи с нехваткой времени, запрашиваю помощи у добрых людей. Нужно сделать скетч, для заправочного автомата.
Схема действия такова:
1. Нажатием Кнопки1 происходит запуск купюроприемника и ЛЕД подсветки монитора через реле.
2. Далее вводим деньги в приемник, выводим значение на экран в 2 ряда: 1 введеная сума, кол-во жидкости(по тарифу).
3. Кнопкой1 запускаем выходы на реле насоса и клапана. Соответственно выключаем Купюроприемник.
4. Держим включеный насос и клапан, пока значение , прошедшее через счетчик, не уравняется со значение в п2.
5. Все выключаем с финальной заставкой типа "Спасибо за покупку".
6. Кнопка2 нужна для приостановки действия залития, тоесть в п3. Кнопка1 слежит для продолжения.
7. Есть семисегментный индикатор. На него нужно выводить сумарное кол-во жидкости , которое постоянно заносится в ЕЕЕРОМ ардуино(пока) . Ну индикатр я сделаю через драйвер.
Все легко и просто, но нужно это скомпоновать в ближайшие сроки. Для начала предлагаю 50грн тому, кто напишет рабочий скетч, провереный на станции. Далее возможно сотрудничество с повышением оплаты.
Пока в наличии ардуино уно. Но вообще станция будет работать на меге.
Сопутствующие скетчи предоставлю: подсчет денег купюроприемником и счет литража счетчиком.
На данный момент проблема в следующем: пожимаю кнопку1, вкл лед, купюроприемник, но сумма на экран не выводится, тоесть не считывет . Без нажатия кнопки все прекрасно работает.
const int buttonPin = 8; //кнопка Да const int otmmenaPin = 9; // кнопка Отмена const int ledPin = 13; // номер выхода светодиода // переменные boolean lastButton = LOW; boolean currentButton = LOW; const int moneyPin2=2; // купюроприемник int pulse2=0; int kol_im=0; unsigned long timeAllPulse2=2000; // макс. время приема купюры unsigned long timeCount1=0; unsigned long timeCount2=0; const int nasos = 4; const int klapan = 5; const int LED = 6; const int MPower = 7; float sum=0.0; // дисплей Goodview LCD JXD0802A YG // Библиотеки для русского языка #include <LiquidCrystalRus.h> #include <LiquidCrystalExt.h> #include <LineDriver.h> // Данные с пинов дисплея на ардуино void setup() { pinMode(ledPin, OUTPUT); pinMode(nasos, OUTPUT); pinMode(klapan, OUTPUT); pinMode(LED, OUTPUT); pinMode(MPower, OUTPUT); pinMode(buttonPin, INPUT); // кнопка Serial.begin(9600); pinMode(moneyPin2,INPUT); // включение диспечера прерывай attachInterrupt(0,count_pulse2,FALLING); } void loop() { int kol_im=0; currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH ) { Serial.println("VKL LED Money, READY for MONEY"); digitalWrite(LED, HIGH); digitalWrite(MPower, HIGH); float liter = mon(pulse2); } lastButton = currentButton; } // обработка прерывания монетоприемника - получить кол-во импульсов // int mon (int pulse) { if(pulse2>0 && (millis()-timeCount2)>timeAllPulse2) int kol_im=pulse2*5/2; // определение купюры sum+=kol_im; // суммирование float litr = sum/20; Serial.print("sum= "); Serial.println(sum); pulse2=0; return litr; } void count_pulse2() { //detachInterrupt(0); detachInterrupt(0); pulse2++; if(pulse2==1) { timeCount2=millis(); Serial.println(millis()); timeCount2=timeCount2-timeAllPulse2; if (150>timeCount2>299) pulse2=1; } //attachInterrupt(0,count_pulse,FALLING); attachInterrupt(0,count_pulse2,FALLING); } // boolean debounce(boolean last) { boolean current = digitalRead(buttonPin); if (last != current) { delay(100); current = digitalRead(buttonPin); } return current; }
а так можно?
(150>timeCount2>299)
синтаксической ошибки нет. всегда будет false
Дык...
nickell2008, дайте информацию о купюроприемнике. И об остальном обородувании.
Сколько времени на выполнение проекта? Какой бюджет?
Купюроприемник ICT P77. Счетчик ДРЖ 15-2. Arduino UNO(MEGA). Кнопки обычные, замыкаючие.
Код счетчика есть, скину позже.
С купюроприемником там весело, но оно определяет как надо. Сам сидел не один день.
Время пока есть.
Есть у кого какие мысли?
На форум редко захожу, у кого есть интерес, пишите в скайп: nickell2008