Эксперимент Маячок


Вопросы для проверки себя



бет36/45
Дата13.02.2023
өлшемі1,82 Mb.
#67503
түріЗакон
1   ...   32   33   34   35   36   37   38   39   ...   45
Вопросы для проверки себя

  1. Какие действия нужно предпринять, чтобы читать на компьютере данные с Arduino?

  2. О каких ограничениях не следует забывать при работе с последовательным портом?

  3. Как избежать ошибки в передаче данных, содержащих обратный слэш (\)?

Задания для самостоятельного решения

  1. Перед таблицей данных о температуре добавьте заголовок (например, "Meteostation").

  2. Добавьте столбец, содержащий количество секунд, прошедших с момента запуска микроконтроллера. Можно уменьшить интервал передачи данных.


Эксперимент 17. Пантограф
← Метеостанция | Оглавление | Тестер батареек →

В этом эксперименте мы вращаем сервопривод на угол, задаваемый потенциометром.


Прочтите перед выполнением

  • Конденсатор

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

  • 1 плата Arduino Uno

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

  • сервопривод

  • 1 конденсатор емкостью 220 мкФ

  • потенциометр

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

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

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

Обратите внимание

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

  • Не забывайте про то, что нужно соблюдать полярность элетролитического конденсатора. Короткая ножка (со стороны белой полосы на корпусе) — «минус».

  • Вы можете соединить провод сервопривода с макетной платой проводами «папа-папа»: коричневый это земля, красный — питание, оранжевый — сигнал.

  • В данном эксперименте мы подключаем питние сервопривода к 5V-выходу Arduino. С одним сервоприводом плата справится, но если в каком-либо проекте вам нужно больше серв, используйте специальные платы-драйвера с отдельным источником питания для серв.

Скетч
p170_servo.ino
// управлять сервоприводами (англ. servo motor) самостоятельно
// не так то просто, но в стандартной библиотеке уже всё
// заготовлено, что делает задачу тривиальной
#include
#define POT_MAX_ANGLE 270.0 // макс. угол поворота потенциометра
// объявляем объект типа Servo с именем myServo. Ранее мы
// использовали int, boolean, float, а теперь точно также
// используем тип Servo, предоставляемый библиотекой. В случае
// Serial мы использовали объект сразу же: он уже был создан
// для нас, но в случае с Servo, мы должны сделать это явно.
// Ведь в нашем проекте могут быть одновременно несколько
// приводов, и нам понадобится различать их по именам
Servo myServo;
void setup()
{
// прикрепляем (англ. attach) нашу серву к 9-му пину. Явный
// вызов pinMode не нужен: функция attach сделает всё за нас
myServo.attach(9);
}
void loop()
{
int val = analogRead(A0);
// на основе сигнала понимаем реальный угол поворота движка.
// Используем вещественные числа в расчётах, но полученный
// результат округляем обратно до целого числа
int angle = int(val / 1024.0 * POT_MAX_ANGLE);
// обычная серва не сможет повторить угол потенциометра на
// всём диапазоне углов. Она умеет вставать в углы от 0° до
// 180°. Ограничиваем угол соответствующе
angle = constrain(angle, 0, 180);
// и, наконец, подаём серве команду встать в указанный угол
myServo.write(angle);
}


Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   45




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет