Не могу загрузить несколько скетчей

Я делаю проект по садоводству. Он включает в себя несколько датчиков, и даже имея скетчи для них, я не знаю, как заставить их работать вместе и одновременно получать показания. Я совсем новичок в этом деле. Это мой первый Arduino.

Кажется, мне удается получить показания одного из датчиков, но всякий раз, когда я пытаюсь загрузить новый скетч, он не загружается.

Вот пара кодов, которые я хочу запустить вместе. Один — датчик температуры/влажности, а другой — датчик влажности почвы.

Заранее спасибо!!!

#include "DHT.h"          // Библиотека DHT и AM2302


// Контакт данных подключен к AM2302
#define DHTPIN 2

#define DHTTYPE DHT22       // DHT 22 (AM2302)

DHT dht(DHTPIN, DHTTYPE);   // выводы светодиода

//////////////////////////////////////////////////////
//
// НАСТРАИВАТЬ
//
void setup() {
  // Настройка последовательного монитора
  Serial.begin(9600);
  dht.begin();
}


void loop() {

  // Измерение температуры или влажности занимает около 250 миллисекунд!
  // Показания датчика также могут быть «старыми» до 2 секунд (это очень медленный датчик)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // проверяем, являются ли возвращаемые данные допустимыми. Если они NaN (не число), то что-то пошло не так!
  if (isnan(t) || isnan(h)) {
    Serial.println(F("Failed to read from DHT"));
  }
  else {
Serial.print(F("Humedad: ")); 
Serial.print(h);
Serial.print(F(" %\t"));
Serial.print(F("Temperatura: ")); 
Serial.print(t);
Serial.println(F(" C"));
  }

  // Подождите 3 секунды
  delay(3000);
}

Другой код:

   //////////////////////////////////////////////
  //  ДЕМОНСТРАЦИЯ ВЛАЖНОСТИ ПОЧВЫ ARDUINO    //
 //                                          //
//           http://www.educ8s.tv           //
/////////////////////////////////////////////



int sensorPin = A0;  
int sensorValue = 0;  
int percent = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {

  sensorValue = analogRead(sensorPin);
  percent = convertToPercent(sensorValue);
  printValuesToSerial();
  delay(1000);
}

int convertToPercent(int value)
{
  int percentValue = 0;
  percentValue = map(value, 1023, 465, 0, 100);
  return percentValue;
}

void printValuesToSerial()
{
  Serial.print("\n\nAnalog Value: ");
  Serial.print(sensorValue);
  Serial.print("\nPercent: ");
  Serial.print(percent);
  Serial.print("%");
}

, 👍0

Обсуждение

Только один эскиз за раз. Вам придется их объединить (как-то), @Greenonline

@Greenonline, OP сделал это несколько часов назад. Прочитайте ответ и комментарии., @Juraj

@Juraj - хорошее замечание, но тогда изначальный вопрос существенно изменился, @Greenonline


1 ответ


2

У меня не получается загрузить несколько скетчей

Arduino может запускать только один скетч за раз. Вы можете делать несколько вещей в одном скетче, но у вас может быть только один скетч.

... но всякий раз, когда я пытаюсь загрузить новый скетч, он не загружается.

Что именно не работает? Вы должны иметь возможность менять скетчи, новый скетч должен заменить старый скетч; Если это не работает, у вас вообще другая проблема.

Вот несколько кодов, которые я хочу запустить вместе...

Вам придется написать новый скетч, который объединит поведение двух скетчей.

что-то вроде:

...
setup()
{
    // общий код настройки здесь
}
...
loop()
{
    int sensor_reading_1 = analogRead(sensor_pin);
    float sensor_reading_2_h = dht.readHumidity();
    float sensor_reading_2_t = dht.readTemperature();             

    ... // что-то делать с показаниями
}
,

Ошибка, по-видимому, возникла из-за того, что я использовал 2 Voids в 2 отдельных вкладках., @guillo

@guillo эмм... что? Это вообще не имеет никакого смысла!, @esoterik

Вот какая ошибка возникла: «Переопределение пустотной установки» Не могу вставить сюда весь код ошибки., @guillo

Пару часов работы мне удалось объединить их вместе. Спасибо за ваши ответы!, @guillo

@guillo просто для ясности, это не "я использовал 2 Void", а "я объявил 2 setups". Вы можете иметь бесконечное количество функций void, поскольку void является возвращаемым типом, но каждая функция должна иметь уникальное имя, @frarugi87