6#if !defined(DRIVER_DS18B20_DRIVER_H_)
7#define DRIVER_DS18B20_DRIVER_H_
15#define DS18B20_SCRATCHPAD_SIZE 9U
17#define DS18B20_CONVERSION_TIME_MS 750U
19#define DS18B20_FAMILY_CODE 0x28U
21#define DS18B20_MAX_DEVICES 8U
113 uint8_t max_devices);
168 float* temperature_celsius);
247 int16_t* raw_temperature);
256 float* temperature_celsius);
uint8_t ds18b20_bus_get_device_count(const ds18b20_bus_driver_t *driver)
Devuelve la cantidad de sensores actualmente descubiertos.
bool ds18b20_init(ds18b20_driver_t *driver, const onewire_pin_config_t *pin_config)
Inicializa el driver DS18B20 sobre el pin indicado.
uint8_t ds18b20_bus_discover(ds18b20_bus_driver_t *driver)
Descubre sensores DS18B20 y actualiza la tabla interna del bus.
bool ds18b20_bus_get_latest_raw(const ds18b20_bus_driver_t *driver, uint8_t index, int16_t *raw_temperature)
Obtiene la ultima temperatura cruda cacheada de un sensor del bus.
ds18b20_bus_state_t
Estado del gestor multi-sensor para un bus 1-Wire compartido.
@ DS18B20_BUS_STATE_READING
@ DS18B20_BUS_STATE_ERROR
@ DS18B20_BUS_STATE_CONVERTING
bool ds18b20_is_present(ds18b20_driver_t *driver)
Verifica si hay un dispositivo presente en el bus del sensor.
bool ds18b20_init_with_rom(ds18b20_driver_t *driver, const onewire_pin_config_t *pin_config, const uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE])
Inicializa un sensor DS18B20 concreto identificado por su ROM.
bool ds18b20_bus_get_rom_code(const ds18b20_bus_driver_t *driver, uint8_t index, uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE])
Copia el codigo ROM de un sensor descubierto en el bus.
bool ds18b20_read_raw(ds18b20_driver_t *driver, int16_t *raw_temperature)
Lee la temperatura cruda del sensor en forma bloqueante.
ds18b20_state_t
Estado interno de la conversion no bloqueante del sensor.
@ DS18B20_STATE_CONVERTING
@ DS18B20_STATE_DATA_READY
void ds18b20_bus_process(ds18b20_bus_driver_t *driver, uint16_t elapsed_ms)
Avanza la maquina de estados multi-sensor del bus.
void ds18b20_process(ds18b20_driver_t *driver, uint16_t elapsed_ms)
Avanza la maquina de estados no bloqueante del sensor.
bool ds18b20_is_busy(const ds18b20_driver_t *driver)
Indica si hay una conversion en curso.
bool ds18b20_bus_is_busy(const ds18b20_bus_driver_t *driver)
Indica si el bus esta ocupado convirtiendo o leyendo sensores.
bool ds18b20_bus_init(ds18b20_bus_driver_t *driver, const onewire_pin_config_t *pin_config)
Inicializa un bus compartido para varios sensores DS18B20.
bool ds18b20_bus_has_valid_sample(const ds18b20_bus_driver_t *driver, uint8_t index)
Indica si un sensor del bus tiene una muestra valida disponible.
uint8_t ds18b20_discover(const onewire_pin_config_t *pin_config, uint8_t rom_codes[][ONEWIRE_ROM_CODE_SIZE], uint8_t max_devices)
Busca sensores DS18B20 presentes en el bus indicado.
bool ds18b20_start_conversion(ds18b20_driver_t *driver)
Inicia una conversion de temperatura.
bool ds18b20_read_scratchpad(ds18b20_driver_t *driver, uint8_t scratchpad[DS18B20_SCRATCHPAD_SIZE])
Lee el scratchpad completo del sensor.
#define DS18B20_MAX_DEVICES
Cantidad maxima de sensores DS18B20 por bus en esta implementacion.
bool ds18b20_has_valid_sample(const ds18b20_driver_t *driver)
Indica si el driver dispone de una ultima muestra valida.
bool ds18b20_get_latest_temperature_celsius(const ds18b20_driver_t *driver, float *temperature_celsius)
Obtiene la ultima temperatura valida en grados Celsius.
bool ds18b20_read_temperature_celsius(ds18b20_driver_t *driver, float *temperature_celsius)
Lee la temperatura del sensor en grados Celsius en forma bloqueante.
bool ds18b20_bus_get_latest_temperature_celsius(const ds18b20_bus_driver_t *driver, uint8_t index, float *temperature_celsius)
Obtiene la ultima temperatura cacheada de un sensor del bus en Celsius.
bool ds18b20_bus_start_conversion(ds18b20_bus_driver_t *driver)
Inicia una conversion global para todos los sensores del bus.
bool ds18b20_get_latest_raw(const ds18b20_driver_t *driver, int16_t *raw_temperature)
Obtiene la ultima temperatura cruda ya convertida.
#define DS18B20_SCRATCHPAD_SIZE
Tamano del scratchpad del DS18B20.
Interfaz del driver para bus 1-Wire por bit-banging.
#define ONEWIRE_ROM_CODE_SIZE
Tamano del codigo ROM de un dispositivo 1-Wire.
Estado del driver para multiples sensores DS18B20 sobre un mismo bus.
ds18b20_bus_state_t state
uint16_t conversion_elapsed_ms
Datos cacheados de un sensor DS18B20 descubierto en un bus compartido.
int16_t last_raw_temperature
Estado del driver DS18B20 para un sensor individual.
int16_t last_raw_temperature
uint16_t conversion_elapsed_ms
Estado del driver 1-Wire para un bus individual.
Configuracion fisica del pin usado por el bus 1-Wire.