/* USER CODE BEGIN 4 */
// Fonction qui transmet un caractère via UART et le renvoie.
// Utilisé pour la sortie standard (printf).
int __io_putchar(int ch) {
HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, 0xFFFF); // Envoyer le caractère via UART
// ITM_SendChar(ch); // Option alternative pour envoyer le caractère via ITM (Instrument Trace Macrocell)
return ch; // Retourner le caractère envoyé
}
// Callback de conversion ADC complète
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
adc_value = HAL_ADC_GetValue(hadc); // Lire la valeur convertie depuis le registre ADC
adcReady = 1; // Active le flag pour indiquer que la conversion est terminée
}
// Fonction pour interpréter la thermistance
float thermistance(uint32_t value) {
const float A = 0.001129148; // Coefficient A de Steinhart-Hart
const float B = 0.000234125; // Coefficient B de Steinhart-Hart
const float C = 0.0000000876741; // Coefficient C de Steinhart-Hart
const float REFERENCE_RESISTANCE = 10000.0; // Résistance de référence de la thermistance
const float ADC_VOLTAGE = 3.3; // Tension d'alimentation de l'ADC
const float ADC_RESOLUTION = 4096.0; // Résolution de l'ADC
float voltage = (value / ADC_RESOLUTION) * ADC_VOLTAGE; // Calcul de la tension
float resistance = REFERENCE_RESISTANCE * ((ADC_VOLTAGE / voltage) - 1); // Calcul de la résistance
float log_r = log(resistance); // Calcul du logarithme de la résistance
float temperature_kelvin = 1.0 / (A + B * log_r + C * log_r * log_r * log_r); // Calcul de la température en Kelvin
float temperature_celsius = temperature_kelvin - 273.15; // Conversion de la température en Celsius
return temperature_celsius; // Retourne la température en Celsius
}
/* USER CODE END 4 */