Читаем Изучаем Arduino: инструменты и методы технического волшебства полностью

Чтобы создать пользовательский символ, нужно определить значение каждой из этих точек и отправить соответствующую информацию на дисплей. Попробуем создать несколько символов, которые будут заполнять вторую строку дисплея анимированным прогресс-баром. Поскольку ширина каждого символа составляет 5 пикселов, для заполнения всей строки потребуются 5 пользовательских символов: первый с одним заполненным столбцом, второй с двумя столбцами и т. д.

В начале программы создаем для каждого символа массив байтов, в котором включенным пикселам будут соответствовать единицы, а выключенным - нули. Для первого символа (заполняющего 20% от ширины строки) массив выглядит следующим образом:

byte p20[8] = {

B10000,

- 209 -

B10000,

B10000,

B10000,

B10000,

B10000,

B10000,

B10000,

};

Я назвал этот массив p2О, чтобы показать, что этот символ заполняет 20% пространства. В функции setup() вызываем библиотечную функцию createChar(), чтобы назначить данному массиву идентификатор ID пользовательского символа.

Пользовательские символы имеют ID от 0 до 7, вы можете в общей сложности сформировать восемь таких символов. Определим массив p20 как пользовательский символ с ID=0: lcd.createChar (0, p20);

Для отображения пользовательского символа на дисплее поместите курсор в нужное место и выполните команду lcd.write ( (byte) 0);

Добавьте остальные пользовательские символы и с помощью двух вложенных циклов в основном цикле программы loop() обновляйте прогресс-бар. Код данной программы приведен в листинге 10.2.

Листинг 10.2. Код прогресс-бара на экране дисплея - LCD_progress_bar.ino

// Прогресс-бар на ЖК-дисплее

// Подключение библиотеки LiquidCrystal

#include

// Инициализация экземпляра библиотеки LiquidCrystal

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

// Создание массивов для символов прогресс-бара

byte p20[8] = {

B10000,

B10000,

B10000,

B10000,

B10000,

B10000,

B10000,

B10000,

};

byte p40[8] = {

B11000,

B11000,

- 210 -

B11000,

B11000,

B11000,

B11000,

B11000,

B11000,

};

byte p60[8] = {

B11100,

B11100,

B11100,

B11100,

B11100,

B11100,

B11100,

B11100,

};

byte p80 [8] = {

B11110,

B11110,

B11110,

B11110,

B11110,

B11110,

B11110,

B11110,

};

byte p100[8] = {

B11111,

B11111,

B11111,

B11111,

B11111,

B11111,

B11111,

B11111,

};


void setup()

{

// Настройка экземпляра дисплея - число столбцов и строк:

lcd.begin(16, 2);

// Вывод текста на ЖК-дисплей

lcd.print("Jeremy's Display");

// Определение пользовательских символов

lcd.createChar(0,p20);

- 211 -

lcd.createChar(1,p40);

lcd.createChar(2,p60);

lcd.createChar(3,p80);

lcd.createChar(4,p100);

}


void loop()

{

// Курсор в начало второй строки

lcd.setCursor(0,1);

// Очистка второй строки

// 16 пробелов


lcd.print(" ");

// Перебор каждого символа на второй строке

for (int i = 0; i<16; i++)

{

// Перебор каждого значения (p20 - p100)

for (int j=0; j<5; j++)

{

lcd.setCursor(i, 1);// Столбец установки курсора

lcd. write (j);// Вывод символа

delay(100);// Задержка


}

}

}

В начале каждого цикла во все 16 позиций второй строки выводится символ пробела ( строка очищается). Внешний цикл for() перебирает все 16 знакомест строки.

Во внутреннем цикле for() в каждое знакоместо с задержкой выводится увеличивающийся пользовательский символ прогресс-бара.

ПРИМЕЧАНИЕ

Для просмотра видеоклипа, демонстрирующего отображение прогресс-бара на ЖК-дисплее, посетите страницу http://www.exploringarduino.com/content/ch10. Этот видеоклип доступен также на сайте издательства Wiley.

10.5. Создание регулятора температуры

Давайте теперь заставим дисплей выполнять полезную функцию. Добавим I2C датчик температуры, рассмотренный в главе 8, вентилятор и динамик из главы 5.

Дисплей будет показывать температуру и текущее состояние вентилятора. Когда станет жарко, динамик издаст предупреждающий звук и вентилятор включится.

Когда снова станет прохладно, вентилятор перестанет работать. С помощью двух кнопок и фрагмента кода подавления дребезга из листинга 2.5 вы получите возможность увеличивать или уменьшать требуемую температуру.

- 212 -

10.5.1. Монтаж схемы устройства

Соединение деталей для этого устройства представляет собой комбинацию предыдущих схем. Маломощный вентилятор с двигателем постоянного тока подключается непосредственно к контакту платы Arduino. При желании использовать мощный вентилятор, можно подключить его к внешнему источнику питания через транзистор ( см. главу 4). Для этого подойдет схема, изображенная на рис. 4.1. ЖК-дисплей подключим так же, как в предыдущем примере (см. рис. 10.2).

Один из выводов кнопок подключен к шине питания, а другой - к контакту Arduino и через резистор 10 кОм на землю.

Один вывод динамика подключен к контакту Arduino, а другой - через резистор 150 Ом к земле. Частота звука устанавливается программно.

I2C-датчик температуры подключен так же, как в главе 8. Монтажная схема устройства изображена на рис. 10.3. Изображение датчика температуры сделано частично прозрачным, чтобы можно было увидеть потенциометр позади него.

Рис. 10.3. Схема регулятора температуры с ЖК-дисплеем

- 213 -

10.5.2. Отображение данных на ЖК-дисплее
Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Внутреннее устройство Microsoft Windows (гл. 1-4)
Внутреннее устройство Microsoft Windows (гл. 1-4)

Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.Версия Fb2 редакции — 1.5.

Марк Руссинович , Дэвид Соломон

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Основы информатики: Учебник для вузов
Основы информатики: Учебник для вузов

Учебник состоит из двух разделов: теоретического и практического. В теоретической части учебника изложены основы современной информатики как комплексной научно-технической дисциплины, включающей изучение структуры и общих свойств информации и информационных процессов, общих принципов построения вычислительных устройств, рассмотрены вопросы организации и функционирования информационно-вычислительных сетей, компьютерной безопасности, представлены ключевые понятия алгоритмизации и программирования, баз данных и СУБД. Для контроля полученных теоретических знаний предлагаются вопросы для самопроверки и тесты. Практическая часть освещает алгоритмы основных действий при работе с текстовым процессором Microsoft Word, табличным редактором Microsoft Excel, программой для создания презентаций Microsoft Power Point, программами-архиваторами и антивирусными программами. В качестве закрепления пройденного практического курса в конце каждого раздела предлагается выполнить самостоятельную работу.

Максим Анатольевич Беляев , Вадим Васильевич Лысенко , Лариса Александровна Малинина

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT