Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 3 Управление светодиодами.doc
Скачиваний:
135
Добавлен:
11.03.2016
Размер:
1.26 Mб
Скачать

3.3. Управление уровнем напряжения. Аналоговый выход – команда analogWrite

Команда analogWrite (номер пина, уровень) позволяет подать на определенный пин Arduino (поддерживающих данную функцию – 3, 5, 6, 9, 10, 11 – на Arduino Uno отмечены штрихом) значение от 0 до 255, что соответствует напряжению от 0 В до +5 В на контакте. Примеры:

analogWrite (6, 200); – напряжение на пине 6 станет равным 5·200/255= 3,9 В

analogWrite (11, 50); – напряжение на пине 11 станет равным 5·50/255= 1 В

Таким образом, постепенно увеличивая/уменьшая переданное вanalogWrite значение можно добиться плавного роста/падения напряжения на выходе. Подключенный к одному из PWM-портов Arduino (3, 5, 6, 9, 10, 11) светодиод будет плавно загораться и затухать (fading).

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

Практическое занятие 3. Изменение яркости светодиода

Нужные компоненты:

  • один светодиод с подпаянным резистором (цвет – любой)

  • один провод цвета, аналогичного цвету светодиода со штырьками на обоих концах

  • один черный или синий провод со штырьками на обоих концах

  1. соедините контакт с резистором (+) с цифровым пином 3 Arduino, а другой контакт светодиода (–) – с нижней линией контактов Gnd

  2. откройте программу Файл / Примеры / Analog / Fading

  3. исправьте номер пина, к которому подключен светодиод: ledPin = 9

  4. подключите контроллер к компьютеру, загрузите программу и убедитесь, что светодиод меняет свою яркость

int ledPin = 9; // светодиод подключен к цифровому пину 3

void setup() {

// Нет необходимости вызвать функцию pinMode для команды analogWrite

}

void loop() {

// меняем значение fadeValue от 0 до 255 с шагом 5

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {

analogWrite(ledPin, fadeValue); // посылаем значение от 0 до 255 на пин со

// светодиодом, напряжение на нем меняется от 0 до 5 В и соответственно меняется яркость

delay(30); // ждем 30 миллисекунд

}

// меняем значение fadeValue от 255 до 0 с шагом 5

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {

analogWrite(ledPin, fadeValue); // посылаем значение от 255 до 0 на пин со

// светодиодом, напряжение на нем меняется от 5 до 0 В и соответственно меняется яркость

delay(30); // ждем 30 миллисекунд

}

}

Примечание: используемые светодиоды достигают максимальной яркости при напряжении, меньшем 5 В. Для большей наглядности изменения яркости можно изменить в коде программы 255 на 100, а также поставить бОльший шаг времени в delay.

Практическое занятие 4. Изменение яркости пяти светодиодов

Нужные компоненты:

  • пять светодиодов с подпаянными резисторами: красный, желтый, зеленый, синий, белый

  • пять соединительных проводов соответствующих светодиодам цветов со штырьками на обоих концах

  • четыре соединительных провода синего или черного цвета со штырьками на обоих концах

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

  1. подключите контакт с резистором (+ светодиода) каждого светодиода к одному из пинов, поддерживающих управление уровнем напряжения (3, 6, 9, 10, 11)

  2. откройте программу Файл / При меры / Analog / Fading и модифицируйте ее для одновременного управления яркостью пяти светодиодов:

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

    int led_1 = 3;

    int led_2 = 6;

    int led_3 = 9;

    int led_4 = 10;

    int led_5 = 11;

    void setup() {

    // Нет необходимости использовать функцию pinMode для команды analogWrite

    }

    void loop() {

    // меняем значение fadeValue от 0 до 255 с шагом 5

    for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {

    // посылаем значение fadeValue на каждый пин со светодиодом

    analogWrite(led_1, fadeValue);

    analogWrite(led_2, fadeValue);

    analogWrite(led_3, fadeValue);

    analogWrite(led_4, fadeValue);

    analogWrite(led_5, fadeValue);

    delay(30); // ждем 30 миллисекунд

    }

    // меняем значение fadeValue от 255 до 0 с шагом 5

    for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {

    // посылаем значение fadeValue на каждый пин со светодиодом

    analogWrite(led_1, fadeValue);

    analogWrite(led_2, fadeValue);

    analogWrite(led_3, fadeValue);

    analogWrite(led_4, fadeValue);

    analogWrite(led_5, fadeValue);

    delay(30); // ждем 30 миллисекунд

    }

    }

  3. Загрузите данную программу в контроллер и испытайте

  4. Разбирать схему не надо, она понадобится в следующем занятии