Задания для самостоятельного решения
Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки
Измените код программы так, чтобы с падением освещенности звук становился ниже (например, падал от 5 кГц до 2,5 кГц)
Измените код программы так, чтобы звук терменвокса раздавался не непрерывно, а 10 раз в секунду с различимыми паузами
Эксперимент 5. Ночной светильник
← Терменвокс | Оглавление | Пульсар →
В этом эксперименте светодиод должен включаться при падении уровня освещенности ниже порога, заданного потенциометром.
Список деталей для эксперимента
1 плата Arduino Uno
1 беспаечная макетная плата
1 светодиод
1 фоторезистор
1 резистор номиналом 220 Ом
1 резистор номиналом 10 кОм
1 переменный резистор (потенциометр)
10 проводов «папа-папа»
Для дополнительного задания
еще 1 светодиод
еще 1 резистор номиналом 220 Ом
еще 2 провода
Принципиальная схема
Схема на макетке
Обратите внимание
В этом эксперименте мы устанавливаем фоторезистор между питанием и аналоговым входом, т.е. в позицию R1 в схеме делителя напряжения. Это нам нужно для того, чтобы при уменьшении освещенности мы получали меньшее напряжение на аналоговом входе.
Постарайтесь разместить компоненты так, чтобы светодиод не засвечивал фоторезистор.
Скетч
p050_night_light.ino
#define LED_PIN 13
#define LDR_PIN A0
#define POT_PIN A1
void setup()
{
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
// считываем уровень освещённости. Кстати, объявлять
// переменную и присваивать ей значение можно разом
int lightness = analogRead(LDR_PIN);
// считываем значение с потенциометра, которым мы регулируем
// пороговое значение между условными темнотой и светом
int threshold = analogRead(POT_PIN);
// объявляем логическую переменную и назначаем ей значение
// «темно ли сейчас». Логические переменные, в отличие от
// целочисленных, могут содержать лишь одно из двух значений:
// истину (англ. true) или ложь (англ. false). Такие значения
// ещё называют булевыми (англ. boolean).
boolean tooDark = (lightness < threshold);
// используем ветвление программы: процессор исполнит один из
// двух блоков кода в зависимости от исполнения условия.
// Если (англ. «if») слишком темно...
if (tooDark) {
// ...включаем освещение
digitalWrite(LED_PIN, HIGH);
} else {
// ...иначе свет не нужен — выключаем его
digitalWrite(LED_PIN, LOW);
}
}
Достарыңызбен бөлісу: |