Создание управляющей програмы(не бесплатно)
- Войдите на сайт для отправки комментариев
В связи с нехваткой времени, запрашиваю помощи у добрых людей. Нужно сделать скетч, для заправочного автомата.
Схема действия такова:
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