Skip to main content
Arduino

Return to Revisions

3 of 3
Fixed title and typos.
Greenonline
  • 3.2k
  • 7
  • 36
  • 48

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.

lang-cpp

AltStyle によって変換されたページ (->オリジナル) /