Объединение скетчей. Arduino

Тема в разделе "Arduino & Shields", создана пользователем locusmantt, 24 апр 2019.

Метки:
  1. locusmantt

    locusmantt Нуб

    Доброго времени суток. Использую NodeMcu v3, датчик dht11 и fc-37. Цель - объеденить 2 скетча в один, что бы при запуске, выводилась информацию сразу по 2ум датчикам, помогите пожалуйста. Возможность как я понимаю у самой NodeMcu есть, тк один из датчиков выдает аналоговый сигнал, другой цифровой, все датчики подключены одновременно к разным ногам.
    Скетч ардуино dht11:
    Код (C++):
    #include "DHT.h"
    #define DHTPIN D4     // пин к которому подключен датчик
    #define DHTTYPE DHT11   // DHT 11

    // инициализация DHT датчика
    DHT dht(DHTPIN, DHTTYPE);
    //---------------------------------------------
    void setup() {
      Serial.begin(115200);
      Serial.println("DHTxx тест!");
      dht.begin();
    }
    //---------------------------------------------
    void loop() {
      // ждем пару сек.
      delay(2000);
      // чтение занимает 250 мСек, у старых датчиков данные обновляются не чаще чем 1 раз в 2 сек
        float h = dht.readHumidity();// читаем влажность в %
        float t = dht.readTemperature();// читаем температуру, по умолчанию в градусах
        float f = dht.readTemperature(true);// читаем температуру в Фаренге́йтах

      // смотрим получилось ли прочитать
      if (isnan(h) || isnan(t) || isnan(f)) {
        Serial.println("ошибка чтения с DHT датчика!");
        return;
      }

      float hif = dht.computeHeatIndex(f, h);// рассчитываем индекс жары в Фаренге́йтах
      float hic = dht.computeHeatIndex(t, h, false);// рассчитываем индекс жары в град ц. (isFahreheit = false)
      Serial.println("----------------------------------------");
      Serial.print("Влажность: "); Serial.print(h); Serial.println(" %\t");
      Serial.print("Температура: "); Serial.print(t); Serial.print(" *C "); Serial.print(f);  Serial.println(" *F\t");
      Serial.print("Ощущения: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F");
    }
     
    Скетч ардуино fc-37:
    Код (C++):
    const int sensorMin = 0;     // sensor minimum
    const int sensorMax = 1024;  // sensor maximum

    void setup() {
      Serial.begin(115200);
      pinMode(2, OUTPUT); // red led
      pinMode(3, OUTPUT); // yellow led
      pinMode(4, OUTPUT); // green led
    }
    void loop() {
    int sensorReading = analogRead(A0); // read the sensor on analog A0
    Serial.println(sensorReading);
    int range = map(sensorReading, sensorMin, sensorMax, 0, 3); // map the sensor range (four options)
    switch (range) { // range value
      case 0:    // Sensor getting wet
       Serial.println("Затопление");
       digitalWrite(2, HIGH);
       digitalWrite(3, LOW);
       digitalWrite(4, LOW);
       break;
      case 1:    // Sensor getting wet
       Serial.println("Влажно");
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, LOW);
       break;
      case 2:    // Sensor dry - To shut this up delete the " Serial.println("Not Raining"); " below.
       Serial.println("Сухо");
       digitalWrite(2, LOW);
       digitalWrite(3, LOW);
       digitalWrite(4, HIGH);
       break;
    }
    delay(2000);
    }
     
     
  2. b707

    b707 Гуру

    При чем тут это? Вы полагаете, что к МК можно подключить только один цифровой и один аналоговый датчик? :)

    Что касается обьединения скетчей - вряд ли кто-то будет это делать за вас. Попробуйте сделать это сами, и если будут проблемы - приходите. Но приходите со своим кодом, а не с найденным в инете
     
    locusmantt, DetSimen и Daniil нравится это.
  3. locusmantt

    locusmantt Нуб

    Вопрос решен. Кому интересно решение - в лс.
     
  4. Airbus

    Airbus Радиохулиган

    Очень интересно!Давайте посмотрим?
     
    Daniil и Andrey12 нравится это.
  5. b707

    b707 Гуру

    тебе правда интересно? :)
    Меня всегда умиляют подобные посты - сначала вопрос уровня "Сколько будет 2 х 2?" - а потом

    "Разобрался - будет 4!!! Выкладываю решение! может кому пригодится!"

    А этот даже решение не выкладывает... в ЛС зовет
     
  6. Airbus

    Airbus Радиохулиган

    Так вот поэтому и интересно.Реально разобрался ИЛИ?А я даже и проверю как работает.
     
  7. locusmantt

    locusmantt Нуб

    Код (C++):
    #include "DHT.h"

    #define DHTPIN D4
    #define DHTTYPE DHT11
    DHT dht(DHTPIN, DHTTYPE);

    const int sensorMin = 0;
    const int sensorMax = 1024;

    void setup() {
      dht.begin();
      Serial.begin(115200);
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
      pinMode(4, OUTPUT);
    }

    void loop() {
       delay(2000);
        float h = dht.readHumidity();
        float t = dht.readTemperature();
        float f = dht.readTemperature(true);
        if (isnan(h) || isnan(t) || isnan(f)) {
        Serial.println("ошибка чтения с DHT датчика!");
        return;
      }
      float hif = dht.computeHeatIndex(f, h);
      float hic = dht.computeHeatIndex(t, h, false);
      Serial.println("----------------------------------------");
      Serial.print("Влажность: "); Serial.print(h); Serial.println(" %\t");
      Serial.print("Температура: "); Serial.print(t); Serial.print(" *C "); Serial.print(f);  Serial.println(" *F\t");
      Serial.print("Ощущения: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F");

    int sensorReading = analogRead(A0);
    Serial.println(sensorReading);
    int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
    switch (range) {
      case 0:
       Serial.println("Затопление");
       digitalWrite(2, HIGH);
       digitalWrite(3, LOW);
       digitalWrite(4, LOW);
       break;
      case 1:
       Serial.println("Влажно");
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, LOW);
       break;
      case 2:
       Serial.println("Сухо");
       digitalWrite(2, LOW);
       digitalWrite(3, LOW);
       digitalWrite(4, HIGH);
       break;
    }
      }
     
  8. Airbus

    Airbus Радиохулиган

    Ок!Красавчег!Видно что разобрался.Только в сетапе можно установить начальное состояние светодиодов HIGH или LOW.
     
    DetSimen нравится это.
  9. locusmantt

    locusmantt Нуб

    Спасибо, исправлю