Menu
CoddyTech

Световой индикатор угла сервопривода

Часть раздела Выходные сигналы путешествия по Arduino на Coddy. Урок 24 из 24.

С иглой на валу сервопривод становится измерительным прибором, как спидометр в автомобиле. Здесь он показывает, насколько ярко.

Как и в ночнике, AO модуля показывает меньшее значение при более ярком освещении: около 1023 в темноте и близко к 0 при ярком свете. При более ярком освещении стрелка прибора должна отклоняться выше, поэтому преобразование выполняется в обратном порядке. Как и в люксметре, задайте для map() новый диапазон в обратном порядке:

int angle = map(reading, 0, 1023, 180, 0);

Показание 0, соответствующее яркому свету, преобразуется в 180 градусов, а 1023, соответствующее темноте, — в 0. Все значения между ними располагаются между этими крайними значениями в обратном порядке.

challenge icon

Задание

Средне

AO датчика освещённости подключён к A0, а сервопривод — к контакту 9. Сделай из рычага измеритель освещённости:

  • в темноте рычаг указывает на 0 градусов, при полном освещении — на 180
  • используй map() с обратным порядком значений нового диапазона
  • выводи угол и каждый раз жди 50 мс

Нажми Run и перемести ползунок освещённости на датчике, затем нажми Check.

Попробуйте сами

#include <Servo.h>

const int lightPin = A0;
Servo arm;

void setup() {
  arm.attach(9);
  Serial.begin(9600);
}

void loop() {
  // считайте уровень освещённости, преобразуйте его в обратном порядке в диапазон 180..0, поверните рычаг, выведите угол
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Выходные сигналы

Потренируйтесь самостоятельно: Песочница Arduino