Создание управляющей програмы(не бесплатно)

nickell2008
Offline
Зарегистрирован: 03.10.2014

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

Схема действия такова:

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

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

а так можно?

(150>timeCount2>299)

com
Offline
Зарегистрирован: 06.09.2013

синтаксической ошибки нет. всегда будет false

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Дык...

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

nickell2008, дайте информацию о купюроприемнике. И об остальном обородувании.

Сколько времени на выполнение проекта? Какой бюджет?

nickell2008
Offline
Зарегистрирован: 03.10.2014

Купюроприемник ICT P77. Счетчик ДРЖ 15-2. Arduino UNO(MEGA). Кнопки обычные, замыкаючие.

Код счетчика есть, скину позже.
С купюроприемником там весело, но оно определяет как надо. Сам сидел не один день.

Время пока есть.

nickell2008
Offline
Зарегистрирован: 03.10.2014

Есть у кого какие мысли?

На форум редко захожу, у кого есть интерес, пишите в скайп: nickell2008