1501 datline kalibr: различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.08 woronin, umkiedu@gmail.com // Датчик линии цифровой сигна…») |
Evgen (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
< | <syntaxhighlight lang="C++"> | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
// 2019.07.08 woronin, umkiedu@gmail.com | // 2019.07.08 woronin, umkiedu@gmail.com | ||
Строка 15: | Строка 15: | ||
int mRspeed = 5; // 5 управляет вращением правого мотора | int mRspeed = 5; // 5 управляет вращением правого мотора | ||
int speeker = 12; // 12 управляет спикер | int speeker = 12; // 12 управляет спикер | ||
void setup() | |||
{ | |||
pinMode(mLspeed, OUTPUT); // конфигурим контакты как работающие на выход | pinMode(mLspeed, OUTPUT); // конфигурим контакты как работающие на выход | ||
pinMode(mRspeed, OUTPUT); | pinMode(mRspeed, OUTPUT); | ||
Строка 23: | Строка 24: | ||
pinMode( sensorR , INPUT);// конфигурим контакты как работающие на вход | pinMode( sensorR , INPUT);// конфигурим контакты как работающие на вход | ||
pinMode( sensorL , INPUT); | pinMode( sensorL , INPUT); | ||
} | |||
// Задаем скорость подтормаживающего колеса (от 0 до 255) | |||
// Задаем скорость подтормаживающего колеса (от 0 до 255) | |||
int V=85; | int V=85; | ||
// Основной бесконечный цикл | // Основной бесконечный цикл | ||
void loop() | |||
{ | |||
if (digitalRead(sensorL)) // если левый датчик над белым полем | if (digitalRead(sensorL)) // если левый датчик над белым полем | ||
{ | { | ||
Строка 67: | Строка 69: | ||
} | } | ||
} | } | ||
} | |||
</ | |||
</syntaxhighlight> | |||
[[Категория:Видео эпизоды УМКИ]] | [[Категория:Видео эпизоды УМКИ]] | ||
[[Категория:Примеры программирования Arduino]] |
Версия от 14:21, 15 ноября 2019
//////////////////////////////////////////////
// 2019.07.08 woronin, umkiedu@gmail.com
// Датчик линии цифровой сигнал, аналоговое движение
// Robot UMKI controller K6_3
// езда с изменяемой скоростью по линии с притормаживанием одного колеса
//////////////////////////////////////////////
const int sensorR = A1; // Подсоедниняем правый датчик к A1
const int sensorL = A0; // Подсоедниняем левый датчик к A0
int motorR1 = 2; // 2 контакт определяет направление вращения первого правого мотора
int motorR2 = 6; // 6 контакт определяет направление вращения второго правого мотора
int motorL1 = 4; // 4 контакт определяет направление вращения первого левого мотора
int motorL2 = 7; // 7 контакт определяет направление вращения второго левого мотора
int mLspeed = 3; // 3 управляет вращением левого мотора
int mRspeed = 5; // 5 управляет вращением правого мотора
int speeker = 12; // 12 управляет спикер
void setup()
{
pinMode(mLspeed, OUTPUT); // конфигурим контакты как работающие на выход
pinMode(mRspeed, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorL1, OUTPUT);
pinMode( sensorR , INPUT);// конфигурим контакты как работающие на вход
pinMode( sensorL , INPUT);
}
// Задаем скорость подтормаживающего колеса (от 0 до 255)
int V=85;
// Основной бесконечный цикл
void loop()
{
if (digitalRead(sensorL)) // если левый датчик над белым полем
{
if (digitalRead(sensorR)) // если правый датчик над белым полем
{
// движение вперед
digitalWrite( motorR1, HIGH ); // правый мотор вперед
analogWrite(mRspeed, 255); // скорость правого мотора на максимуме
digitalWrite( motorL1 , HIGH ); // левый мотор вперед
analogWrite(mLspeed, 255); // скорость левого мотора на максимуме
}
else // иначе: правый датчик над черным полем, левый - над белым
{
// поворот направо
digitalWrite( motorR1, HIGH ); // правый мотор вперед
analogWrite(mRspeed, 255); // скорость правого мотора на максимуме
digitalWrite( motorL1, LOW ); // левый мотор назад
analogWrite(mLspeed, V); // левый мотор подтормаживает
}
}
else // иначе: левый датчик над черным полем
{
if (digitalRead( sensorR)) // если правый датчик над белым полем
{
// поворот налево
digitalWrite( motorR1, LOW ); // правый мотор назад
analogWrite(mRspeed, V); // правый мотор подтормаживает
digitalWrite( motorL1 , HIGH ); // левый мотор вперед
analogWrite(mLspeed, 255); // скорость левого мотора на максимуме
}
else // иначе: правый датчик над черным полем, левый - над черным
{
// движение вперед
digitalWrite( motorR1, HIGH );
analogWrite(mRspeed, 255);
digitalWrite( motorL1 , HIGH );
analogWrite(mLspeed, 255);
}
}
}