Статьи » Разработки |
2015-04-14 в 00:18 (последнее изменение 2021-04-19 в 23:39)
Продолжаю изучать основы программирования микроконтроллеров. Кто-то скажет что Arduino для школьников, но тут все очень наглядно и понятно, а трудности все же возникают. Простота реализации проектов впечатляет. Можно сделать прототип устройства, потом для удешевления конструкции зашить код в другой микроконтроллер будь то tiny13 либо Mega8. Кстати в эти микроконтроллеры можно загрузить код Arduino. Но об этом немного не сейчас. Сейчас же я покажу как подключить датчик углеводородных газов (пропан, метан, бутан), спирта и дыма MQ-2. Можно таким образом подключить любой из серии MQ. При этом в мониторе последовательного порта (Ctrl+Shift+M) который находиться в Инструментах программы будут выводиться значения с датчика. Можно на свой вкус настроить его работу если не устраивает мой вариант. Для начала схема подключения светодиодов и динамика. Можно использовать резисторы даже 220 Ом. Так они не будут слишком тусклые. Динамик подойдет любой без внутреннего генератора. А вот так подключаем сам датчик к Arduino. Код
*/
Скетч для работы с сенсором газа Источник: https://tehnopage.ru/ */ int sensorPin = 0; // Пин, на котором у нас висит сенсор газа аналоговый вход 0 int redled = 2; // Пин с красным светодиодом цифровой выход 2 int yelowled = 3; // Пин с желтым светодиодом цифровой выход 3 int greenled = 4; // Пин с зеленым светодиодом цифровой выход 4 int gas = 0; // Переменная для хранения значения газового сенсора void setup() { pinMode(greenled, OUTPUT); // Объявляем 2,3 и 4 пины, как выходы для светодиодов pinMode(yelowled, OUTPUT); pinMode(redled, OUTPUT); Serial.begin(9600); // Инициализируем серийный порт будем слать в него данные измерения /* При включении мигаем зеленым, желтым, красным светодиодом чтоб получить стабильные показания вся процедура занимает 20 секунд. Не самое оптимальное решение можно написать по проще зато так понятнее */ digitalWrite(greenled, HIGH); delay(1000); digitalWrite(yelowled, HIGH); delay(1000); digitalWrite(redled, HIGH); delay(1000); digitalWrite(greenled, LOW); delay(1000); digitalWrite(yelowled, LOW); delay(1000); digitalWrite(redled, LOW); delay(1000); digitalWrite(greenled, HIGH); delay(1000); digitalWrite(yelowled, HIGH); delay(1000); digitalWrite(redled, HIGH); delay(1000); digitalWrite(greenled, LOW); delay(1000); digitalWrite(yelowled, LOW); delay(1000); digitalWrite(redled, LOW); delay(1000); digitalWrite(greenled, HIGH); delay(1000); digitalWrite(yelowled, HIGH); delay(1000); digitalWrite(redled, HIGH); delay(1000); digitalWrite(greenled, LOW); delay(1000); digitalWrite(yelowled, LOW); delay(1000); digitalWrite(redled, LOW); delay(1000); digitalWrite(greenled, HIGH); delay(500); digitalWrite(yelowled, HIGH); delay(500); digitalWrite(redled, HIGH); delay(500); digitalWrite(greenled, LOW); digitalWrite(yelowled, LOW); digitalWrite(redled, LOW); } void loop() { gas = analogRead(sensorPin); // Получаем значения от датчика газа /* Далее работаем с данными из переменной gas, если ее значение более 200 но менее 300, то включаем зеленый светодиод, желтый и красный светодиоды гасим */ if (gas > 200, gas < 300) { digitalWrite(greenled, HIGH); digitalWrite(yelowled, LOW); digitalWrite(redled, LOW); } /* Если значение переменной gas больше 300 но меньше 350, то включаем желтый светодиод и проигрываем сигнал на 10 пине, зеленый и красный при этом гасим. */ else if (gas > 300, gas < 350) { tone(10, 900, 200); digitalWrite(greenled, LOW); digitalWrite(yelowled, HIGH); digitalWrite(redled, LOW); } /* Если значение переменной gas больше 350, проигрываем тоновый сигнал на 10 пине, гасим зеленый и желтый светодиод, зажигаем красный. */ else if (gas > 350) { tone(10, 740, 200); digitalWrite(greenled, LOW); digitalWrite(yelowled, LOW); digitalWrite(redled, HIGH); } Serial.println(gas); // Пишем в серийный порт delay(400); // Повторяем void loop процедуру каждые 0,4 секунды. Это и есть время обновления информации с датчика. } Пояснения в коде буду стараться всегда указывать, так будет понятно что какая функция выполняет. Будут вопросы, пишите в комментариях и на форуме.
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 18620. Оценка статьи: 5.0 из 5. Уже оценило 6 читателей |
Всего комментариев: 0 | |