#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// Wokwi ONLY!!!
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
void setup() {
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)); // Set the ADC clock to 16 MHz / 128 = 125 kHz
ADMUX |= (1 << REFS0); // Set the ref. voltage to Vcc (5V)
ADCSRA |= (1 << ADEN); // Activate the ADC
ADCSRA |= (1 << ADSC);
lcd.begin(16,2);
}
void loop() {
int val = read_adc(0); // Read the value
lcd.setCursor(0,0);
lcd.print("Raw: ");
lcd.print(val);
// Wokwi ONLY!!!
lcd.setCursor(0,1);
lcd.print("Calc: ");
float calc_val = 1 / (log(1 / (1023. / val - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.print(calc_val);
}
uint16_t read_adc(uint8_t channel) {
ADMUX &= 0xE0; // Delete MUX0-4 bits
ADMUX |= channel & 0x07; // Sets in MUX0-2 the value of the new channel to be read
ADCSRB = channel & (1 << 3); // Set MUX5 value
ADCSRA |= (1 << ADSC); // Start conversion
while (ADCSRA & (1 << ADSC)); // Wait for the conversion to finish
return ADCW;
}