Necessitem:
Sensor Temperatura DHT11
Servo Motor SG90
Placa Arduino
Proboard
cables
S'ha d'instal·lar biblioteca DHT sensor library de Adafruit
Connexions per al sensor de temperatura i humitat DHT11:
Connecta el pin de dades del sensor DHT11 (generalment el segon pin, marcat com a "DATA") al pin digital 2 de l'Arduino.
Connecta el pin VCC (positiu) del sensor DHT11 al pin 5V de l'Arduino.
Connecta el pin GND (terra) del sensor DHT11 al pin GND de l'Arduino.
Connexions per al servomotor SG90:
Connecta el cable marró o negre (terra) del servomotor SG90 al pin GND de l'Arduino.
Connecta el cable vermell (alimentació) del servomotor SG90 al pin 5V de l'Arduino.
Connecta el cable taronja (senyal) del servomotor SG90 al pin digital 9 de l'Arduino. Aquest és el pin de control del servo.
Assegureu-vos que totes les connexions estiguin segures i que no hi hagi cables solts que puguin causar curtcircuits. A més, alimenta l'Arduino amb una font d'alimentació externa o USB per proporcionar prou potència tant a l'Arduino com al servomotor.
Quan hagis realitzat aquestes connexions físiques, pots carregar el codi proporcionat al teu Arduino i executar-lo per controlar el servomotor SG90 en funció de la temperatura mesurada pel sensor DHT11. El servomotor girarà contínuament en sentit horari quan la temperatura superi el llindar especificat al codi.
#include <Servo.h>
#include <DHT.h>
#define DHTPIN 2 // Pin al que está conectado el sensor DHT11
#define DHTTYPE DHT11 // Tipo de sensor DHT que estamos utilizando
DHT dht(DHTPIN, DHTTYPE);
Servo miServo; // Crea un objeto Servo llamado miServo
void setup() {
Serial.begin(9600); // Inicia la comunicación serial
dht.begin();
miServo.attach(9); // Asocia el servo al pin 9
}
void loop() {
float temperatura = dht.readTemperature(); // Lee la temperatura desde el sensor DHT11
float humedad = dht.readHumidity(); // Lee la humedad desde el sensor DHT11
if (!isnan(temperatura) && !isnan(humedad)) { // Verifica que las lecturas sean válidas
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" grados Celsius - Humedad: ");
Serial.print(humedad);
Serial.println("%");
if (temperatura >= 25.0) {
// Gira el servo si la temperatura es igual o superior a 25 grados
for (int angulo = 0; angulo <= 180; angulo++) {
miServo.write(angulo);
delay(10);
}
for (int angulo = 180; angulo >= 0; angulo--) {
miServo.write(angulo);
delay(10);
}
}
} else {
Serial.println("Error al leer el sensor DHT11");
}
delay(2000); // Espera 2 segundos antes de realizar otra lectura
}