Raw Text Content QR
spider-worm-dog



case 6:
if (subscreen == 0) {
    lcd_gotoxy(0, 0);
    lcd_puts("Czujnik HIH8120");
    lcd_gotoxy(0, 1);
    lcd_puts("I2C - wilg/temp");
} else {
    // Zmienna na dane
    uint8_t data[4];
    volatile uint16_t res_H, res_T;
    volatile uint16_t humidity, temperature; // *100

    // Sekwencja I2C — na bazie działającego kodu:

    TWI_start();
    TWI_address_transmit();
    TWI_stop();

    _delay_ms(50);  // minimum 36 ms — spokojnie 50 ms OK

    TWI_start();
    TWI_address_receive();

    data[0] = TWI_receive_ACK();
    data[1] = TWI_receive_ACK();
    data[2] = TWI_receive_ACK();
    data[3] = TWI_receive_NACK();

    TWI_stop();

    // Konwersja danych (z Twojego prostego kodu):

    res_H = ((uint16_t)(data[0] & 0x3F) << 8) | data[1];
    humidity = (uint16_t)(((float)res_H / 16382.0f) * 10000.0f);  // *100

    res_T = ((uint16_t)(data[2]) << 6) | (data[3] >> 2);
    temperature = (uint16_t)(((float)res_T / 16382.0f) * 16500.0f - 4000.0f);  // *100

    lcd_gotoxy(0, 0);
    char buf[32];
    sprintf(buf, "Wilg: %d.%02d %%", humidity / 100, humidity % 100);
    lcd_puts(buf);

    lcd_gotoxy(0, 1);
    sprintf(buf, "Temp: %d.%02d C", temperature / 100, temperature % 100);
    lcd_puts(buf);
}
break;

Read 5 times, last 5 minutes ago