Помогите с кодом ( проблема решена)

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Sergey72, 7 окт 2016.

  1. Tomasina

    Tomasina Сушитель лампочек Модератор

    точно, я же else пропустил :eek:
     
  2. Sergey72

    Sergey72 Нуб

    И что нужно поправить в коде что бы серва сработала ТОЛЬКО в 21.48 от 0 до 180 и обратно
     
  3. Delit

    Delit Нерд

    Код (C++):
    if ((hours == 21) && (minutes == 48))

    {

    myservo.write(180);
    delay ( 1000);

    myservo.write(1);
    delay (1000);

    myservo.write(0);
    delay ( 60000);  // условие будет исполнятся больше минуты
    }
    так как условие исполняется больше минуты то будет исполнено только раз в сутки, а часть else не нужна
     
  4. Sergey72

    Sergey72 Нуб

    Спасибо. До соберу макет попробую
     
  5. Sergey72

    Sergey72 Нуб

    Не работает! серва не срабатывает в нужный промежуток. Блин Помогите кто нибудь с кодом!!!
     
    Последнее редактирование: 7 окт 2016
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    покажи весь скетч.
    И желательно пользоваться 9-й кнопочкой "Код" ;)
     
  7. Sergey72

    Sergey72 Нуб

    Код (C++):
    #include <Wire.h>        // Добавляем необходимые библиотеки
    #include <LiquidCrystal_I2C.h>
    #include <RTC.h>
    #include <Servo.h>
    RTC  time;// обьявление переменной время
    Servo myservo;
    int hours;
    int minutes;



    LiquidCrystal_I2C lcd(63,16,2);   // Задаем адрес и размерность дисплея
    void setup()
    {
    myservo.attach(9);//цепляем серво к цифровымс выводам
    lcd.begin();                       // Инициализация lcd            
      lcd.backlight();                  // Включаем подсветку
      time.begin(RTC_DS3231);  // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT   доступны любые выводы
    time.settime(50,59,19,07,10,16,1); // 0  сек, 17 мин, 15 час, 1, октября, 2015 года, четверг
    }

    void loop()
    {

    if ((hours == 20) && (minutes == 01))

    {

    myservo.write(180);
    delay ( 5000);

    myservo.write(1);
    delay (1000);

    myservo.write(0);
    delay ( 60000);  // условие будет исполнятся больше минуты


    }

    if(millis()%1000==0) // если прошла 1 секунда


     
      lcd.setCursor(0, 0);
      lcd.print(time.gettime("d-m-Y"));// выводим дату
      lcd.clear();
      lcd.setCursor(0, 1);
      lcd.print(time.gettime( "H:i:s" ));  // ( H:i:s, D")); так выглядит если с секундами и днем недели
      delay(1000);


    }
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    время выводится корректно?
    Серва работает, если ее с другим скетчем и другим номером пина (например, 5 или 6) запустить?
     
  9. Sergey72

    Sergey72 Нуб

    время и дата выводятся нормально. Серва рабочая ( тест гонял 0-180-90-0-180)
     
  10. Tomasina

    Tomasina Сушитель лампочек Модератор

    добавь перед myservo.write(180);
    Код (C++):
    Serial.println("BLOB!");
    Будет вывод надписи в заданном промежутке времени?
     
  11. Sergey72

    Sergey72 Нуб

    пины перебрал 9-5
     
  12. Tomasina

    Tomasina Сушитель лампочек Модератор

    а почему эти строки были выкинуты?
    Код (C++):
    hours = RTC.get(DS3231_HR,true);
    minutes = RTC.get(DS3231_MIN,false);
    Без них hours и minutes всегда равны нулю.
     
  13. Sergey72

    Sergey72 Нуб

    minutes = RTC.get(DS3231_MIN,false); на это ругается
    exit status 1
    expected primary-expression before '.' token
     
    Последнее редактирование: 7 окт 2016
  14. Sergey72

    Sergey72 Нуб

    100500 вариант кода. Серва стоит на 0. время и дата отображаются. не работает и ругается на minutes = RTC.get(DS3231_MIN,false);
    код не грузится. МОЗГ СЛОМАН.
    Код (C++):
    #include <Wire.h>        // Добавляем необходимые библиотеки
    #include <LiquidCrystal_I2C.h>
    #include <RTC.h>
    #include <Servo.h>
    RTC  time;// обьявление переменной время
    Servo myservo;
    int hours;
    int minutes;



    LiquidCrystal_I2C lcd(63,16,2);   // Задаем адрес и размерность дисплея
    void setup()
    {
    myservo.attach(9);//цепляем серво к цифровым выводам
    lcd.begin();                       // Инициализация lcd            
      lcd.backlight();                  // Включаем подсветку

      time.begin(RTC_DS3231);  // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT   доступны любые выводы
    time.settime(30,59,19,07,10,16,1); // 0  сек, 17 мин, 15 час, 1, октября, 2015 года, четверг
    }

    void loop()


    {


    int hours = RTC.get(DS3231_HR,true);
    int minutes = RTC.get(DS3231_MIN,false);
     
    myservo.write(1);

    if ((hours == 20) && (minutes == 01))

    {
    Serial.println("BLOB!");
    myservo.write(180);

    }

    else if ((hours==20)&&(minutes==02))
    {
      myservo.write(1);

    }




     
    lcd.setCursor(0, 0);
    lcd.print(time.gettime("d-m-Y"));// выводим дату
    lcd.setCursor(0, 1);
    lcd.print(time.gettime( "H:i:s" ));  // ( H:i:s, D")); так выглядит если с секундами и днем недели
      delay(1000);


    }
     
  15. Tomasina

    Tomasina Сушитель лампочек Модератор

    попробуй так:
    Код (C++):
    #include <Wire.h>        // Добавляем необходимые библиотеки
    #include <LiquidCrystal_I2C.h>
    #include <RTC.h>
    #include <Servo.h>
    RTC  time;// обьявление переменной время
    Servo myservo;

    LiquidCrystal_I2C lcd(63,16,2);   // Задаем адрес и размерность дисплея
    void setup()
    {
    myservo.attach(9);//цепляем серво к цифровым выводам
    lcd.begin();                       // Инициализация lcd          
      lcd.backlight();                  // Включаем подсветку
      time.begin(RTC_DS3231);  // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT   доступны любые выводы
    time.settime(30,59,19,07,10,16,1); // 0  сек, 17 мин, 15 час, 1, октября, 2015 года, четверг
    }

    void loop()
    {
    if( time.Hours==20 && time.minutes==1) myservo.write(180);
    else myservo.write(1);

    lcd.setCursor(0, 0);
    lcd.print(time.gettime("d-m-Y"));// выводим дату
    lcd.setCursor(0, 1);
    lcd.print(time.gettime( "H:i:s" ));  // ( H:i:s, D")); так выглядит если с секундами и днем недели
      delay(1000);
    }
     
    Последнее редактирование: 8 окт 2016
    Sergey72 нравится это.
  16. Sergey72

    Sergey72 Нуб

    Спасибо. Так все работает. Буду эксперементировать дальше