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).