АЛГОРИТМ РАБОТЫ СВЕТОВЫХ СИГНАЛОВ
Каждый проект начинается на бумаге. И наш не исключение. Давайте представим схему работы световых сигналов в виде последовательности действий (Рисунок – 3.1).
Рисунок – 3.1 Схема работы световых сигналов.
На рисунке видно, что после одного цикла действий мы начинаем его снова и снова. Действия идут в строгом порядке и не могут быть выполнены , пока не подойдет их очередь. Вот и мы должны писать нашу программу строго по алгоритму.
Структурная схема и составляющие световых сигналов
- Светодиод красный (Рисунок 3.2 ) 1 шт.
Наименование: АЛ102Б
Цвет свечения: красный
Сила света (IV): 100 мккд
Прямой ток (Iпр): 20 мА
Прямое напряжение (Uпр): 2.8 В
Длина волны (λ): 690 нм
Максимальное постоянное обратное напряжение VR (Uобр): 2 В
Корпус: АЛ102
Примечание: Две красные точки
Рисунок 3.2 – Корпус АЛ102
- Светодиод желтый (Рисунок 3.3) 1 шт
Цвет свечения: желтый
Сила света (IV): 400 мккд
Прямой ток (Iпр): 10 мА
Прямое напряжение (Uпр): 2.8 В
Длина волны (λ): 560 нм
Максимальное постоянное обратное напряжение VR (Uобр): 2 В
Корпус: АЛ307А
Примечание: Черная точка на корпусе
Рисунок 3.3 – Корпус АЛ307А
- Светодиод зеленый (Рисунок 3.4 ) 1 шт
Наименование: АЛ307В
Цвет свечения: зеленый
Сила света (IV): 400 мккд
Прямой ток (Iпр): 20 мА
Прямое напряжение (Uпр): 2.5 В
Длина волны (λ): 560 нм
Максимальное постоянное обратное напряжение VR (Uобр): 2 В
|
|
Корпус: АЛ307А
Примечание: Черная точка на корпусе
Рисунок 3.4 – Корпус АЛ307А
- Резистор на 220 Ом 3 шт (Рисунок 3.5)
Цветовая маркировка резистора: красный, красный, черный, черный, коричневый
220Ом +- 1%
Рисунок 3.5 – - Резистор на 220 Ом
- Макетная плата 1 шт
- Соединительный провода 7 шт.
- ArduinoUNO (Рисунок 3.6) 1 шт
Наименование: Arduino Uno
Микроконтроллер: ATmega328
Тактовая частота: 16 МГц
Размер программной памяти (Flash) (Программная память): 32 кБ
Память данных (EEPROM): 1024 Б
Память ОЗУ (SRAM) (RAM): 2048 Б
Количество цифровых линий ввода-вывода (Цифровых I/O): 14
Аналоговых входных каналов: 6
ШИМ каналов: 6
Рабочее напряжение: 5 В
Напряжение питания (min) (Uпит (min)): 7 В
Напряжение питания (max) (Uпит (max)): 12 В
Ток I/O вывода (max): 40 мА
Рисунок 3.6 – ArduinoUNO
Рисунок 3.7 – Структурная схема
Реализация световых сигналов
Собираем наши световые сигналы по схеме (Рисунок 3.8). Главное, соблюсти полярность светодиодов. У светодиода анод - это плюс, а катод - это минус. Длинную ножку (анод), подключить к пинам (Пин - это вывод или контакт, кому как нравится.) Еще нужно подключить светодиоды именно пинам 13, 12 и 11. Зеленый к 13, Желтый к 12, Красный к 11.
Собранный экземпляр наглядно. (Рисунок 3.9)
|
|
Рисунок 3.9 – Собранная схема световых сигналов
Рисунок 3.8 Схема сборки световых сигналов
Код проекта
Прописываем программу. For - это так называемый цикл со счетчиком. Этот цикл повторяет действия ,заключенные в скобки, заданное количество раз. Сколько раз повторить - задается внутри круглых скобок.
В общем виде его можно записать так:
for(Переменная;Условие;Изменение)
{Код, который нужно повторять}
Переменная - переменная, созданная только для цикла for. Нужна для того, чтобы "инициализировать" цикл. То есть сравнить переменную с условием цикла.
Условие - условие, при истинности которого будут выполняться действия в фигурных скобках.
Изменение - правило, по которому изменяется переменная. Изменение производится после проверки условия. После этого проверяется измененная переменная.
// Для лучшей читаемости, нужно давать, так называемые, макроопределения.
// Макроопределение работает так, как и Вордовское "Найти и заменить".
#define GREEN 13 // Обозначим 13 пин как Зеленый.
#define YELLOW 12 // 12 - как Желтый.
#define RED 11 // 11 - как красный.
// Нам нужно создать переменные, для упрощения работы при настройке параметров программы и лучшей читаемости.
|
|
int main_delay = 5000; // Время горения красного и зеленого
int mini_delay = 1000; // Время горения желтого
int blink_delay = 800; // Время моргания зеленого
void setup() {
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED, OUTPUT);
}
void loop() {
digitalWrite(RED, HIGH);
delay(main_delay);
digitalWrite(YELLOW, HIGH);
delay(mini_delay);
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
delay(main_delay);
digitalWrite(GREEN, LOW);
// Теперь моргаем зеленым. Им можно моргать с помощью так называемого цикла со счетчиком.
for(int i = 0; i < 3; i = i+1)
{
delay(blink_delay);
digitalWrite(GREEN, HIGH);
delay(blink_delay);
digitalWrite(GREEN, LOW);
}
digitalWrite(YELLOW, HIGH);
delay(mini_delay);
digitalWrite(YELLOW, LOW);
delay(mini_delay);
}
// Теперь наш код стал компактнее и читабельнее.
// Но запомни, тебе следует давать осмысленные имена переменным и макроопределениям.Это улучшает читабельность.
// Если ты через месяц откроешь свой код, ты поймешь о чем я говорю.
ЗАКЛЮЧЕНИЕ
Заключение В рамках курсового проэкта были выполнены основные этапы:
1)Изучены возможности платформы Arduino;
2)Основные решения проектирования простых устройств на базе микроконтроллеров;
3)Была написана программа для управления световыми сигналами.
В дальнейшем планируется усовершенствовать примеры описанные в курсовой работе, а так же написать новые более функциональные и сложные примеры, для прошивки платформ Arduino.
|
|
Дата добавления: 2018-11-24; просмотров: 317; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!