Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.8 kB
2
Indexable
Never
#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.