Implement ADS1115 register reading and writing

This commit is contained in:
2024-09-04 21:38:12 +02:00
parent 992899f0cb
commit 1602aa4297
3 changed files with 183 additions and 8 deletions

View File

@@ -6,7 +6,7 @@
#include <avr/interrupt.h>
// TODO: Get readings from ADC ADS1115 over I2C.
// TODO: Convert raw data from ADS1115 to usable values.
// TODO: Implement optional sensor value check with CRC8.
// TODO: Set timeouts for polling based things like I2C.
// TODO: Write an improved serial parser (low priority).
@@ -78,18 +78,27 @@ int Init(void)
void Update(void)
{
float temp, rhum;
short raw[4];
I2C_SetChannel(AHT01);
if (I2C_AHT20_Read(&temp, &rhum))
if (I2C_AHT20_Read(&temp, &rhum) == 0)
Info("TEMP=%.2fC, RHUM=%.2f%", temp, rhum);
I2C_SetChannel(AHT02);
if (I2C_AHT20_Read(&temp, &rhum))
if (I2C_AHT20_Read(&temp, &rhum) == 0)
Info("TEMP=%.2fC, RHUM=%.2f%", temp, rhum);
I2C_SetChannel(AHT03);
if (I2C_AHT20_Read(&temp, &rhum))
if (I2C_AHT20_Read(&temp, &rhum) == 0)
Info("TEMP=%.2fC, RHUM=%.2f%", temp, rhum);
raw[0] = I2C_ADS1115_Read(0);
raw[1] = I2C_ADS1115_Read(1);
raw[2] = I2C_ADS1115_Read(2);
raw[3] = I2C_ADS1115_Read(3);
Info("ADC0=%04X, ADC1=%04X, ADC2=%04X, ADC3=%04X",
raw[0], raw[1], raw[2], raw[3]);
}
int main(void)