Как объединить два разных скетча датчика в один полный скетч?

Как объединить два разных скетча датчика в один полный скетч для полной схемы, которая подключается к одному Arduino Uno?

Острый датчик пыли

int measurePin = A0; // Подключаем датчик пыли к контакту Arduino A0
int ledPower = D8;   // Подключаем 3 контакта драйвера светодиода датчика пыли к Arduino D2

int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;

float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;

void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
}

void loop(){
  digitalWrite(ledPower,LOW); // включаем светодиод
  delayMicroseconds(samplingTime);

  voMeasured = analogRead(measurePin); // читаем значение пыли

  delayMicroseconds(deltaTime);
  digitalWrite(ledPower,HIGH); // выключаем светодиод
  delayMicroseconds(sleepTime);

  // 0–5 В отображается в целочисленные значения 0–1023
  // восстанавливаем напряжение
  calcVoltage = voMeasured * (5.0 / 1024.0);
  dustDensity = 0.17 * calcVoltage - 0.1;

  Serial.print("Raw Signal Value (0-1023): ");
  Serial.print(voMeasured);

  Serial.print(" - Voltage: ");
  Serial.print(calcVoltage);

  Serial.print(" - Dust Density: ");
  Serial.println(dustDensity); // единица измерения: мг/м3

  delay(1000);
}

Датчик MQ-135

int airquality = A2;
void setup()
{
  Serial.begin(9600);

}
void loop()
{

  int sensorValue = analogRead(A2);
  Serial.print("Air Quality = ");
  Serial.print(sensorValue);

  Serial.print("*PPM");
  Serial.println();
  delay(1000);


}

, 👍1

Обсуждение

непонятно, о чем вы спрашиваете.... объединить 2 датчика имеет несколько значений .......... задайте подробный вопрос, @jsotola


2 ответа


2

Невозможно «автоматически» объединить два скетча в один. Это потому, что ресурсы Arduino очень ограничены. Например UNO имеет всего 4 таймера. Если оба скетча захотят использовать один и тот же ресурс, они не будут работать должным образом.

Если вы хотите объединить два скетча в один, вам придется написать новый скетч, который объединит механизмы обоих скетчей. Это непросто, поскольку delay и delayMicroсекунды вызовут у вас проблемы, но вы сможете сделать это, используя micros() и millis() плюс немного модульной математики.

,

3

Я оставлю упрощенный ответ и рекомендую прочитать https: //www.makeuseof.com/tag/getting-started-with-arduino-a-beginners-guide/ или аналогичный, чтобы понять, как программировать.

Скетч Arduino имеет структуру.

  1. Инициализация значений
  2. A void setup() этот код запускается только после запуска MCU
  3. A voidloop(), и этот код выполняется непрерывно.

Поэтому, чтобы объединить два скетча, вам необходимо объединить код, который находится в одних и тех же разделах, и, конечно же, избегать дублирования кода и убедиться, что у вас есть уникальные имена переменных

Острый датчик пыли

int measurePin = A0; // Подключаем датчик пыли к контакту Arduino A0
int ledPower = D8;   // Подключаем 3 контакта драйвера светодиода датчика пыли к Arduino D2

void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
}

Датчик MQ-135

int airquality = A2;
void setup()
{
  Serial.begin(9600);
}

Комбинированный код

int measurePin = A0; // Подключаем датчик пыли к контакту Arduino A0
int ledPower = D8;   // Подключаем 3 контакта драйвера светодиода датчика пыли к Arduino D2
int airquality = A2;

void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
}
,