Розглядаються основи використання термочутливих резисторів - термісторів та перетворення аналогового сигналу у цифровий вигляд
Пояснення до коду// Величезна кількість готового коду вже написано іншими людьми
// і зберігається у вигляді окремих файлів, які називаються
// бібліотеками. Для використання коду з бібліотеки, її потрібно
// підключити (англ. Include). Бібліотека «math» дає різні
// математичні функції, в тому числі функцію логарифма
// (англ. Log), яка нам знадобиться далі
#include <math.h>
#define FIRST_LED_PIN 2
#define LED_COUNT 10
// Параметр конкретного типу термистора (з datasheet):
#define TERMIST_B 4300
#define VIN 5.0
недійсними установки ( )
{
для ( Int я = 0 ; я < LED_COUNT ; ++ я )
pinMode ( я + FIRST_LED_PIN, OUTPUT ) ;
}
void loop ( )
{
// обчислюємо температуру в ° С за допомогою магічної формули.
// Використовуємо при цьому не цілі числа, а речові. Їх ще
// називають числами з плаваючою (англ. Float) точкою. В
// виразах з речовими числами обов'язково потрібно явно
// вказувати дробову частину у всіх констант. Інакше подрібнена
// частина результату буде відкинута
Поплавок напруга = analogRead ( А0 ) * VIN / 1023,0 ;
плавати r1 = напруга / ( VIN - напруга ) ;
Поплавок температура = 1 . / ( 1 . / ( TERMIST_B ) * журнал ( 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 × 10 38 до 3.4028235 × 10 38 ,
- при цьому кількість значущих цифр може бути 6-7: всіх цифр, не тільки після коми!
- точність обчислень з такими даними невелика, у вас можуть виникнути несподівані помилки, наприклад, при використанні float в умовному операторі. Не покладайтеся на точність!
- обчислення з float відбуваються повільніше, ніж з цілими числами
- Показання термистора пов'язані з температурою нелінійно, тому нам доводиться використовувати таку громіздку формулу.