Много глупых вопросов!

Тема в разделе "Arduino & Shields", создана пользователем Kirguh, 28 мар 2017.

  1. Slavdej

    Slavdej Нерд

    Простите, может я и не туда написал, конечно создам, до этого я не общался никогда на форумах только читал, в общем простите если что не так.
    А темку ща создам.
    Спасибо за совет.
     
  2. lexa

    lexa Нуб

    хотел спросить тут можно написать о проблеме с телеграм и работы с esp12e ибо я тоже впервые пишу на форумах?
     
  3. Kirguh

    Kirguh Нерд

    Ну так найдите для этого подходящий раздел с создайте соответствующую тему, я думаю, что вам с радостью в ней ответят.
     
  4. mcureenab

    mcureenab Гуру

    Код (C++):
    {
        int sonoping(sonar.ping_cm());
        if( 100 < sonoping  ){
    // делаем дело
        }
    }
     
    Kirguh нравится это.
  5. Slavdej

    Slavdej Нерд

    Простите, но я даже команду такую не знаю, но ща буду курить в гугле, а может Вы подскажете куда это вставить?)
    Спасибо за ответ и помощь в любом случае.
     
  6. Kirguh

    Kirguh Нерд

    Боюсь, это был ответ мне на работу с пингом, а именно - ответ на вопрос как в зависимости от расстояния что мы измерили делать что-то.
     
  7. Kirguh

    Kirguh Нерд

    Спасибо большое!
     
  8. mcureenab

    mcureenab Гуру

    Тут ответ:http://forum.amperka.ru/threads/Много-глупых-вопросов.11565/page-2#post-112489
    Но unsigned ничего не даст.

    100 замеров в сумме дают 102400, а это больше чем 32768. Целочисленное переполнение может давать отрицательное значение даже для суммы чисел.

    Нужно десяток замеров сделать (не более 32) и делить на 10.

    Код (C++):
      // считываем текущее показания датчика влажности почвы
      digitalWrite(DAT_PIN, HIGH);
      delay(100); // подождать стабилизации процесса
      int humidityNow(0);
      for(int i=0; i< 10; i++) {
        delay(10);
        humidityNow +=  analogRead(HUMIDITY_PIN);
      }
      //отключаем питание датчика почвы
        digitalWrite(DAT_PIN, LOW);
       humidityNow /=10; // 10 замеров в цикле
      // если показания текущей влажности почвы
      // не равняется предыдущему запросу
      if(humidityNow != humidity) {
        // сохраняем текущие показания влажности
        humidity= humidityNow;
        // и выводим показания влажности на дисплей
        qd.displayInt(humidityNow);

      }
     
    Так думаю, что со средними можно не париться. После включения питания датчика вероятно начинаются электрохимические процессы, которые должны стабилизироваться. Попробуй просто увеличить задержку между включением датчика и замером. В код я добавил delay(100);
     
    Kirguh нравится это.
  9. Kirguh

    Kirguh Нерд

    Потрясающе, всё работает и выдает отличные числа! Спасибо огромное! Опытным путем установил, что задержка в 135 - подходит лучше всего.
     
    Последнее редактирование: 18 апр 2017
  10. user999

    user999 Гик

    Я же вам написал:
    почитайте про типы переменных: https://ru.wikipedia.org/wiki/Типы_данных_в_C
    И замените
    Код (C++):
    // Задаем переменнуя для хранения показания влажности почвы
    unsigned int humidity = 0;
    на
    Код (C++):
    // Задаем переменную для хранения показания влажности почвы
    long humidity = 0;