1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Инкубатор с меню на ардуино 2560

Тема в разделе "Arduino", создана пользователем Дмитрий_, 15 ноя 2017.

  1. Дмитрий_

    Дмитрий_ Гость

    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте дорогие форумчане, решил сделать себе инкубатор на ардуине 2560 + дисплей 16х2 + блок реле на 8 шт + датчик температуры 18b20 + датчик влажности dht22+ часы реального времени.Функционал планирую такой:меню с выбором программы инкубации, редактирование программы инкубации, настройка времени, автоматический переворот, связь с пк и возможно запись отчета на флешку.Возникла проблема с кодом
    PHP:
    void Set_time() {
    lcd.clear();
    lcd.setCursor(0,1);
    if(
    VAR_mode_SHOW==1){                    // если установлен режим вывода времени
          
    lcd.print(time.gettime("H:i:s"));
      
        }
        if(
    VAR_mode_SHOW==2){                    // если установлен режим вывода даты
          
    lcd.print(time.gettime("d-m-Y   D"));  // выводим дату
        
    }
      
    time.blinktime(VAR_mode_SET,2);                                  // мигаем устанавливаемым параметром (если VAR_mode_SET больше 0)
    //Если часы находятся в режиме установки даты/времени
      
    if(VAR_mode_SET){
    //  Если нажата кнопка UP
        
    if(digitalRead(vol1 ==0  )){
            switch (
    VAR_mode_SET){                                     // инкремент (увеличение) устанавливаемого значения
          /* сек */ 
    case 1time.settime(0,                                   -1, -1, -1, -1, -1, -1); break;
          
    /* мин */ case 2time.settime(-1, (time.minutes==59?0:time.minutes+1), -1, -1, -1, -1, -1); break;
          
    /* час */ case 3time.settime(-1, -1, (time.Hours==23?0:time.Hours+1),     -1, -1, -1, -1); break;
          
    /* дни */ case 4time.settime(-1, -1, -1, (time.day==31?1:time.day+1),         -1, -1, -1); break;
          
    /* мес */ case 5time.settime(-1, -1, -1, -1, (time.month==12?1:time.month+1),     -1, -1); break;
          
    /* год */ case 6time.settime(-1, -1, -1, -1, -1, (time.year==99?0:time.year+1),       -1); break;
          
    /* д.н.*/ case 7time.settime(-1, -1, -1, -1, -1, -1, (time.weekday==6?0:time.weekday+1) ); break;
          }
        }

    //  Если нажата кнопка DOWN
        
    if(digitalRead(vol2==0)){
        
          switch (
    VAR_mode_SET){                                     // декремент (уменьшение) устанавливаемого значения
          /* сек */ 
    case 1time.settime(0,                                   -1, -1, -1, -1, -1, -1); break;
          
    /* мин */ case 2time.settime(-1, (time.minutes==0?59:time.minutes-1), -1, -1, -1, -1, -1); break;
          
    /* час */ case 3time.settime(-1, -1, (time.Hours==0?23:time.Hours-1),     -1, -1, -1, -1); break;
          
    /* дни */ case 4time.settime(-1, -1, -1, (time.day==1?31:time.day-1),         -1, -1, -1); break;
          
    /* мес */ case 5time.settime(-1, -1, -1, -1, (time.month==1?12:time.month-1),     -1, -1); break;
          
    /* год */ case 6time.settime(-1, -1, -1, -1, -1, (time.year==0?99:time.year-1),       -1); break;
          
    /* д.н.*/ case 7time.settime(-1, -1, -1, -1, -1, -1, (time.weekday==0?6:time.weekday-1) ); break;
         }
        }

    //  Если нажата кнопка право
         
    if (digitalRead(rigt == 0))                                      
            
    VAR_mode_SET++;                                          // переходим к следующему устанавливаемому параметру
            
    if(VAR_mode_SHOW==&& VAR_mode_SET>3){VAR_mode_SET=1;}  // возвращаемся к первому устанавливаемому параметру
            
    if(VAR_mode_SHOW==&& VAR_mode_SET>7){VAR_mode_SET=4;}  // возвращаемся к первому устанавливаемому параметру
         //  Если нажата кнопка лево
         
    if (digitalRead(left == 0))                                      
            
    VAR_mode_SET--;                                          // переходим к следующему устанавливаемому параметру
            
    if(VAR_mode_SHOW==&& VAR_mode_SET<1){VAR_mode_SET=3;}  // возвращаемся к первому устанавливаемому параметру
            
    if(VAR_mode_SHOW==&& VAR_mode_SET<4){VAR_mode_SET=7;}  // возвращаемся к первому устанавливаемому параметру
          
    }
          
    Serial.println("set time5");
    if(
    digitalRead(ok ==0  )){m_key=1lcd.clear();}
    }
    при вызове данной функции контроллер перезагружается.
     
  2. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.559
    Симпатии:
    354
    Адрес:
    Алматы
    Привет, я заметил только, что ошибка в использовании функции digitalRead(). Сейчас вот так например if (digitalRead(left == 0)), а правильно было бы записать:
    PHP:
    if (digitalRead (left) == LOW);    // LOW есть 0 или низкий логический уровень.
  3. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.353
    Симпатии:
    357
    Адрес:
    Талгар
    пары скобок не хватает - не ?
    PHP:
    if ((digitalRead (left))== LOW);    // LOW есть 0 или низкий логический уровень.
  4. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.559
    Симпатии:
    354
    Адрес:
    Алматы
    Ошибкой не будет, если добавишь, но не обязательно, поэтому лучше не ставить, чтобы не затруднять читаемость кода.
  5. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.353
    Симпатии:
    357
    Адрес:
    Талгар
    ясно
  6. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    190
    Симпатии:
    101
    Здравствуйте а на какое кол-во будет инкубатор
  7. Дмитрий_

    Дмитрий_ Гость

    Сообщения:
    5
    Симпатии:
    0
    примерно на 200-300 куриных яиц. корпуса нет пока надо с контроллером решить вопрос.
    --- Сообщения объединены, 15 ноя 2017 ---
    Если кого заинтересует данный проект и проявит желание помочь с кодом могу выложить полностью скетч и так же проверить работоспособность кода железо есть все распаяно.
  8. Дмитрий_

    Дмитрий_ Гость

    Сообщения:
    5
    Симпатии:
    0
    У меня работает в другой функции код с "0"
    Код:
    void key(){ //функция работы с клавеатурой
        if ( digitalRead(menuz) == 0){                            //если нажата кнопка меню
        if ( m_key == 1){m_key = 0; lcd.print("+Exit");}          //если мы не находимся в других подменю
        if ( m_key == 0){menu.goMain();}                          //переходим в главное меню
        }
        if ( m_key == 0){                                         //если находимся в главном меню
        if ( digitalRead (rigt) == 0){delay(20); menu.goDown();}  //управление главным меню
        if ( digitalRead(left) ==  0){delay(20); menu.goUp()  ;}  //управление главным меню
        if ( digitalRead(ok) == 0)   {delay(20); menu.goNext();}  //управление главным меню
        }
        if ( m_key == 2 ){set_tm();}                              //если находимся в меню редоктирования времени
       
    }
    В деревне буду попробую Ваш вариант с LOW
  9. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    190
    Симпатии:
    101
    Тема для меня интересная , а как будет устроен ?
  10. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.559
    Симпатии:
    354
    Адрес:
    Алматы
    Ну так конечно работает, потому что здесь скобки расставлены верно, проблема то не в "0" или "LOW".
  11. Дмитрий_

    Дмитрий_ Гость

    Сообщения:
    5
    Симпатии:
    0
    увидел теперь ошибку свою
    --- Сообщения объединены, 18 ноя 2017 ---
    Что именно ? Сам ящик ?
  12. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    190
    Симпатии:
    101
    Ну да сам инкубатор , какой обогрев ?
  13. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    190
    Симпатии:
    101
    Я почему спрашиваю например у меня в инкубаторе стоят лампы для обогрева а кто то использует ШИМ и тиристор ,и использует для этого выходы МК , соответственно и код будет разный !!!
    Тоже и с переворотом яиц будет концевик стоять или еще чего !
  14. Дмитрий_

    Дмитрий_ Гость

    Сообщения:
    5
    Симпатии:
    0
    обогрев релейный выход, может быть будет две ступени ,переворот яиц на конечных выключателях , увлажнение пока думаю.
  15. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    190
    Симпатии:
    101
    Фото будут выкладывайте тема интересная !!!

Поделиться этой страницей