Вопрос: как объединить два разных кода
Я увлекаюсь Arduino, и у меня возникли проблемы с одновременным запуском двух скетчей на Arduino UNO. В первом случае речь идет о программе, которая считывает температуру и относительную влажность, а во втором - о программе, которая считывает барометрическое давление. Обе программы работают независимо, но когда я пытаюсь объединить их, никакой помощи
это код для определения температуры и относительной влажности:
#include <Adafruit_Sensor.h>
#include <LiquidCrystal.h>
#include <DHT.h>
#include <DHT_U.h>
//ПЕРЕМЕННЫЕ
//Asignación de los pines digitales
int SENSOR = 2; //Este es el pin #2
int RS = 4;
int E = 5;
int D4 = 6;
int D5 = 7;
int D6 = 8;
int D7 = 9;
//Variables de lectura de tempratura y humedad
int temp;
int hume;
//Creación de variables para el sensor y el display
DHT dht(SENSOR,DHT11); // Общий формат: DHT <var_name>(PIN, МОДЕЛЬ ДАТЧИКА)
LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // Общий формат: Жидкокристаллический <var_name> (RS, RW, ВКЛЮЧИТЬ, D0, D1, D2, D3, D4, D5, D6, D7)
//Variable para salida del abanico
int motor = 12;
void setup(){
//Инициализация датчика температуры
dht.begin();
//Iniciar el LCD
lcd.begin(16,2); //(tipo 16 columnas, 2 líneas)
//Setea el Pin 12 como salida
pinMode(motor,OUTPUT);
}
void loop(){ //Este es el buclé principal del programa
//Lee valores físicos
hume = dht.readHumidity();
temp = dht.readTemperature();
//Limpia el LCD
lcd.clear(); //esta instrucción coloca el cursor en la pos 0,0 (columna, fila)
lcd.setCursor(0,0); //(no necesaria porque la linea de arriba ya lo hace)
//Escribe los valores leídos en el LCD
lcd.print("TEMPERATURA: ");
lcd.print(temp);
lcd.print("C");
lcd.setCursor(0,1); //esta instrucción coloca el cursor en la pos 0,1 (columna, fila)
lcd.print("HUMEDAD: ");
lcd.print(hume);
lcd.print("%");
//Activa el motor si la temperatura pasa el valor deseado
if(temp>=30){ // Compara si la temp ya es 30 grados
digitalWrite(motor,HIGH); //Si lo es manda un 1 lógico a teavés del pin digital #12
}
else{
digitalWrite(motor,LOW);// sino, manda un 0, lo que apagaría el motor
}
delay(2000);//valor en milisengundos para que repita el ciclo
}
а это код барометрического давления:
#include <Wire.h>
#include <Adafruit_BMP085.h>
// Подключите VCC датчика BMP085 к напряжению 3,3 В (НЕ 5,0 В!)
// Подключите GND к заземлению
// Подключите SCL к i2c clock - on '168 / '328 Arduino Uno / Duemilanove / etc, Аналоговый 5
// Подключите SDA к данным i2c - на '168 / '328 Arduino Uno / Duemilanove / etc, которые являются аналоговыми 4
// EOC не используется, это означает окончание преобразования
// XCLR - это контакт сброса, также здесь не используемый
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Рассчитать высоту, предполагая "стандартную" барометрическую
// давление 1013,25 миллибар = 101325 Паскаль
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// вы можете получить более точное измерение высоты
// если вы знаете текущее давление на уровне моря, которое будет
// меняется в зависимости от погоды и тому подобного. Если это 1015 миллибар
// это равно 101500 паскалям.
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(101500));
Serial.println(" meters");
Serial.println();
delay(500);
}
@LAURA CAMILA RANGEL CARDENAS, 👍0
Обсуждение1 ответ
Вам нужно написать одну программу, используя элементы из каждого блока кода. Arduino ни в коем случае не будет запускать обе программы одновременно, он будет запускать только одну или другую. Вы можете скопировать и вставить их вместе, но если все сделано правильно, это не будет работать. Вот почему так важно понимать код, который вы используете.
- (Код ультразвукового датчика: такого файла или каталога нет)
- Несколько неблокирующих таймеров обратного отсчета?
- Датчик HC-SR505 PIR выдает только HIGH уровень
- Отправка данных из ESP8266 в PHP
- Определение уровня заряда с помощью датчика тока (ACS758) с arduino uno
- Использование YS-IRTM с Arduino Uno
- Как объединить два разных скетча датчика в один полный скетч?
- Как использовать фотодиод для arduino?
Если проблема связана с вашим совместным кодом, покажите этот код, а не отдельный скетч, который работает. Вам также нужно подробнее остановиться на значении слова "без помощи", что оно означает? Есть ошибка? не удается скомпилировать? и т.д.., @hcheung
напишите новый скетч , который делает все, что делают два скетча ... замените некоторые из serial.print на lcd.print ... например, в setup () выполните
dht.begin
,lcd.begin
, очистить ЖК-дисплей, отобразить сообщение о запуске на ЖК-дисплее, еслиbmp.begin
не удается, затем отобразите сообщение об ошибке ..... и т. д, @jsotolaвы можете обратиться к [как объединить два кода Arduino] (https://arduinogetstarted.com/faq/how-to-combine-two-arduino-sketches ), @Rozona Zoro