Управление светодиодной матрицей 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление светодиодной матрицей



 

Цель работы

Произвести программирование лабораторного стенда АРД-1, научиться управлять светодиодной матрицей посредством драйвера MAX7219 и контроллера Arduino UNO.

 

 

Теоретические сведения

Лабораторный стенд АРД-1 включает в себя светодиодную матрицу с драйвером MAX7219, внешний вид которой представлен на рисунке 76.

Рис. 76 - Внешний вид светодиодной матрицы с драйвером MAX7219.

                                                                                      

Для управления LED-матрицей посредством драйвера MAX7219 нам понадобится библиотека функций, которая установлена в Arduino IDE 1.0.6 по умолчанию. Процесс установки сторонней библиотеки описан ниже.

 

 

Рис 80 - Внешний вид светодиодной матрицы с драйвером MAX7219.

 

§ VCC, GND — питание;

§ DIN — вход данных;

§ CS — выбор модуля (chip select);

§ CLK — синхроимпульс.

 

Библиотеки добавляют дополнительную функциональность скетчам, например, при работе с аппаратной частью или при обработке данных. Для использования библиотеки необходимо выбрать меню Скетч> Импортировать библиотеку. Одна или несколько директив #include будут размещены в начале кода скетча с последующей компиляцией библиотек и вместе со скетчем. Загрузка библиотек требует дополнительного места в памяти Arduino. Неиспользуемые библиотеки можно удалить из скетча убрав директиву #include. Подробное описание установки библиотеки https://www.arduino.cc/en/Guide/Libraries (англ.).

 

Ход работы

В данной лабораторной работе мы рассмотрим возможности LED-матрицы с использованием библиотеки «LedControlMS». Для этого откроем меню Файл > Примеры > LedControlMS > LCDemoMatrix.

В строке:

LedControl lc=LedControl(12,11,10, NBR_MTX);

Меняем значения на

LedControl lc=LedControl(10,8,9, NBR_MTX);

Для вывода информации на поле матрицы используются бинарные восьмиразрядные числа, к примеру буква А задается массивом из восьми чисел

byte а ={ B00011000, B00111100, B01100110, B01100110, B01111110, B01100110, B01100110, B00000000}

