/* O seguinte código é um exemplo de como usar um botão
para acionar a leitura de sensores e mover um servo.
O programa começa definindo algumas constantes
para os pinos usados pelos componentes: um sensor
ultrassônico no TRIGGER_PIN e ECHO_PIN, um sensor
DHT11 no DHT_PIN, um potenciômetro no POT_PIN,
um botão no BUTTON_PIN e um servo no SERVO_PIN.*/
#include <Servo.h>
#include <DHT.h>
#define TRIGGER_PIN 2
#define ECHO_PIN 3
#define DHT_PIN 4
#define POT_PIN A0
#define BUTTON_PIN 5
#define SERVO_PIN 9
Servo myservo;
DHT dht(DHT_PIN, DHT22);
long duration, distance;
int pos = 0;
int potValue = 0;
bool buttonPressed = false;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myservo.attach(SERVO_PIN);
dht.begin();
Serial.begin(9600);
}
void loop() {
/* Se o botão foi pressionado os valores dos sensores são lidos.
Primeiro, é lido o valor do potenciômetro e usado para mover
o servo.*/
if (digitalRead(BUTTON_PIN) == LOW) {
/*O valor do potenciometro é lido*/
potValue = analogRead(POT_PIN);
/*O valor do sensor ultrassônico é lido e calculada a distância
em centímetros. */
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
/*É lido o valor do sensor DHT11, que mede temperatura e
umidade do ar.*/
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Movimento do servo
pos = map(potValue, 0, 1023, 0, 180);
myservo.write(pos);
/*Os valores dos sensores são impressos na porta serial.
Quando o botão está pressionado, um LED conectado ao
pino LED_PIN acende. */
//Quando o botão é solto, o LED apaga
Serial.print("Potentiometer: ");
Serial.println(potValue);
Serial.print("Ultrasonic Sensor: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("DHT11 Sensor - Temperature: ");
Serial.print(temperature);
Serial.print(" °C - Humidity: ");
Serial.print(humidity);
Serial.println(" %");
}
}