Yl105 Datasheet Better [ Works 100% ]
*data = byte; return true;
| Parameter | Symbol | Value | Your code must... | | :--- | :--- | :--- | :--- | | Start signal low time | Tbe | > 18 ms | Pull pin LOW for 20ms (not 1ms) | | Sensor response low | Trel | 80 µs | Wait for pin to go LOW | | Sensor response high | Treh | 80 µs | Wait for pin to go HIGH | | Bit "0" high time | Tbit_0 | 24-28 µs | Sample after 30 µs | | Bit "1" high time | Tbit_1 | 70-74 µs | Sample after 50 µs | yl105 datasheet better
// Datasheet threshold: 30 µs is the boundary if(duration > 30) = (1 << (7 - i)); *data = byte; return true; | Parameter |
#define YL105_PIN 2 void startSignal() pinMode(YL105_PIN, OUTPUT); digitalWrite(YL105_PIN, LOW); delay(20); // Better: 20ms (exceeds 18ms requirement) digitalWrite(YL105_PIN, HIGH); delayMicroseconds(40); pinMode(YL105_PIN, INPUT); *data = byte
bool readByte(uint8_t* data) uint8_t byte = 0; for (int i = 0; i < 8; i++) while(digitalRead(YL105_PIN) == LOW); // Wait for start of bit uint32_t startTime = micros(); while(digitalRead(YL105_PIN) == HIGH); uint32_t duration = micros() - startTime;
In the crowded world of capacitive humidity sensors, the YL105 is often misunderstood. Viewed by beginners as a "cheap alternative," this sensor module—when paired with a correct reading of its datasheet—offers a superior price-to-performance ratio for 80% of DIY and commercial IoT projects.