Sure! Here's an example code that uses both a sound sensor and a rain sensor to control a servo motor:
Code:
#include <Servo.h>
const int soundPin = A0; // sound sensor pin
const int rainPin = A1; // rain sensor pin
const int servoPin = 9; // servo motor pin
Servo myServo;
void setup() {
Serial.begin(9600);
myServo.attach(servoPin);
}
void loop() {
int soundValue = analogRead(soundPin); // read sound sensor value
int rainValue = analogRead(rainPin); // read rain sensor value
Serial.print("Sound: ");
Serial.print(soundValue);
Serial.print(" | Rain: ");
Serial.println(rainValue);
// if sound is detected and it's not raining, move the servo
if (soundValue > 500 && rainValue > 500) {
myServo.write(90); // move servo to 90 degrees
delay(1000); // wait for 1 second
}
// if no sound is detected or it's raining, stop the servo
else {
myServo.write(0); // move servo to 0 degree
delay(100); // wait for 0.1 second
}
}
In this code, the soundPin variable is used to set the analog pin that the sound sensor is connected to. The rainPin variable is used to set the analog pin that the rain sensor is connected to. The servoPin variable is used to set the digital pin that the servo motor is connected to.
In the setup() function, the serial monitor is started and the servo motor is attached to the servoPin.
In the loop() function, both the sound sensor value and rain sensor value are read using the analogRead() function and stored in the soundValue and rainValue variables. If the soundValue is greater than 500 and the rainValue is greater than 500, which means sound is detected and it's not raining, the servo motor is moved to 90 degrees using the write() function. If no sound is detected or it's raining, the servo motor is stopped by moving it to 0 degree. The delay() function is used to wait for a short time before checking the sensor values again.