Untitled
unknown
plain_text
2 years ago
1.8 kB
6
Indexable
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 // Pin dữ liệu kết nối với DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int ldrPin = A0; // Pin analog kết nối với LDR unsigned long previousMillis1 = 0; unsigned long previousMillis2 = 0; const long interval1 = 1000; // Khoảng thời gian cho cảm biến DS18B20 (1 giây) const long interval2 = 500; // Khoảng thời gian cho cảm biến LDR (0.5 giây) void setup() { Serial.begin(9600); sensors.begin(); } void loop() { unsigned long currentMillis = millis(); // Đọc cảm biến DS18B20 mỗi 1 giây if (currentMillis - previousMillis1 >= interval1) { previousMillis1 = currentMillis; sensors.requestTemperatures(); // Gửi yêu cầu đọc nhiệt độ float temperature = sensors.getTempCByIndex(0); // Đọc nhiệt độ Serial.print("Nhiệt độ: "); Serial.print(temperature); Serial.println(" °C"); } // Đọc cảm biến LDR mỗi 0.5 giây if (currentMillis - previousMillis2 >= interval2) { previousMillis2 = currentMillis; int ldrValue = analogRead(ldrPin); // Đọc giá trị từ LDR Serial.print("Giá trị LDR: "); Serial.println(ldrValue); } } Trong ví dụ này, chúng ta sử dụng hai biến previousMillis1 và previousMillis2 để theo dõi thời gian đã trôi qua cho cảm biến DS18B20 và LDR. Cảm biến DS18B20 được đọc mỗi 1 giây và cảm biến LDR được đọc mỗi 0.5 giây. Bằng cách này, cả hai module cảm biến sẽ chạy độc lập mà không ảnh hưởng đến thời gian delay của nhau.
Editor is loading...