Содержание
Всем привет! Как и обещал, продолжаю обзоры различных элементов и взаимодействий с платформой Arduino. Сегодня мы будем использовать датчик температуры LM35 и светодиоды.
Что там потребуется:
- Arduino Uno — 1 шт.
- Breadboard для удобства монтажа — 1 шт.
- Светодиоды (красный и зелёный) — по 1 шт (всего 2 шт).
- Датчик температуры LM35 — 1 шт.
- Резисторы на 220 Ом — 2 шт.
- Соединительные провода.
Исходный код
Принцип действия схемы будет очень прост и понятен из исходника:
int rLED=13;//Пин красного светодиода
int gLED=12;//Пин зелёного
//Преднастройки
void setup()
{
pinMode(rLED,OUTPUT); //Цифровой выход 13 для красного
pinMode(gLED,OUTPUT); //Цифровой выход 12 для зелёного
Serial.begin(9600); //Стартуем последовательный порт (для отслеживания состояния)
}
//Выполнение программы в цикле
void loop()
{
int val; //под значение из датчика
int dat; //под вычисленный результат температуры
val=analogRead(0); //Считываем значение с 0-го аналогового входа
dat=(125*val)>>8; //Преобразуем значение в человеческий вид
if ((dat > 28) || (dat < 26)) //Если температура больше 28 или меньше 26 - мигаем красным, иначе мигаем зелёным.
{
blinkLED(rLED);
}
else
{
blinkLED(gLED);
}
Serial.println(dat); //Выводим в терминал температуру
delay(500); //Задержка в пол-секунды
}
//Мигание LED-ом.
void blinkLED(int NLED)
{
digitalWrite(NLED,HIGH);
delay(350);
digitalWrite(NLED,LOW);
}
Схема проекта
Общее фото проекта:
Соединение
Соединяем следующим образом:
Аналоговые пины:
- A0 – на среднюю ногу датчика LM35;
- 5V – на первую ногу датчика LM35;
Цифровые пины:
- 12 – на сигнальную ногу зелёного светодиода;
- 13 – на сигнальную ногу красного светодиода;
- GND – на общую “землю”;
Резисторы используются от общей земли до “массы” диодов;
Идёт дополнительная линия общей земли на 3-ю ногу датчика LM35;
Принцип работы:
На датчик температуры подаётся напряжение 5В между первой и третьей ногой (+5 и GND соответственно);
Со средней ноги получаем напряжение относительно первой ноги по 10 мВ на каждый градус цельсия. То есть для 20 градусов напряжение будет 0.2В (200 мВ).
Это напряжение поступает на аналоговый вход A0, где оно преобразуется в значение от 0 до 1023 (поскольку на Arduino имеется 10-битный аналогово-цифровой преобразователь), как правило это напряжение от 0 до 5В, поделённое на 1024 шага, каждый из которых размера 0,0049В.
Далее, это числовое значение преобразуется в десятичное значение, в зависимости от которого и вызывается функция мигания светодиода того или иного цвета (операторы сравнения с константами).
Ну а мигание светодиода работает просто – посылается сигнал HIGH на + диода, либо сигнал LOW, что означает высокое напряжение или низкое. Цифровые выходы могут оперировать только двумя этими значениями. Высокое примерно равно 5В (или 3.3В в зависимости от платы), низкое примерно 0В. Вот и всё.
Comments: