IR sketch keeps getting the same code: 4294967295
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
// Khai báo địa chỉ I2C của màn hình LCD
LiquidCrystal_I2C lcd(0x27,16, 2);
// Khai báo chân analog A0 (cảm biến độ ẩm)
const int moisturePin = A0;
// Khai báo chân analog A1 (cảm biến nhiệt độ)
const int tempPin = A1;
// Khai báo chân analog A2 (cảm biến ánh sáng)
const int lightPin = A2;
#include <Servo.h>
Servo myservo1; // Khởi tạo đối tượng Servo
const int servoPin1 = 2; // Chân điều khiển Servo 1
Servo myservo2; // Khởi tạo đối tượng Servo
const int servoPin2 = 3; // Chân điều khiển Servo 2
Servo myservo3; // Khởi tạo đối tượng Servo
const int servoPin3 = 4; // Chân điều khiển Servo 3
Servo myservo4; // Khởi tạo đối tượng Servo
const int servoPin4 = 5; // Chân điều khiển Servo 4
int servoPos = 0; // Biến lưu trữ vị trí của Servo
// Khai báo chân điều khiển relay cho đèn (dựa trên độ ẩm)
const int lightRelayPin = 13;
// Khai báo chân điều khiển relay cho quạt
const int fanRelayPin = 12;
// Khai báo chân điều khiển relay cho đèn (dựa trên nhiệt độ)
const int tempLightRelayPin = 11;
// Ngưỡng độ ẩm quy định để mở relay (độ ẩm cao hơn sẽ mở relay)
const int moistureThreshold = 500;
// Ngưỡng nhiệt độ quy định để bật quạt
const int highTempThreshold = 300; // Nhiệt độ cao hơn sẽ bật quạt
// Ngưỡng nhiệt độ quy định để bật đèn
const int lowTempThreshold = 100; // Nhiệt độ thấp hơn sẽ bật đèn
// Ngưỡng cường độ ánh sáng quy định để thực hiện hành động
const int lightThreshold = 30; // Giá trị cường độ ánh sáng
// Biến lưu trữ trạng thái chế độ (auto hoặc manual)
bool autoMode = true;
// Khai báo đối tượng IRrecv và mã học từ remote
const int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
// Khởi tạo cổng Serial với tốc độ 9600 bps để ghi log dữ liệu
Serial.begin(9600);
// Khởi tạo màn hình LCD
lcd.init();
lcd.setCursor(0,0);
lcd.backlight(); // Bật đèn nền LCD
lcd.display();
// Đặt chân điều khiển relay là output
pinMode(lightRelayPin, OUTPUT);
pinMode(fanRelayPin, OUTPUT);
pinMode(tempLightRelayPin, OUTPUT);
// Kết nối Servo với chân điều khiển
myservo1.attach(servoPin1);
myservo2.attach(servoPin2);
myservo3.attach(servoPin3);
myservo4.attach(servoPin4);
// Khởi tạo đối tượng IRrecv
irrecv.enableIRIn();
}
void loop() {
// Kiểm tra nếu có dữ liệu từ remote
if (irrecv.decode(&results)) {
// Lưu giá trị mã học vào biến code
unsigned long code = results.value;
Serial.println(code);
// Xử lý dữ liệu từ remote
if (code == 4294967295) { // Mã học của nút "Auto Mode"
autoMode = !autoMode; // Chuyển đổi chế độ tự động
// Hiển thị trạng thái chế độ lên LCD
Serial.println(code);
lcd.clear();
lcd.setCursor(0, 0);
if (autoMode) {
lcd.print("Auto Mode: ON");
} else {
lcd.print("Auto Mode: OFF");
}
delay(1000); // Đợi 1 giây để tránh việc nhận các lệnh liên tiếp từ remote
}
irrecv.resume(); // Tiếp tục nhận dữ liệu từ remote
}
}
Ignore the mess that I have made on the top.
I tried the script in a simulator and found out that every button I pressed gave me the same code, which is 4294967295.
user97498
- 17
- 1
lang-cpp