You are on page 1of 2

#include <Arduino.

h>
#include <Wire.h>
#define PIN_SENSOR 12 // chân cảm biến mưa
#define PIN_MOTOR_IN1 25 // chân IN1 của động cơ
#define PIN_MOTOR_IN2 26 // chân IN2 của động cơ
#define PIN_SWITCH 17 // chân của switch
#define PIN_BUTTON_1 18 // chân của nút nhấn 1
#define PIN_BUTTON_2 19 // chân của nút nhấn 2

int last_value = 0; // Giá trị của cảm biến mưa trong lần đọc trước
int switch_state = HIGH; // Trạng thái của switch
int button_1_state = HIGH; // Trạng thái của nút nhấn 1
int button_2_state = HIGH; // Trạng thái của nút nhấn 2

void setup() {
// Khởi tạo chân GPIO cho cảm biến mưa
pinMode(PIN_SENSOR, INPUT);

// Khởi tạo chân GPIO cho động cơ


pinMode(PIN_MOTOR_IN1, OUTPUT);
pinMode(PIN_MOTOR_IN2, OUTPUT);

// Khởi tạo chân GPIO cho switch


pinMode(PIN_SWITCH, INPUT_PULLUP);

// Khởi tạo chân GPIO cho nút nhấn 1


pinMode(PIN_BUTTON_1, INPUT_PULLUP);

// Khởi tạo chân GPIO cho nút nhấn 2


pinMode(PIN_BUTTON_2, INPUT_PULLUP);
}

void loop() {
// Đọc giá trị từ cảm biến mưa
int value = digitalRead(PIN_SENSOR);

// Đọc trạng thái của switch


switch_state = digitalRead(PIN_SWITCH);

// Nếu switch ở trạng thái ON


if (switch_state == LOW) {
// Hoạt động như đoạn code ở trên
if (value != last_value) {
// Lưu giá trị hiện tại của cảm biến mưa
last_value = value;

// Nếu có mưa
if (value == LOW) {
// Quay động cơ theo chiều kim đồng hồ trong 5 giây
digitalWrite(PIN_MOTOR_IN1, HIGH);
digitalWrite(PIN_MOTOR_IN2, LOW);
delay(5000);
digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, LOW);
}
// Nếu không có mưa
else {

// Quay động cơ ngược chiều kim đồng hồ trong 5 giây


digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, HIGH);
delay(5000);
digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, LOW);
}
}
} else {
// Nếu switch ở trạng thái OFF
// Kiểm tra nút nhấn 1
if (digitalRead(PIN_BUTTON_1) == LOW) {
// Quay động cơ theo chiều kim đồng hồ trong 5 giây
digitalWrite(PIN_MOTOR_IN1, HIGH);
digitalWrite(PIN_MOTOR_IN2, LOW);
delay(5000);
digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, LOW);
}

// Kiểm tra nút nhấn 2


if (digitalRead(PIN_BUTTON_2) == LOW) {
// Quay động cơ ngược chiều kim đồng hồ trong 5 giây
digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, HIGH);
delay(5000);
digitalWrite(PIN_MOTOR_IN1, LOW);
digitalWrite(PIN_MOTOR_IN2, LOW);
}
}
}

You might also like