Прошу помощи с кодом

Тема в разделе "Arduino & Shields", создана пользователем mutabor, 25 июн 2016.

  1. mutabor

    mutabor Нуб

    Выдает ошибку при проверке, не могу понять в чем дело


    #include "QuadDisplay.h"

    #define PIN_LOW_LEV 4
    #define PIN_LOW_LEV 6
    #define PIN_RELAY 5

    const int HUMIDY_MIN = 500;


    void setup(void)
    {
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(PIN_LOW_LEV, INPUT_PULLUP);
    pinMode(PIN_HIGH_LEV, INPUT_PULLUP);
    pinMode(PIN_RELAY, OUTPUT);
    digitalWrite(PIN_RELAY, LOW);

    displayInt(3, 0);
    }



    char intDigit(unsigned int val, char pos)
    {
    char buf[6];

    sprintf(buf, "%04u", val);

    return buf[3-pos]-'0';
    }

    unsigned int intDigitSet(unsigned int val, char pos, char d)
    {
    char buf[6];

    sprintf(buf, "%04u", val);

    buf[3-pos] = '0'+d;

    return atoi(buf);
    }

    unsigned int readHumidy(void)
    {
    static unsigned int oldval = 0;
    static unsigned int res = 0;
    static unsigned int stability[4] = { 0, 0, 0, 0 };

    char i;
    unsigned int val = analogRead(A0);

    if(val < 50) val = 0;

    for(i = 0; i < 4; i++) {
    if(intDigit(oldval, i) != intDigit(val, i)) {
    oldval = intDigitSet(oldval, i, intDigit(val, i));
    stability = 0;
    }
    else {
    if(stability < 10) stability++;
    else res = intDigitSet(res, i, intDigit(val, i));
    }
    }

    return res;
    }

    void loop(void)
    {
    static unsigned long wait = millis() + 60000;
    static unsigned int oldhumidy = 0;
    static unsigned long stability = 0;
    unsigned int humidy = readHumidy();

    if(humidy != oldhumidy) {
    oldhumidy = humidy;

    displayInt(3, humidy);
    }

    if(wait != 0 && wait-millis() > 10) {
    return;
    } else wait = 0;

    if(humidy < HUMIDY_MIN) {
    digitalWrite(2, HIGH);
    analogWrite(5, 50);
    delay(90500); //время работы насоса
    digitalWrite(2, LOW);
    digitalWrite(5, LOW);
    wait = millis() + 3*600;

    //наполнение бочки
    if(digitalRead(PIN_LOW_LEV) && digitalRead(PIN_HIGH_LEV)){
    // Воды нет ни на одном датчике, включаем насос
    digitalWrite(PIN_RELAY,HIGH);
    } else if(!digitalRead(PIN_HIGH_LEV)){
    // Вода на верхнем датчике, отключаем насос
    digitalWrite(PIN_RELAY,HIGH);
    }
    }
     
  2. vvr

    vvr Инженерище

    ну а где сама ошибка
    или думаете здесь все телепаты ?
     
  3. NazarDiadiun

    NazarDiadiun Нуб

    Библиотеку установил?!
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @mutabor, первое, на чем споткнулся взгляд у вас не определен PIN_HIGH_LEV (зато PIN_LOW_LEV два раза)
    Должно быть как-то так
    Код (C++):
    #define PIN_LOW_LEV 4
    #define PIN_HIGH_LEV 6
    второе, у вас что-то неладное с переменными stability (в цикле она не используется, а в функции readHumidy() она или неправильно определена или неправильно используется.
    PS Используйте кнопку Код для выделения вашего кода
     
  5. mutabor

    mutabor Нуб

    ZAZ-965, помог.

    Спасибо всем