СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Проект "Комнатный термометр"

Категория: Прочее

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Проект "Комнатный термометр"»

Принципиальная схема

Схема на макетке



Обратите внимание
  • Термистор мы включили в известную нам схему делителя напряжения.

Скетч

p150_bar_thermometer.ino

// Огромное количество готового кода уже написано другими людьми

// и хранится в виде отдельных файлов, которые называются

// библиотеками. Для использования кода из библиотеки, её нужно

// подключить (англ. include). Библиотека «math» даёт разные

// математические функции, в том числе функцию логарифма

// (англ. log), которая нам понадобится далее

#include

 

#define FIRST_LED_PIN 2

#define LED_COUNT 10

 

// Параметр конкретного типа термистора (из datasheet):

#define TERMIST_B 4300

 

#define VIN 5.0

 

void setup()

{

for (int i = 0; i LED_COUNT; ++i)

pinMode(i + FIRST_LED_PIN, OUTPUT);

}

 

void loop()

{

// вычисляем температуру в °С с помощью магической формулы.

// Используем при этом не целые числа, а вещественные. Их ещё

// называют числами с плавающей (англ. float) точкой. В

// выражениях с вещественными числами обязательно нужно явно

// указывать дробную часть у всех констант. Иначе дробная

// часть результата будет отброшена

 

float voltage = analogRead(A0) * VIN / 1023.0;

float r1 = voltage / (VIN - voltage);

 

 

float temperature = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273;

 

for (int i = 0; i LED_COUNT; ++i) {

// при 21°С должен гореть один сегмент, при 22°С — два и

// т.д. Определяем должен ли гореть i-й нехитрым способом

boolean enableSegment = (temperature = 21+i);

digitalWrite(i + FIRST_LED_PIN, enableSegment);

}

}

Пояснения к коду
  • Директивы для подключения библиотек #include включаются в начало программы.

  • В этом эксперименте мы подключаем библиотеку math.h для того, чтобы использовать функцию взятия натурального логарифма x log(x).

  • В переменных типа float можно хранить дробные числа, числа с плавающей точкой.

  • При использовании переменных данного типа имейте в виду:

    • при операциях с их использованием, указывайте нулевую дробную часть у целых констант, как в примере

    • они могут принимать значения от -3.4028235×1038 до 3.4028235×1038,

    • при этом количество значащих цифр может быть 6-7: всех цифр, не только после запятой!

    • точность вычислений с такими данными невелика, у вас могут возникнуть неожиданные ошибки, например, при использовании float в условном операторе. Не полагайтесь на точность!

    • вычисления с float происходят медленнее, чем с целыми числами

  • Показания термистора связаны с температурой нелинейно, поэтому нам приходится использовать такую громоздкую формулу.




Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!