Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этом уроке мы будем использовать серводвигатель, фоторезистор и понижающий резистор, чтобы собрать систему источника света с автоматическим отслеживанием.
Шаг 1: Компоненты:
- Плата Arduino Uno * 1
- USB-кабель * 1
- Серводвигатель * 1
- фоторезистор * 1
- Резистор (10к) * 1
- Макетная плата * 1
- перемычки
Шаг 2: Принцип
Серводвигатель и фоторезистор сканируют и ищут источник света под углом 180 градусов и записывают местоположение источника света. После завершения сканирования серводвигатель и фоторезистор останавливаются в направлении источника света.
Шаг 3: Процедуры:
Шаг 1:
Постройте схему.
Шаг 2:
Загрузите код с
Шаг 3:
Загрузите скетч на плату Arduino Uno
Щелкните значок «Загрузить», чтобы загрузить код на плату управления.
Если в нижней части окна отображается «Готово», это означает, что скетч был успешно загружен.
Теперь, если вы используете фонарик, чтобы осветить фоторезистор, вы увидите, как серводвигатель и фоторезистор вращаются и, наконец, останавливаются в направлении источника света.
Шаг 4: принципиальная схема
Шаг 5: Код
/********************************************************************
* имя:
Автоматическое отслеживание источника света
* функция
: если осветить фоторезистор фонариком, * ты увидишь
серводвигатель и фоторезистор вращаются, * и наконец
остановитесь в направлении источника света.
***********************************************************************
/ Электронная почта: [email protected]
// Сайт: www.primerobotics.in
#включают
const int фотоэлементPin = A0;
/************************************************/
Servo myservo; // создаем объект серво для управления сервоприводом
int outputValue = 0;
int angle = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
int maxVal = 0;
int maxPos = 0;
/*************************************************/
установка void ()
{
Serial.begin (9600);
myservo.attach (9); // прикрепляет сервопривод на выводе 9 к сервообъекту
}
/*************************************************/
пустой цикл ()
{
для (int i = 0;
я <19; я ++)
{
myservo.write (angle ); // записываем угол в сервопривод
outputValue
= analogRead (photocellPin); // считываем значение A0
Serial.println (outputValue); // распечатать
if (outputValue> maxVal) // если текущее значение A0 больше предыдущего
{
maxVal = outputValue; // записываем значение
maxPos
= i; //
}
задержка (200);
}
myservo.write (angle [maxPos]); // записываем в сервопривод угол, для которого A0 имеет наибольшее значение
в то время как (1);
}