Эксперимент 3. Светильник с управляемой яркостью
В этом эксперименте мы меняем яркость светодиода, вращая ручку переменного резистора.
Схема
Код
#define LED_PIN 9
#define POT_PIN A0
void setup()
{
pinMode(13, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(POT_PIN, INPUT);
}
void loop()
{
digitalWrite(13, HIGH);
int rotation, brightness;
rotation=analogRead(POT_PIN);
brightness=rotation/4;
analogWrite(LED_PIN, brightness);
}
Вопросы для проверки себя
Можем ли мы при сборке схемы подключить светодиод и потенциометр напрямую к разным входам GND микроконтроллера?
Не имеет значения к одному или к разным входам GND подключены элементы.
В какую сторону нужно крутить переменный резистор для увеличения яркости светодиода?
В зависимости к какой ножке подключены +5В, меняется направление вращения.
3.Что будет, если стереть из программы строчку pinMode(LED_PIN, OUTPUT)? строчку pinMode(POT_PIN, INPUT)?
Ничего не произойдет, схема будет работать как обычно.
Зачем мы делим значение, полученное с аналогового входа перед тем, как задать яркость светодиода? что будет, если этого не сделать?
Микроконтроллер с потенциометра считывает напряжение, и выдает его в виде числа от 0 до 1023, поскольку pin 9 на выходе может принимать только целочисленные значения от 0 до 255, то число полученное с потенциометра нужно разделить на 4.
Задания для самостоятельного решения
Отключите питание платы, подключите к порту 5 еще один светодиод. Измените код таким образом, чтобы второй светодиод светился на 1/8 от яркости первого
#define LED_PIN 9
#define LED_PIN2 5
#define POT_PIN A0
void setup()
{
pinMode(13, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(POT_PIN, INPUT);
}
void loop()
{
digitalWrite(13, HIGH);
int rotation, brightness;
rotation=analogRead(POT_PIN);
brightness=rotation/4;
analogWrite(LED_PIN, brightness);
analogWrite(LED_PIN2, brightness/8);
}
Эксперимент 4. Терменвокс
В этом эксперименте мы имитируем действие музыкального инструмента терменвокс: изменяем высоту звучания бесконтактным путем, больше или меньше закрывая от света фоторезистор.
Схема
Код
#define BUZZER_PIN 3
#define LDR_PIN A0
void setup()
{
pinMode(13, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
int val, frequency;
val=analogRead(LDR_PIN);
frequency=map(val, 0, 1023, 3500, 4500);
tone(BUZZER_PIN, frequency, 20);
}
Вопросы для проверки себя
Каким сопротивлением должен обладать фоторезистор, чтобы на аналоговый вход было подано напряжение 1 В?
Сопротивление фоторезистора должно быть 2,5 КОм.
Можем ли мы регулировать яркость светодиода, подключенного к 11-му порту, во время звучания пьезопищалки?
Можем, нельзя давать команду другой пищалке.
Что изменится в работе терменвокса, если заменить резистор на 10 кОм резистором на 100 кОм? Попробуйте ответить без эксперимента. Затем отключите питание, замените резистор и проверьте.
Диапазон выдаваемых частот станет меньше, так как при увеличении освещения напряжение на фоторезисторе будет быстрее падать до минимума.