СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Итоговый проект "Ночной светильник" по курсу "Основы интернет вещей и Arduino"

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Итоговый проект "Ночной светильник" по курсу "Основы интернет вещей и Arduino"»

Проект «Ночной светильник».

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


Список деталей для эксперимента
  • 1 плата Arduino Uno

  • 1 беспаечная макетная плата

  • 1 светодиод

  • 1 фоторезистор

  • 1 резистор номиналом 220 Ом

  • 1 резистор номиналом 10 кОм

  • 1 переменный резистор (потенциометр)

  • 10 проводов «папа-папа»

Для дополнительного задания
  • еще 1 светодиод

  • еще 1 резистор номиналом 220 Ом

  • еще 2 провода

Принципиальная схема

Схема на макетке

Обратите внимание
  • В этом эксперименте мы устанавливаем фоторезистор между питанием и аналоговым входом, т.е. в позицию R1 в схеме делителя напряжения. Это нам нужно для того, чтобы при уменьшении освещенности мы получали меньшее напряжение на аналоговом входе.

  • Постарайтесь разместить компоненты так, чтобы светодиод не засвечивал фоторезистор.

Скетч

#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


// используем ветвление программы: процессор исполнит один из

// двух блоков кода в зависимости от исполнения условия.

// Если (англ. «if») слишком темно...

if (tooDark) {

// ...включаем освещение

digitalWrite(LED_PIN, HIGH);

} else {

// ...иначе свет не нужен — выключаем его

digitalWrite(LED_PIN, LOW);

}

}

Пояснения к коду
  • Мы используем новый тип переменных — boolean, которые хранят только значения true (истина, 1) или false (ложь, 0). Эти значения являются результатом вычисления логических выражений. В данном примере логическое выражение — это lightness . На человеческом языке это звучит как: «освещенность ниже порогового уровня». Такое высказывание будет истинным, когда освещенность ниже порогового уровня. Микроконтроллер может сравнить значения переменных lightness и threshold, которые, в свою очередь, являются результатами измерений, и вычислить истинность логического выражения.

  • Мы взяли это логическое выражение в скобки только для наглядности. Всегда лучше писать читабельный код. В других случаях скобки могут влиять на порядок действий, как в обычной арифметике.

  • В нашем эксперименте логическое выражение будет истинным, когда значение lightness меньше значения threshold, потому что мы использовали оператор . Мы можем использовать операторы , , =, ==, !=, которые значат «больше», «меньше или равно», «больше или равно», «равно», «не равно» соответственно.

  • Будьте особенно внимательны с логическим оператором == и не путайте его с оператором присваивания =. В первом случае мы сравниваем значения выражений и получаем логическое значение (истина или ложь), а во втором случае присваиваем левому операнду значение правого. Компилятор не знает наших намерений и ошибку не выдаст, а мы можем нечаянно изменить значение какой-нибудь переменной и затем долго разыскивать ошибку.

  • Условный оператор if («если») — один из ключевых в большинстве языков программирования. С его помощью мы можем выполнять не только жестко заданную последовательность действий, но принимать решения, по какой ветви алгоритма идти, в зависимости от неких условий.

  • У логического выражения lightness есть значение: true или false. Мы вычислили его и поместили в булеву переменную tooDark («слишком темно»). Таким образом мы как бы говорим «если слишком темно, то включить светодиод»

  • С таким же успехом мы могли бы сказать «если освещенность меньше порогового уровня, то включить светодиод», т.е. передать в if всё логическое выражение:

if (lightness

// ...

}

  • За условным оператором if обязательно следует блок кода, который выполняется в случае истинности логического выражения. Не забывайте про обе фигурные скобки {}!

  • Если в случае истинности выражения нам нужно выполнить только одну инструкцию, ее можно написать сразу после if (…) без фигурных скобок:

if (lightness

digitalWrite(LED_PIN, HIGH);

  • Оператор if может быть расширен конструкцией else («иначе»). Блок кода или единственная инструкция, следующий за ней, будет выполнен только если логическое выражение в if имеет значение false, «ложь». Правила, касающиеся фигурных скобок, такие же. В нашем эксперименте мы написали «если слишком темно, включить светодиод, иначе выключить светодиод».



Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!