Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства
- Название:Изучаем Arduino: инструметы и методы технического волшебства
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2015
- Город:Санкт-Петербург
- ISBN:978-5-9775-3585-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства краткое содержание
Для радиолюбителей
Изучаем Arduino: инструметы и методы технического волшебства - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
{
boolean current = digitalRead(BUTTON); // Считать состояние кнопки
if (last != current) // Если изменилось...
{
delay(5); // Ждем 5 мс
current = digitalRead(BUTTON); // Считываем состояние кнопки
return current; // Возвращаем состояние кнопки
}
}
/*
* Выбор режима светодиода.
* Передача номера режима и установка заданного режима светодиода.
*/
void setMode(int mode)
{
// Красный
if (mode == 1)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
// Зеленый
else if (mode == 2)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}
// Синий
else if (mode == 3)
{
digitalWrite(RLED, LOW);
- 60 -
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
// Пурпурный (Красный+ Синий)
else if (mode == 4)
{
analogWrite(RLED, 127);
analogWrite(GLED, 0);
analogWrite(BLED, 127);
}
// Бирюзовый (Синий+ Зеленый)
else if (mode == 5)
{
analogWrite(RLED, 0);
analogWrite(GLED, 127);
analogWrite(BLED, 127);
}
// Оранжевый (Зеленый+ Красный)
else if (mode == 6)
{
analogWrite(RLED, 127);
analogWrite(GLED, 127);
analogWrite(BLED, 0);
}
// Белый (Зеленый+ Красный+ Синий)
else if (mode == 7)
{
analogWrite(RLED, 85);
analogWrite(GLED, 85);
analogWrite(BLED, 85);
}
// Выключен (mode = 0)
else
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
}
void loop()
{
currentButton = debounce(lastButton); // Чтение статуса кнопки
if (lastButton == LOW && currentButton == HIGH) // Если нажата кнопка
{
- 61 -
ledMode++; // Инкремент переменной статуса светодиода
lastButton = currentButton;
// Прошли по циклу все режимы
// свечения светодиода
// Сброс на начальный вариант =0
if (ledMode == 8)
ledMode = 0;
setMode(ledMode); // Изменить режим светодиода
}
}

Рис. 2.7. Монтажная схема ночника
Стягивающий резистор
- 62 -
На первый взгляд может показаться, что программа слишком велика. Но в основном это комбинация фрагментов кода, который вы уже встречали в данной главе.
Вы можете самостоятельно изменить этот проект. Например, добавить кнопки для управления каждым выводом RGB-светодиода. Или реализовать дополнительный режим мигания каждым цветом, взяв код из главы 1. Возможности для творчества безграничны.
Резюме
В этой главе вы узнали о следующем:
Как работать с макетной платой.
Как выбрать резистор для ограничения тока светодиода.
Как подключить внешний светодиод к плате Arduino.
Как использовать ШИМ, как замену аналогового вывода.
Как считывать состояние кнопки.
Как подавить дребезг кнопки.
Для чего нужны подтягивающий и стягивающий резисторы.
Глава 3 Опрос аналоговых датчиков
Для повторения примеров главы вам понадобятся следующие детали:
• плата Arduino Uno;
• макетная плата;
• перемычки;
• потенциометр 10 кОм;
• 2 резистора номиналом 10 кОм;
• 3 резистора номиналом 220 Ом;
• кабель USB;
• фоторезистор;
• датчик температуры ТМР36 (или тобой другой аналоговый датчик на 5 В);
• RGB-светодиод с общим катодом.
На странице http://www.exploringarduino.com/content/ch3 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.
Наш мир является аналоговым. Хотя нередко можно услышать фразу про мир "цифровых технологий", большинство наблюдаемых явлений вокруг нас имеет аналоговый характер. Мир предполагает бесконечное число возможных состояний, будь то солнечный свет, или температура океана, или концентрация загрязняющих веществ в воздухе. Эта глава посвящена методам преобразования аналоговых величин в цифровые значения, которые могут быть проанализированы микроконтроллером Arduino.
- 64 -
Далее вы узнаете о различиях между аналоговыми и цифровыми сигналами и о способе конвертации одних в другие, мы также рассмотрим аналоговые датчики, которые могут взаимодействовать с платой Arduino. Основываясь на материале предыдущей главы, вы сможете добавить датчик света для автоматического изменения настроек ночника. Вы также узнаете, как отправлять аналоговые данные с платы Arduino на компьютер через последовательный интерфейс, что открывает огромные возможности для создания более сложных систем, способных передавать данные об окружающей среде на компьютер.
ПРИМЕЧАНИЕ
Видеоурок данной главы можно посмотреть на интернет-странице
http://www.jeremyblum.com/2011/01/24/arduino-tutorial-4-analog- inputs/ [7] На русском: http://wiki.amperka.ru/видеоуроки:4-аналоговые-входы.
.
Если вы хотите узнать больше о различиях между аналоговым и цифровым сигналами, посмотрите видеофильм, расположенный на интернет-странице
http://www.jeremyblum.com/2010/06/20/lets-get-digital-or-analog/.
3.1. Понятие об аналоговых и цифровых сигналах
Данные об окружающем мире все устройства неизбежно получают в аналоговом виде. Вспомните ночник из предыдущей главы. Для: управления цифровым входом там была кнопка. Переключатель - это цифровое устройство, он имеет только два возможных состояния: включено или выключено, HIGH или LOW, 1 или 0, и т. д. Цифровая информация представляет собой серию бинарных (цифровых) данных. Каждый бит принимает только одно из двух возможных значений.
Но мир вокруг нас редко представляет информацию только двумя способами. Выгляните в окно. Что вы видите? Если это дневное время, вы, вероятно, видите солнечный свет, деревья, колышущиеся на ветру, и возможно, проезжающие машины и гуляющих людей. Все это нельзя отнести к двоичным данным. Солнечный свет не просто включен или выключен, его яркость варьируется в течение дня. Точно так же у ветра не два единственных состояния, он все время дует порывами с различной скоростью.
3.2. Сравнение аналоговых и цифровых сигналов
Графики на рис. 3.1 показывают, чем отличаются друг от друга аналоговые и цифровые сигналы. Слева прямоугольные импульсы, амплитуда которых принимает только два значения: 0 и 5 вольт. Точно так же, как с кнопкой из предыдущей главы: только HIGH или LOW. Справа изображен фрагмент косинусоидального сигнала.
Несмотря на то, что его амплитуда находится в тех же границах (0 и 5 вольт), аналоговый сигнал принимает бесконечное число значений между этими двумя.
- 65 -
Аналоговые сигналы нельзя представить конечным числом состояний, теоретически они могут иметь бесконечное число значений в пределах некоторого диапазона.
Допустим, солнечный свет - это аналоговый сигнал, который нужно измерить.
Естественно, есть разумный диапазон, в пределах которого меняется освещенность (измеряется в люксах - световом потоке на единицу площади). Можно обосновано ожидать значение показаний между 0 люкс (для совершенно черного) и 130 000 люкс на прямом солнечном свете. Если бы измерительный прибор был абсолютно точен, то можно получить бесконечное число значений в данном диапазоне.
Читать дальшеИнтервал:
Закладка: