×
Traktatov.net » Изучаем Arduino: инструметы и методы технического волшебства » Читать онлайн
Страница 40 из 138 Настройки

6. Возврат к шагу 1.

Код программы приведен в листинге 4.7. Создайте в Arduino IDE новый проект, скопируйте этот код и загрузите его в плату Arduino.

Листинг 4.7. Программа ИК-датчика расстояния

// ИК-датчик расстояния

#include

const int SERV0=9; // Вывод 9 для подключения сигнального провода сервопривода

const int IR=0;// Подключение ИК-датчика расстояния к аналоговому входу A0

const int LED1=3; // Вывод светодиода 1

const int LED2=5; // Вывод светодиода 2

const int LED3=6; // Вывод светодиода 3

const int LED4=11; // Вывод светодиода 4

// Создание объекта Servo

Servo myServo;

- 106 -


int dist1 = 0;//Расстояние в первой области

int dist2 = 0;//Расстояние во второй области

int dist3 = 0;//Расстояние в третьей области

int dist4 = 0;//Расстояние в четвертой области


void setup()

{

myServo.attach(SERV0);

pinMode(LED1, OUTPUT);//Сконфигурировать

pinMode(LED2, OUTPUT);//контакты подключения

pinMode(LED3, OUTPUT);//четырех светодиодов

pinMode(LED4, OUTPUT);// как выходы

}


void loop()

{

// Поворот вала сервопривода по четырем позициям

dist1 = readDistance(15);

analogWrite(LED1, dist1);

delay(300);

dist2 = readDistance(65);

analogWrite(LED2, dist2);

delay(300);

dist3 = readDistance(115);

analogWrite(LED3, dist3);

delay(300);

dist4 = readDistance(165);

analogWrite(LED4, dist4);

delay(300);

}


int readDistance (int pos)

{

myServo.write(pos);

delay(600);

int dist = analogRead(IR);//Чтение данных с датчика расстояния

dist = map(dist, 50, 500, 0, 255); //Преобразование к нужному диапазону

dist = constrain(dist, 0, 255);


return dist;//Выдача значения, соответствующего расстоянию

}


В программе есть функция readDistance(), которая поворачивает вал сервопривода на определенный угол, измеряет расстояние, масштабирует его, а затем возвращает полученное значение в цикл loop(). Какой диапазон значений выбрать для свето

- 107 -

диодов, зависит от конкретной ситуации. У меня для самого дальнего объекта датчик выдавал значение 50, до ближайших - 500.

После загрузки кода и запуска программы система должна функционировать, как на демонстрационных видеоклипах, перечисленных в начале главы.

Резюме

В этой главе вы узнали следующее:

• Как работают двигатели постоянного тока.

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

• Как управлять скоростью и направлением вращения двигателя с помощью ШИМ и H-моста.

• Что серводвигатели точно позиционируются и управляются с помощью Arduino библиотеки Servo.

• Как создать вторичный источник питания 5 В от батареи 9 В с помощью стабилизатора напряжения.

• Что ИК-датчики получают инфракрасный сигнал, отраженный от объекта, и возвращают аналоговые значения, соответствующие расстоянию до данного объекта.

• Что комментарии важны для отладки и совместного использования программ.


Глава 5. Работаем со звуком


Работаем

Список деталей

Для повторения примеров главы вам понадобятся следующие детали:

• плата Arduino Uno;

• USB-кабель;

• 4 кнопки;

• 5 резисторов номиналом 10 кОм;

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