#include "wokwi-api.h"
#include <stdlib.h>
#include <stdint.h>
typedef struct {
pin_t pin_a0;
uint32_t attr_moist;
timer_t timer;
} chip_state_t;
static void tick(void *user_data) {
chip_state_t *chip = (chip_state_t *)user_data;
float moist = attr_read_float(chip->attr_moist);
if (moist < 0) moist = 0;
if (moist > 100) moist = 100;
// Capacitive style: wetter -> LOWER voltage
float x = moist / 100.0f; // 0..1
float voltage = (1.0f - x) * 3.3f; // 3.3..0
pin_dac_write(chip->pin_a0, voltage);
}
void chip_init(void) {
chip_state_t *chip = (chip_state_t *)calloc(1, sizeof(chip_state_t));
chip->pin_a0 = pin_init("A0", ANALOG);
chip->attr_moist = attr_init_float("soilMoisture", 50.0f);
const timer_config_t cfg = { .callback = tick, .user_data = chip };
chip->timer = timer_init(&cfg);
timer_start_ns(chip->timer, 100000000, true);
}