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

Через светодиод потечёт ток, больше допустимого значения, и светодиод может выйти из строя. Это также может вывести из строя порт микроконтроллера.

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

Функция pinMode настраивает определённый порт на режим выхода или входа. Соответственно она принимает параметры pin(номер порта) и value(INPUT, OUTPUT).

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

Функция digitalWrite не возвращает никакого значения и принимает два параметра:

Pin – номер цифрового порта на который мы отправляем сигнал

Value – значение которое мы отправляем на порт (HIGH, LOW).

С помощью какой встроенной функции можно заставить микроконтроллер ничего не делать?

С помощью функции delay можно остановить работу микроконтроллера на определённый промежуток времени.

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

Длительность паузы для функции delay задаётся в миллисекундах.

Задания для самостоятельного решения

Сделайте так, чтобы маячок светился полсекунды, а пауза между вспышками была равна одной секунде

void setup()

{

pinMode(13, OUTPUT);

}

void loop()

{

digitalWrite(13, HIGH);

delay (500);

digitalWrite(13, LOW);

delay (1000);

}

2.Измените код примера так, чтобы маячок включался на три секунды после запуска устройства, а затем мигал в стандартном режиме

void setup()

{

pinMode(13, OUTPUT);

digitalWrite(13, HIGH);

delay (3000);

digitalWrite(13, LOW);

}

void loop()

{

digitalWrite(13, HIGH);

delay (100);

digitalWrite(13, LOW);

delay (900);

}

Эксперимент 2. Маячок с нарастающей яркостью

В этом эксперименте мы задаем различные уровни яркости светодиода.

Схема

Код

#define LED_PIN 9

void setup()

{

pinMode(LED_PIN, OUTPUT);

}

void loop()

{

analogWrite(LED_PIN, 85);

delay(250);

analogWrite(LED_PIN, 170);

delay(250);

analogWrite(LED_PIN, 255);

delay(250); }

Вопросы для проверки себя

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

13pin

MOTOR_1

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

sensor value

leftServo

my-var

distance_eval2

Так как идентификаторы могут состоять только из латинских букв, цифр и символов подчеркивания_, и при этом не могут начинаться с цифр, то ошибки не вызовут идентификаторы:

MOTOR_1

leftServo

distance_eval2

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

Деректива заменит все значения LOW на HIGH, таким образом мы не сможем задавать нулевое значение на выходах микроконтроллера.

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

Вывод 7 не поддерживает ШИМ-сигнал, то есть на нём нельзя регулировать напряжение.

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

На 6 пине получим напряжение 3В.

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

Value=102

Задания для самостоятельного решения

Отключите питание, отключите светодиод от 9-го порта и подключите к 11-му. Измените программу так, чтобы схема снова заработала

#define LED_PIN 11

void setup()

{

pinMode(LED_PIN, OUTPUT);

}

void loop()

{

analogWrite(LED_PIN, 85);

delay(250);

analogWrite(LED_PIN, 170);

delay(250);

analogWrite(LED_PIN, 255);

delay(250);

}

Измените код программы так, чтобы в течение секунды на светодиод последовательно подавалось усреднённое напряжение 0, 1, 2, 3, 4, 5 В

#define LED_PIN 9

void setup()

{

pinMode(LED_PIN, OUTPUT);

}

void loop()

{

analogWrite(LED_PIN, 0);

delay(166);

analogWrite(LED_PIN, 51);

delay(166);

analogWrite(LED_PIN, 102);

delay(166);

analogWrite(LED_PIN, 153);

delay(166);

analogWrite(LED_PIN, 204);

delay(166);

analogWrite(LED_PIN, 255);

delay(166);

}

Возьмите еще один светодиод, резистор на 220 Ом и соберите аналогичную схему на этой же макетке, подключив светодиод к пину номер 3 и другому входу GND, измените программу так, чтобы светодиоды мигали в противофазу: первый выключен, второй горит максимально ярко и до противоположного состояния

#define LED_PIN 9

#define LED_PIN2 3

void setup()

{

pinMode(LED_PIN, OUTPUT);

pinMode(LED_PIN2, OUTPUT);

}

void loop()

{

analogWrite(LED_PIN, 0);

analogWrite(LED_PIN2, 255);

delay(250);

analogWrite(LED_PIN, 255);

analogWrite(LED_PIN2, 0);

delay(250);

}

Наши рекомендации