Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Светильник с управляемой яркостью

Технологическая карта эксперимента 2.

В этом эксперименте мы меняем яркость светодиода, вращая ручку переменного резистора.

Название операции Графическое, условное изображение Назначение, технология выполнения (поясняющий материал)
Ознакомление со списком деталей для эксперимента
 
    Нам понадобится:
  • 1 плата Arduino Uno;
  • 1 беспаечная макетная плата;
  • 1 светодиод;
  • 1 резистор номиналом 220 Ом;
  • 6 проводов;
  • 1 потенциометр.
Изучение теоретических основ эксперимента Принципиальная схема     У нас имеется схема прошлого эксперимента в которую добавлен делитель напряжения. Благодаря наличию такого делителя можно изменением угла поворота потенциометра изменить значение входного сигнала подаваемого на А0
Сборка на макетной плате
  • Мы подключили «землю» светодиода и переменного резистора (потенциометра) к длинной рельсе «-» макетной платы, и уже ее соединили с входом GND микроконтроллера. Таким образом мы использовали меньше входов и от макетки к контроллеру тянется меньше проводов.
  • Подписи «+» и «-» на макетке не обязывают вас использовать их строго для питания, просто чаще всего они используются именно так и маркировка нам помогает
  • Не важно, какая из крайних ножек потенциометра будет подключена к 5 В, а какая к GND, поменяется только направление, в котором нужно крутить ручку для увеличения напряжения. Запомните, что сигнал мы считываем со средней ножки
  • Для считывания аналогового сигнала, принимающего широкий спектр значений, а не просто 0 или 1, как цифровой, подходят только порты, помеченные на плате как «ANALOG IN» и пронумерованные с префиксом A. Для Arduino Uno — это A0-A5.
Разработка алгоритма скетча     Разработать и вычертить алгоритм самостоятельно.
Подключение среды разработки   1. "Пуск"- arduino-1.8.1 - arduino (если среда еще не запущена)     2. Структура программы Ардуино.   Структура программы Ардуино достаточно проста и в минимальном варианте состоит из двух частей setup() и loop().   void setup() { // код выполняется один раз при запуске программы } void loop() { // основной код, выполняется в цикле }   Функция setup() выполняется один раз, при включении питания или сбросе контроллера. Обычно в ней происходят начальные установки переменных, регистров. Функция должна присутствовать в программе, даже если в ней ничего нет. После завершения setup() управление переходит к функции loop(). Она в бесконечном цикле выполняет команды, записанные в ее теле (между фигурными скобками). Собственно эти команды и совершают все алгоритмические действия контроллера.  
Разработка скетча   #define LED_PIN 9 #define POT_PIN A0   void setup() { pinMode(LED_PIN, OUTPUT); pinMode(POT_PIN, INPUT); } void loop() { int rot, brig;   rot = analogRead(POT_PIN);   brig = rot / 4;     analogWrite(LED_PIN, brig); }   Даём разумные имена для пинов со светодиодом (Led) и потенциометром (англ potentiometer или просто «Pot»). С помощью директивы #define мы сказали компилятору заменять идентификатор POT на A0 — номер аналогового входа.     Пин со светодиодом — выход, как и раньше, а вот пин с потенциометром должен быть входом, (англ. «input»): мы хотим считывать напряжение, выдаваемое им. Заявляем, что далее мы будем использовать 2 переменные с именами rot и brig, и что хранить в них будем целые числа (англ. «integer», сокращённо просто «int»)   Считываем в rot напряжение с потенциометра: микроконтроллер выдаст число от 0 до 1023 пропорциональное углу поворота ручки В brig записываем полученное ранее значение rot делённое на 4. Поскольку в переменных мы пожелали хранить целые значения, дробная часть от деления будет отброшена. В итоге мы получим целое число от 0 до 255 Выдаём результат на светодиод.  
Вопросы для самопроверки    
  1. Можем ли мы при сборке схемы подключить светодиод и потенциометр напрямую к разным входам GND микроконтроллера?
  2. В какую сторону нужно крутить переменный резистор для увеличения яркости светодиода?
  3. Что будет, если стереть из программы строчку pinMode(LED_PIN, OUTPUT)? строчку pinMode(POT_PIN, INPUT)?
  4. Зачем мы делим значение, полученное с аналогового входа перед тем, как задать яркость светодиода? что будет, если этого не сделать?
Задания для самостоятельного решения    
  1. Отключите питание платы, подключите к порту 5 еще один светодиод. Измените код таким образом, чтобы второй светодиод светился на 1/8 от яркости первого

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...