Статьи » Разработки |
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 секунды. Это и есть время обновления информации с датчика. } Пояснения в коде буду стараться всегда указывать, так будет понятно что какая функция выполняет. Будут вопросы, пишите в комментариях и на форуме. Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 19207. Оценка статьи: 5.0 из 5. Уже оценило 6 читателей |
Всего комментариев: 0 | |