from pybricks.parameters import Port from pybricks.nxtdevices import VernierAdapter from math import log # Conversion formula for Surface Temperature Sensor def convert_raw_to_temperature(voltage): # Convert the raw voltage to the NTC resistance # according to the Vernier Adapter EV3 block. counts = voltage / 5000 * 4096 ntc = 15000 * (counts) / (4130 - counts) # Handle log(0) safely: make sure that ntc value is positive. if ntc <= 0: ntc = 1 # Apply Steinhart-Hart equation as given in the sensor documentation. K0 = 1.02119e-3 K1 = 2.22468e-4 K2 = 1.33342e-7 return 1 / (K0 + K1 * log(ntc) + K2 * log(ntc) ** 3) # Initialize the adapter on port 1 thermometer = VernierAdapter(Port.S1, convert_raw_to_temperature) # Get the measured value and print it temp = thermometer.value() print(temp)