Files
drybox-core/src/main.c

74 lines
1.2 KiB
C

#include "common.h"
#include "bus/usart.h"
#include "bus/mosfet.h"
#include "bus/pwm.h"
#include "bus/twi.h"
#include <avr/interrupt.h>
// TODO: Get readings from ADC ADS1115 over TWI.
// TODO: Implement optional sensor value check with CRC8.
// TODO: Either implement software PWM for the FAN03 timer
// (which will be quite complicated) or pick a chip with
// more than two 16-bit PWM outputs like the ATmega328PB.
// https://www.mikrocontroller.net/articles/Soft-PWM
int Init(void)
{
USART_Init();
sei();
Info("Initializing...");
MOS_Init();
PWM_Init();
TWI_Init();
MOS_Enable(MOS03);
// MOS_Disable(MOS01);
PWM_SetValue(FAN01, 50);
PWM_SetValue(FAN02, 50);
PWM_SetValue(FAN03, 20);
TWI_SetChannel(AHT01);
TWI_AHT20_Init();
TWI_SetChannel(AHT02);
TWI_AHT20_Init();
TWI_SetChannel(AHT03);
TWI_AHT20_Init();
return 0;
}
void Update(void)
{
float temp, rhum;
TWI_SetChannel(AHT01);
TWI_AHT20_Read(&temp, &rhum);
Info("TEMP=%.2f, RHUM=%.2f", temp, rhum);
TWI_SetChannel(AHT02);
TWI_AHT20_Read(&temp, &rhum);
Info("TEMP=%.2f, RHUM=%.2f", temp, rhum);
TWI_SetChannel(AHT03);
TWI_AHT20_Read(&temp, &rhum);
Info("TEMP=%.2f, RHUM=%.2f", temp, rhum);
}
int main(void)
{
Init();
for (;;) {
Update();
Sleep(1000);
}
return 0;
}