2.3. Управление яркостью светодиода
1) В этой работе нужно было составить программу включения/выключения светодиодов согласно заданию. Римской цифрой обозначена степень яркости свечения светодиода: I - 30% яркости, II – 60% яркости, III – 100% яркости, пустая ячейка – светодиод выключен.
Таблица 1 – Значения яркости светодиода
Время, мс. | Желтый | Красный | Синий |
Pin 11 | Pin 10 | Pin 9 | |
3000 | |||
500 | вкл | ||
500 | вкл | вкл | |
500 | вкл | вкл | вкл |
2000 | |||
500 | вкл | ||
500 | вкл | ||
500 | вкл | ||
500 | вкл | ||
500 | вкл | ||
500 | вкл | ||
2000 | |||
500 | вкл I | ||
500 | вкл I | вкл I | |
500 | вкл I | вкл I | вкл I |
500 | вкл I I | вкл I | вкл I |
500 | вкл I I | вкл I I | вкл I |
500 | вкл I I | вкл I I | вкл I I |
500 | вкл I I I | вкл I I | вкл I I |
500 | вкл I I I | вкл I I I | вкл I I |
500 | вкл I I I | вкл I I I | вкл I I I |
2000 | вкл I I I | вкл I I I | вкл I I I |
Для этого была собрана схема (Рисунок 2), в которой были подключены 3 светодиода, заданы номера портов и цвета соответствующих светодиодов.
Рисунок 2 – Схема подключения трех светодиодов
int Yellow=11;
int Red=10;
int Blue=9;
void setup ()
{ pinMode(Yellow, OUTPUT);
pinMode(Red, OUTPUT);
pinMode(Blue, OUTPUT);
}
void loop ()
{
delay(3000);
//пауза 3 секунды
analogWrite(Yellow,255);
//включение на всю яркость (100%) желтого светодиода
delay(500);
analogWrite(Red,255);
// включение на всю яркость (100%) красного светодиода
delay(500);
analogWrite(Blue,255);
включение на всю яркость (100%) синего светодиода
delay(500);
analogWrite(Yellow,0);
analogWrite(Red,0);
analogWrite(Blue,0);
//выключение всех светодиодов
delay(2000);
analogWrite(Blue,255);
delay(500);
analogWrite(Blue,0);
analogWrite(Red,255);
delay(500);
analogWrite(Red,0);
analogWrite(Yellow,255);
delay(500);
analogWrite(Yellow,0);
analogWrite(Blue,255);
delay(500);
analogWrite(Blue,0);
analogWrite(Red,255);
delay(500);
analogWrite(Red,0);
analogWrite(Yellow,255);
delay(500);
analogWrite(Yellow,0);
delay(2000);
analogWrite(Yellow,75);
delay(500);
analogWrite(Red,75);
delay(500);
analogWrite(Blue,75);
delay(500);
analogWrite(Yellow,150);
delay(500);
analogWrite(Red,75);
delay(500);
analogWrite(Blue,75);
delay(500);
analogWrite(Red,150);
delay(500);
analogWrite(Blue,75);
delay(500);
analogWrite(Blue,150);
delay(500);
analogWrite(Yellow,255);
delay(500);
analogWrite(Red,255);
delay(500);
analogWrite(Blue,255);
delay(500);
analogWrite(Yellow,255);
delay(2000);
analogWrite(Red,255);
delay(2000);
analogWrite(Blue,255);
delay(2000);
analogWrite(Yellow,0);
analogWrite(Red,0);
analogWrite(Blue,0);
}
2) В данной работе необходимо было составить программу включения/выключения светодиодов.
Таблица 2 – Значения яркости светодиода
Время, мс. | Желтый | Красный | Синий |
Pin 6 | Pin 7 | Pin 8 | |
3000 | |||
500 | вкл | ||
500 | вкл | вкл | |
1500 | |||
500 | вкл | вкл | |
500 | вкл | вкл | |
500 | вкл II | ||
500 | вкл II | вкл II | |
500 | вкл II | ||
500 | вкл I | вкл I | |
500 | вкл I | ||
1500 | |||
500 | вкл I | вкл I |
Продолжение таблицы 2 – Значения яркости светодиода
500 | вкл I | вкл I | |
500 | вкл III | вкл III | вкл III |
500 | вкл III | вкл III | |
500 | вкл III | ||
500 | вкл III | ||
500 | вкл III | вкл III | |
500 | вкл III | вкл III | вкл III |
int Yellow=6;
int Red=7;
int Blue=8;
void setup ()
{ pinMode(Yellow, OUTPUT);
pinMode(Red, OUTPUT);
pinMode(Blue, OUTPUT);
}
void loop ()
{
delay(3000);
analogWrite(Yellow,255);
delay(500);
analogWrite(Red,255);
delay(500);
analogWrite(Blue,255);
delay(500);
analogWrite(Yellow,0);
analogWrite(Red,0);
analogWrite(Blue,0);
delay(1500);
analogWrite(Yellow,255);
delay(500);
analogWrite(Red,255);
delay(500);
analogWrite(Red,0);
analogWrite(Blue,255);
delay(500);
analogWrite(Yellow,0);
analogWrite(Red,150);
delay(500);
analogWrite(Blue,0);
analogWrite(Yellow,150);
delay(500);
analogWrite(Red,150);
delay(500);
analogWrite(Blue,150);
delay(500);
analogWrite(Blue,0);
analogWrite(Yellow,75);
delay(500);
analogWrite(Red,0);
analogWrite(Blue,75);
delay(500);
analogWrite(Red,75);
delay(500);
analogWrite(Yellow,0);
analogWrite(Red,0);
analogWrite(Blue,0);
delay(1500);
analogWrite(Red,75);
delay(500);
analogWrite(Blue,75);
delay(500);
analogWrite(Red,0);
analogWrite(Yellow,75);
delay(500);
analogWrite(Yellow,255);
delay(500);
analogWrite(Red,255);
delay(500);
analogWrite(Blue,255);
delay(500);
analogWrite(Blue,0);
analogWrite(Red,0);
analogWrite(Yellow,0);
analogWrite(Blue,255);
delay(500);
analogWrite(Red,255);
delay(500);
analogWrite(Yellow,255);
delay(500);
analogWrite(Yellow,0);
analogWrite(Red,0);
analogWrite(Blue,0);
}
После подключения Arduino к компьютеру, была загружена программа в контроллер и получено мигание светодиодов. При помощи команды analogWrite была задана интенсивность яркости светодиода. analogWrite(Led,255) задает самую большую яркость светодиода (100%), analogWrite(Led,150) задает более тусклое свечение (60%), а analogWrite(Led,75) задает тусклое свечение светодиода. Таким образом, при помощи этой команды можно запрограммировать светодиод мигать не только с различной скоростью, но и с разной яркостью, а так же отключать их при помощи analogWrite(Led,0).