«0» обозначает отсутствие сигнала, «1» - заставляет светодиод гореть, каждое число соответствует определенному строке в матрице. Для генерации символов можно воспользоваться «Редактором символов для матрицы 8 х 8» (http://arduino.on.kg/matrix-font). Пример символов представлен в соответствии с рисунком 78.

Рис.81 – Примеры символов для светодиодной матрицы 8х8

Команда setRow(int addr, int row, byte value),где «addr» - адрес дисплея, которому нужно передать команду, «row» – это ряд, в котором находятся нужные светодиоды. «Value» – значение в бинарном виде, обозначающее, какие светодиоды будут гореть. Передадим все значения 8ми рядов используя ранее созданный массив «a»:

lc.setRow(0,0,a[0]);

lc.setRow(0,1,a[1]);

lc.setRow(0,2,a[2]);

lc.setRow(0,3,a[3]);

lc.setRow(0,4,a[4]);

lc.setRow(0,5,a[5]);

lc.setRow(0,6,a[6]);

lc.setRow(0,7,a[7]);

delay(1000);

lc.clearDisplay(0);

Команда clearDisplay(адрес дисплея) очищает

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

 

Задания к лабораторной работе:

Вариант № Задание
1 Создайте программу, последовательно выводящую на индикатор числа от 0 до 9. Добавьте кнопку с функцией паузы. Добавьте кнопку с функцией возвращения к 0.  
2 Создайте программу, выводящую на индикатор 1, если нажата первая кнопка, 2 если нажата вторая кнопка, 0 если ни одна из кнопок не нажата.  
3 Создайте программу, выводящую на индикатор число нажатий первой кнопки, если число нажатий более 9, то начать счет сначала. Под нажатием подразумевается плавное нажатие на кнопку длительностью не более 1 сек. 
4 Создайте программу, выводящую на индикатор количество нажатых на стенде кнопок. Используйте не менее 5 кнопок.
5 Создайте программу, последовательно выводящую на индикатор степени числа 2, если число невозможно отобразить на индикаторе, то начать заново с наименьшей степени.  
6 Создайте программу выводящую на индикатор раз в секунду значение суммы с условием, что при нажатии на первую к числу прибавляется 1, при нажатии на вторую от числа отнимается 1. Стартовое число для вывода на экран 5
7 Создайте программу таймер. Первая кнопка запускает и останавливает счетчик, вторая кнопка обнуляет значение.
8 Создайте программу, выводящую на экран бегущую строку из N чисел. Промежуток между числами 2 светодиода. При нажатии на первую кнопку к строке добавляется новое больше на 1 предыдущего. При нажатии на вторую кнопку все числа удаляются.
9 Создайте программу, выводящую на экран «О». При нажатии на первую кнопку «О» будет сдвигаться вправо, при нажатии на вторую кнопку «О» будет сдвигаться вверх
10 Создайте программу, выводящую на экран количество нажатий первой кнопки, каждые k мсек, продолжительностью k мсек, где k = (100*N).

 


 Вопросы для самоконтроля

1.2   Вопросы для самоконтроля

 

1. Расскажите о основных возможностях эмулятора Tinkercad Circuits?

2. Как создать новую схему в Tinkercad Circuits?

3. Расскажите о фнционале интерфейса эмулятора в режиме редактирования схемы.

4. Что представляет собой Scratch, его основные возможности?

5. Какие способы вывода информации из работающей схемы существуют в эмуляторе Tinkercad Circuits?

1.2   Вопросы для самоконтроля

1. Что такое светодиод? Какие типы светодиодов вы знаете?

2. С какими типами виртуальных устройств ввода/вывода взаимодействует интерфейс Arduino?

3. Что такое Arduino? Для чего он используется?

4. Основные правила написания кода в данной программе.

5. С помощью чего Arduinо подключается к компьютеру?

6. Какая функция осуществляет задержку на нужное время?

7. Что будет, если не задать длительность сигнала в программе?

8. Какие основные массивы используются для написания программы? Что они означают?

9. Сколько цифровых контактов имеет панель Arduino? Сколько контактов ввода аналога?

10. С каким расширением сохраняются файлы из данной программы?

 

Вопросы для самоконтроля

1. Что такое кнопочный переключатель? Для чего он предназначен?

2. Какие функции были использованы для регулировки яркости светодиода?

3. Для чего используются функции setup() и loop()?

4. Что такое скетч в Arduino?

5. Какие функции были использованы для мигания светодиода от нажатия кнопки?

 

Вопросы для самоконтроля

1. Что такое пьезоизлучатель? Для чего он используется?

2. Какие типы пьезоизлучателей существуют? В чем их отличие?

3. Какой пьезоизлучатель используется для воспроизведения мелодии? Почему?

4. Какую функцию используют при написании программы для генерации звуков определенной частоты и длительности?

5. Что будет, если не задать длительность сигнала в программе?

6. Какие основные массивы используются для написания программы? Что они означают?

 

Вопросы для самоконтроля

1. Как осуществляется управление нагрузкой в данном эксперименте?

2. Что такое сервопривод?

3. Каким образом происходит управление напряжением, подаваемым на регулирование скорости двигателя?

4. По какой схеме происходит подключение элементов для данного эксперимента?

5. Что такое электродвигатель?

6. Какие функции используются для написания программы?

7. За что отвечает функция Servo.write(), read(), Serial()?

 

1.6 Вопросы для самоконтроля

 

 

1. Расскажите о конструктивных особенностях LCD1602.

2. Назначение выводов используемых в LCD1602.

3. Расскажите об основных функциях библиотеки LiquidCrystal.

4. Для чего инициализируем массив smile в примере, описанном выше?

5. Какие команды инициализируют подключение дисплея к плате Ардуино?

6. Для чего нужен потенциометр и резистор в схеме подключения?

 

 

2.1 Вопросы для самоконтроля

1. Что такое микроконтроллер? Для чего он применяется?

2. Назовите основные структурные элементы лабораторного стенда АРД-1. Что из себя представляет каждый элемент стенда?

3. Расскажите о платформе Arduino UNO. Назовите её возможности.

4. Опишите последовательность действий при программировании лабораторного стенда.

Расскажите о портах микроконтроллера Arduino. Какие из них и для чего используются в данной лабораторной работе?

5. Какой командой можно сконфигурировать порт как выход?

6. Какой конструкцией можно организовать бесконечный цикл?

7. Какое назначение функции setup () в коде?

8. Что будет, если подключить к земле анод светодиода вместо катода?

9. Что произойдет, если подключить светодиод с резистором большого номинала (например, 10 кОм)?

10. Что будет, если подключить светодиод без резистора?

11.Какие параметры принимает встроенная функция pinMode она принимает?

12. Зачем нужна встроенная функция digitalWrite? Какие параметры она принимает?

13. В каких единицах задается длительность паузы для этой функции?

2.2 Вопросы для самоконтроля

1. Что такое ШИМ? Для чего её применяют?

2. Дайте определение понятию скважность.

3. Какие из следующих идентификаторов корректны и не вызовут ошибку?

§ 13pin

§ MOTOR_1

§ контакт_светодиода

§ sensor value

§ leftServo

§ my-var

§ distance_eval2

4. Что произойдет, если создать директиву #define HIGH LOW?

5. Почему нельзя регулировать яркость светодиода, подключенного к порту 7?

6. Какое усреднённое напряжение получится на выводе 6, если вызвать функцию analogWrite(6, 153)?

7. Какое значение параметра value нужно передать функции analogWrite, чтобы получить усреднённое напряжение 2 В?

 

2.3 Вопросы для самоконтроля

1. Почему в схеме с ключом используется высокоомный резистор?

2. Чем аналоговый вход отличается от цифрового?

3. Какой функцией происходит считывание значения с цифрового порта?

4. Можно ли работать с уже прошитой в лабораторный стенд АРД-1 программой, если он подключен сети через блок питания?

5. Расскажите о схеме подключения кнопки к Arduino.

6. Какие функции используются при цифровом вводе/выводе в Arduino?

7. Какие функции используются при аналоговом вводе/выводе сигнала в Arduino?

 

2.4 Вопросы для самоконтроля

1. Расскажите о конструкции семисегментного индикатора, примененного в данной лабораторной работе.

2. Что представляет собой сдвиговый регистр 74HC595?

3. Возможно ли используя данную схему вывести на индикатор букву “Н”, если да, то как?

4. Для чего мы инициализируем массив ind в примере, описанном выше?

5. Возможно ли вывести данные на семисегментные индикаторы без использования функции ShiftOut()?

6. Какой принцип используется в данных схемах?

7. Расскажите об уровнях сигнала портов HIGH и LOW.

 

2.5 Вопросы для самоконтроля

1. Что из себя представляет светодиодная матрица, каково ее практическое назначение?

2. Что представляет собой драйвер MAX7219, его основное назначение?

3. Что такое динамическая индикация и как она связана с данной лабораторной работой?

4. Для чего используются библиотеки функций?

5. Можно ли с помощью программы задать разные буквы, символы?

6. Расскажите о назначениях команд setRow и clearDisplay?

 


Заключение

В посособие рассмотрены такие-то работы в такие торых разделы позволить компетенции, контрольные вопросы

Учебное пособие посвящено основам проектирования микропроцессорной техники на примере микроконтроллеров Arduino. Данное пособие предназначено для студентов, обучающихся по направлению 11.03.02 «Инфокоммуникационные технологии и системы связи».

Данное пособие даёт начальное представления о устройстве микропроцессорной техники и работе с ней. В пособие рассматриваются простые устройства такие, как сервопривод, переключатели, пьезоизлучатели, световые индикаторы и символьные  дисплеи. Описывая алгоритмы взаимодействия между устройствами, студенты обучаются основам программирование и навыкам работы с реальными устройствами. В дополнении данный материал  позволяет освоить навыки прототипирования простых приборов, что является хорошим начинанием для становления инженера-проектировщика в системах связи. Учебное пособие разделено на два раздела: в первом разделе изучается работа в имитационной среде tinkercad circuits arduino; во второй части описана работа с лабораторным стендом АРД-1.

Ардуино уно что такое с чем едят

Аппаратно-программный комплекс Arduino представляет собой виртуальную систему моделирования Tinkercad ciruits со встроенным текстовым редактором программного кода и визуально событийно-ориентированной средой программирования. Данная система позволяет провести имитационное моделирование работы всей проектируемой системы в целом. Позволяет приобрести навыки работы с микропроцессорной техникой.

Лабораторный стенд АРД-1 помимо платы Ардуино Uno состоит из следующий периферийных устройств: тактовые кнопки, сервопривод, светодиоды, семисегментные индикаторы, сдвиговые регистры, пьезоизлучатель, светодиодная матрица.


Приложение

Приложение 1 - Справочник функций и операторов

 

Вспомогательные символы

Символы

Описание

; (точка с запятой)

 Используется для обозначения конца оператора

{} (фигурные скобки)

 

Используется для обозначения тела цикла (перечня операторов)

// (одностроковый коментарий)

/* */ (многостроковый коментарий)

 

Используется для информирования или документирования данной части кода

#define

#define это удобная директива, который позволяет дать имя константе перед тем как программа будет скомпилирована.

#include

#include используется для включения сторонних библиотек в ваш скетч. Это дает доступ к большому числу стандартных библиотек С (библиотекой называют группы предварительно написанных функций), и библиотек написанных специально для Arduino.

Управляющие операторы

Оператор

Пример

Описание
if

if (someVariable > 50) {

// выполнять действия

}

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

if (pinFiveInput < 500){

// выполнять действие A

}else if (pinFiveInput >= 1000){

// выполнять действие B

}else{

// выполнять действие C

}

Конструкция if..else предоставляет больший контроль над процессом выполнения кода, чем базовый оператор if, позволяя осуществлять несколько проверок, объединенных вместе.
for

for (int i=0; i <= 255; i++){

analogWrite(PWMpin, i);

delay(10);

}

 

Конструкция for используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик итераций обычно используется для подсчета итераций и завершения цикла. Оператор for подходит для любых повторяющихся действий и часто используется в сочетании с массивами данных/выводов.
switch case  

switch (var) {

case 1:

//выполняется, когда var равно 1

break;

case 2:

//выполняется когда var равно 2

break;

default:

// выполняется, если не выбрана ни одна альтернатива

// default необязателен

}

Подобно конструкции if, switch…case управляет процессом выполнения программы, позволяя программисту задавать альтернативный код, который будет выполняться при разных условиях. В частности, оператор switch сравнивает значение переменной со значением, определенном в операторах case. Когда найден оператор case, значение которого равно значению переменной, выполняется программный код в этом операторе.  
while

while(выражение){

 // оператор(ы)

}

 

While будет вычислять в цикле непрерывно и бесконечно до тех пор, пока выражение в круглых скобках, () не станет равно логическому ЛОЖНО. Что-то должно изменять значение проверяемой переменной, иначе выход из цикла while никогда не будет достигнут. Это изменение может происходить как в программном коде, например, при увеличении переменной, так и во внешних условиях, например, при тестировании датчика.
· do… while  

do {

// последовательность операторов

} while (проверка условия);

 

Цикл do работает так же, как и цикл while, за исключением того, что условие проверяется в конце цикла, таким образом, цикл do будет всегда выполняться хотя бы раз.
break;

for (x = 0; x < 255; x ++)

{

digitalWrite(PWMpin, x);

sens = analogRead(sensorPin);

if (sens > threshold){ // выходим из цикла если есть сигнал с датчика

x = 0;

break;

}

delay(50);

}

 

Break используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию. Он также используется для выхода из оператора switch
continue;

for (x = 0; x < 255; x ++){

if (x > 40 && x < 120){ // если истина то прыгаем сразу на следующую итерацию цикла

continue;

}

digitalWrite(PWMpin, x);

delay(50);

}

 

Оператор continue пропускает оставшиеся операторы в текущем шаге цикла. Вместо них выполняется проверка условного выражения цикла, которая происходит при каждой следующей итерации.
return  

return;

return значение; // обе формы допустимы

Прекращает вычисления в функции и возвращает значение из прерванной функции в вызывающую, если это нужно.
goto  

label:

//

// какой-либо код

//

goto label; // переходим к метке label

 

Условное «перемещение» выполнения программы к определенной метке-указателю в самой программе, при этом пропускается весь код до самой метки, а исполняется — после нее.

Функции

Функция

Описание функции

pinMode(pin,mode)

Функция задает режим работы указанного вывода. Рin: номер вывода, режим работы которого будет конфигурироваться mode: принимает значения INPUT или OUTPUT.

digitalWrite(pin,value)

Функция служит для записи значения HIGH или LOW в вывод pin

digitalRead(pin)

Функция служит для чтения цифрового сигнала с вывода pin

analogRead(pin)

Функция для измерения уровня напряжения на аналоговом входе pin, выводимое значение от 0 до 1024

analogWrite(pin, value)

Функция для формирования на аналоговом выводе pin ШИМ-сигнала со значением value от 0 до 255.

tone(pin, f, d)

Функция выводит на вывод pin прямоугольный сигнал с частотой f и длительностью d.

noTone(pin)

Функция прерывает функцию tone() на указанном выводе pin.

millis()

Функция возвращает количество миллисекунд прошедших с начала запуска программы

delay(х)

Функция приостанавливает работу выполнения программы на х миллисекунд

micros()

Функция возвращает количество микросекунд прошедших с начала запуска программы

delayMicroseconds(х)

Функция приостанавливает работу выполнения программы на х микросекунд

random(x,y)

Функция генерирует случайное значение в промежутке от x до y

min(х,y)

Функция нахождения минимального значения из двух чисел x и y

max(х,y)

Функция нахождения максимального значения из двух чисел x и y

sq(x)

Функция вычисление квадрата числа x

sqrt(x)

Функция вычисляет квадратный корень числа x

abs(х)

Функция нахождения модуля числа х

sin(x)

Функция вычисляет синус угла х заданного в радианах

cos(х)

Функция вычисляет косинус угла х заданного в радианах

tan(х)

Функция вычисляет синус угла х заданного в радианах

Операторы

Арифметические операторы

=

Присваивание

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Остаток от деления

Операторы сравнения

==

Равно

!=

Не равно

<

Меньше чем

>

Больше чем

<=

Меньше или равно

>=

Больше или равно

Логические операторы

&&

И

||

ИЛИ

!

НЕ

Битовые операторы

&

И

|

ИЛИ

^

XOR

~

НЕ

<<

Сдвиг бита влево

>>

Сдвиг бита вправо

Составные операторы

++

Инкремент

--

Декремент

+=

Составное сложение

-=

Составное вычитание

*=

Составное умножение

/=

Составное деление

&=

Составное побитовое И
       

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Архитектура и проектирование вычислительных систем. Распределенные вычислительные системы: сб. ст. – Рига: РПИ, 1990. – С. 14–21.

2. Бродин, В. Б. Микроконтроллеры. Архитектура, программирование, интерфейс / В. Б. Бродин, И. И. Шагурин. – М.: ЭКОМ, 1999.

3. Буданов, А. Н. Средства разработки и отладки программного обеспечения промышленных контроллеров на базе 8/16-разрядных микропроцессоров фирмы Motorola / А. Н. Буданов // Инженерная микроэлектроника. 1999. – № 1. – С. 32–34.

4. Долинский, М. С. Внутрисхемные эмуляторы микропроцессоров и микроконтроллеров / М. С. Долинский, И. М. Зисельман, А. О. Федорцов // Автоматика и вычислительная техника. – 1999. – № 1. – С. 62–66.

5. Каган, Б. М. Основы проектирования микропроцессорных устройств автоматики / Б. М. Каган, В. В. Сташин. – М.: Энергоатомиздат, 1987.

6. Казаченко, В. Ф. Микроконтроллеры: руководство по применению 16-разрядных микроконтроллеров INTEL MCS-196/296 во встроенных системах управления / В. Ф. Казаченко. – М.: Изд-во «Эком», 1997. – 200 с.

7. Конов, А. А. Современные видеопроцессоры / А. А. Конов. – М.: ДОДЭКА, 2000.

8. Корнеев, В. В. Современные микропроцессоры / В. В. Корнеев, А. И. Киселев. – М.: НОЛИДЖ, 1998.

9. Куприянов, М. С. Цифровая обработка сигналов. Процессоры, алгоритмы, средства проектирования / М. С. Куприянов, Б. Д. Матюшкин. – СПб.: Политехника, 1998.

10. Лачин, В. И. Электроника: учеб. пособие / В. И. Лачин, Н. С. Савелов. – Ростов н/Д.: Феникс, 2001.

11. Лобанов, В. И. Инженерные методы разработки цифровых устройств / В. И. Лобанов. – М.: НИИРТА, 1977.

12. Микропроцессорные системы и микроЭВМ в измерительной технике: учеб. пособие для вузов / А. Г. Филиппов, А. М. Аужбикович, В. М. Немчинов и др. – М.: Энергоатомиздат, 1995.

13. Микропроцессоры и микропроцессорные комплекты интегральных схем: справочник: в 2 т. / В-Б. Б. Абрайтис, Н. Н. Аверьянов, А. И. Белоус и др.; под ред. В. А. Шахнова. – М.: Радио и связь, 1988.

14. Науман, Г. Стандартные интерфейсы для измерительной техники / Г. Науман, В. Майлинг, А. Щербина: пер. с нем. – М.: Мир, 1982. – 200 с.

15. Оппенгейм, А. В. Цифровая обработка сигналов / А. В. Оппенгейм, Р. В. Шафер: пер. с англ.; под ред. С. Я. Шаца. – М.: Связь, 1979.

16. Потемкин, И. С. Функциональные узлы цифровой автоматики / И. С. Потемкин. – М.: Энергоатомиздат, 1986. 17. Предко, М. Руководство по микроконтроллерам / М. Предко: в 2 т. Т. 1, 2. – М.: Постмаркет, 2001


 

 

Подписано в печать ________ 2019 г. Формат 60´84/16

Тираж _____ Экз._____

Заказ ______

 

АГТУ, Астрахань, ул.Татищева,16.



Поделиться:


Читайте также:




Последнее изменение этой страницы: 2021-05-27; просмотров: 828; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.130.24 (0.228 с.)