,

MODULE CẢM BIẾN NHIỆT ĐỘ VÀ ĐỘ ẨM (KY-015)

Posted by

Mô-đun cảm biến nhiệt độ và độ ẩm Arduino KY-015, cung cấp giao diện nối tiếp kỹ thuật số để đo độ ẩm và nhiệt độ.


Sơ Đồ Kết Nối


COCe Chạy Chương Trình


int DHpin = 8; // input/output pin

byte dat[5];

byte read_data()

{

byte i = 0;

byte result = 0;

for (i = 0; i < 8; i++) {

while (digitalRead(DHpin) == LOW); // wait 50us

delayMicroseconds(30); //The duration of the high level is judged to determine whether the data is ‘0’ or ‘1’

if (digitalRead(DHpin) == HIGH)

result |= (1 << (8 – i)); //High in the former, low in the post

while (digitalRead(DHpin) == HIGH); //Data ‘1’, waiting for the next bit of reception

}

return result;

}

void start_test()

{

digitalWrite(DHpin, LOW); //Pull down the bus to send the start signal

delay(30); //The delay is greater than 18 ms so that DHT 11 can detect the start signal

digitalWrite(DHpin, HIGH);

delayMicroseconds(40); //Wait for DHT11 to respond

pinMode(DHpin, INPUT);

while(digitalRead(DHpin) == HIGH);

delayMicroseconds(80); //The DHT11 responds by pulling the bus low for 80us;

if(digitalRead(DHpin) == LOW)

delayMicroseconds(80); //DHT11 pulled up after the bus 80us to start sending data;

for(int i = 0; i < 5; i++) //Receiving temperature and humidity data, check bits are not considered;

dat[i] = read_data();

pinMode(DHpin, OUTPUT);

digitalWrite(DHpin, HIGH); //After the completion of a release of data bus, waiting for the host to start the next signal

}

void setup()

{

Serial.begin(9600);

pinMode(DHpin, OUTPUT);

}

void loop()

{

start_test();

Serial.print(“Humdity = “);

Serial.print(dat[0], DEC); //Displays the integer bits of humidity;

Serial.print(‘.’);

Serial.print(dat[1], DEC); //Displays the decimal places of the humidity;

Serial.println(‘%’);

Serial.print(“Temperature = “);

Serial.print(dat[2], DEC); //Displays the integer bits of temperature;

Serial.print(‘.’);

Serial.print(dat[3], DEC); //Displays the decimal places of the temperature;

Serial.println(‘C’);

byte checksum = dat[0] + dat[1] + dat[2] + dat[3];

if (dat[4] != checksum)

Serial.println(“– Checksum Error!”);

else

Serial.println(“– OK”);

delay(1000);

}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *