Встроенный датчик температуры Teensy (ATmega32U4) - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь прочитать данные о температуре в градусах Цельсия и Фаренгейта, используя Teensy 2.0 на чип-датчике температуры. Я знаю, что, поскольку я пытаюсь использовать встроенный датчик температуры, мне нужно работать с ADMUX и MUX, чтобы получить значение напряжения, а затем преобразовать их в градусы Цельсия и Фаренгейта, но я не уверен, что делать с ADMUX и MUX. ,

Ссылка на таблицу: https://www.pjrc.com/teensy/atmega32u4.pdf

int sensorPin = 0; //the analog pin is connected to
                   //the resolution is 10 mV / degree centigrade with a
                   //500 mV offset to allow for negative temperatures

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
}

void loop()                     // run over and over again
{
  // gets voltage reading from the temperature sensor at analog in 0
  int reading = analogRead(sensorPin); 

  // converts reading to voltage, for 3.3v arduino use 3.3
  float voltage = reading * 5.0;
  voltage /= 1024.0; 

  // Print sensor 1
  Serial.println("Temperature Sensor 1");

  // Print out the voltage
  Serial.print(voltage);
  Serial.println(" volts");

  // converts voltage reading to temperature in degree Celsius
  float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset
                                                //to degrees ((voltage - 500mV) times 100)

  // Prints out temperature with unit Celcius
  Serial.print(temperatureC);
  Serial.println(" degrees C");

  // converts Celcius to Fahrenheit
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;

  // Prints out temperature with unit Fahrenheit
  Serial.print(temperatureF);
  Serial.println(" degrees F");

  // Converts Celcius to Kelvin
  float temperatureK = temperatureC + 273;

  // Prints out temperature with unit Kelvin
  Serial.print(temperatureK);
  Serial.println(" degrees K");

  delay(1000);  //waiting a second
}
...