1504 linee analog: различия между версиями
Перейти к навигации
Перейти к поиску
Woronin (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="C++"> ////////////////////////////////////////////// // 2020.02.12 woronin, umkiedu@gmail.com // Датчик линии цифр…») |
Woronin (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
<syntaxhighlight lang="C++"> | <syntaxhighlight lang="C++"> | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
// | // 2023.01.10 woronin, umkiedu@gmail.com | ||
// Датчик линии цифровой сигнал, аналоговое движение | // Датчик линии цифровой сигнал, аналоговое движение | ||
// Robot UMKI controller K6_3 | // Robot UMKI controller K6_3 | ||
// езда с изменяемой скоростью по линии с притормаживанием одного колеса | // езда с изменяемой скоростью по линии с притормаживанием одного колеса | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
int sensorL = A0; // Присоедниняем левый датчик к A0 | |||
int sensorR = A1; // Присоедниняем правый датчик к A1 | |||
int | int motorR = 2; // 2 контакт определяет направление вращения первого правого мотора | ||
int | int motorL = 4; // 4 контакт определяет направление вращения первого левого мотора | ||
int | int mRspeed = 3; // 3 управляет вращением правого мотора | ||
int | int mLspeed = 5; // 5 управляет вращением левого мотора | ||
void setup() | void setup() | ||
{ | { | ||
pinMode(mLspeed, OUTPUT); // | pinMode(mLspeed, OUTPUT); // Настраиваем контакты как работающие на выход | ||
pinMode(mRspeed, OUTPUT); | pinMode(mRspeed, OUTPUT); | ||
pinMode( | pinMode(motorR, OUTPUT); | ||
pinMode( | pinMode(motorL, OUTPUT); | ||
pinMode( sensorR , INPUT); | pinMode(sensorR , INPUT); // Настраиваем контакты как работающие на вход | ||
pinMode( sensorL , INPUT); | pinMode(sensorL , INPUT); | ||
} | } | ||
Строка 38: | Строка 38: | ||
{ | { | ||
// движение вперед | // движение вперед | ||
digitalWrite( | digitalWrite(motorR, HIGH ); // правый мотор вперед | ||
analogWrite(mRspeed, Vmax); // скорость правого мотора на максимуме | analogWrite (mRspeed, Vmax); // скорость правого мотора на максимуме | ||
digitalWrite( | digitalWrite(motorL, HIGH ); // левый мотор вперед | ||
analogWrite(mLspeed, Vmax); // скорость левого мотора на максимуме | analogWrite (mLspeed, Vmax); // скорость левого мотора на максимуме | ||
} | } | ||
else // иначе: , левый - над белым , а правый датчик над черным полем | else // иначе: , левый - над белым , а правый датчик над черным полем | ||
{ | { | ||
// поворот направо | // поворот направо | ||
digitalWrite( | digitalWrite(motorR, LOW ); // правый мотор слегка назад | ||
analogWrite(mRspeed, V); // правый мотор подтормаживает | analogWrite (mRspeed, V); // правый мотор подтормаживает | ||
digitalWrite( | digitalWrite(motorL, HIGH ); // левый мотор продолжает вперед | ||
analogWrite(mLspeed, Vmax); // скорость левого мотора на максимуме | analogWrite (mLspeed, Vmax); // скорость левого мотора на максимуме | ||
} | } | ||
} | } | ||
Строка 57: | Строка 57: | ||
{ | { | ||
// поворот налево | // поворот налево | ||
digitalWrite( | digitalWrite(motorR, HIGH ); // правый мотор вперед | ||
analogWrite(mRspeed, Vmax); // скорость правого мотора на максимуме | analogWrite (mRspeed, Vmax); // скорость правого мотора на максимуме | ||
digitalWrite( | digitalWrite(motorL, LOW ); // левый мотор назад | ||
analogWrite(mLspeed, V); // левый мотор подтормаживает | analogWrite (mLspeed, V); // левый мотор подтормаживает | ||
} | } | ||
else // иначе: правый датчик над черным полем, левый - над черным | else // иначе: правый датчик над черным полем, левый - над черным | ||
{ | { | ||
// движение вперед | // движение вперед | ||
digitalWrite( | digitalWrite(motorR, HIGH ); | ||
analogWrite(mRspeed, Vmax); | analogWrite (mRspeed, Vmax); | ||
digitalWrite( | digitalWrite(motorL, HIGH ); | ||
analogWrite(mLspeed, Vmax); | analogWrite (mLspeed, Vmax); | ||
} | } | ||
} | } |
Версия от 23:12, 9 января 2023
//////////////////////////////////////////////
// 2023.01.10 woronin, umkiedu@gmail.com
// Датчик линии цифровой сигнал, аналоговое движение
// Robot UMKI controller K6_3
// езда с изменяемой скоростью по линии с притормаживанием одного колеса
//////////////////////////////////////////////
int sensorL = A0; // Присоедниняем левый датчик к A0
int sensorR = A1; // Присоедниняем правый датчик к A1
int motorR = 2; // 2 контакт определяет направление вращения первого правого мотора
int motorL = 4; // 4 контакт определяет направление вращения первого левого мотора
int mRspeed = 3; // 3 управляет вращением правого мотора
int mLspeed = 5; // 5 управляет вращением левого мотора
void setup()
{
pinMode(mLspeed, OUTPUT); // Настраиваем контакты как работающие на выход
pinMode(mRspeed, OUTPUT);
pinMode(motorR, OUTPUT);
pinMode(motorL, OUTPUT);
pinMode(sensorR , INPUT); // Настраиваем контакты как работающие на вход
pinMode(sensorL , INPUT);
}
// Задаем скорость подтормаживающего колеса (от 0 до 255)
int V=85;
int Vmax=255;
// Основной бесконечный цикл
void loop()
{
if (digitalRead(sensorL)) // если левый датчик над белым полем
{
if (digitalRead(sensorR)) // если правый датчик над белым полем
{
// движение вперед
digitalWrite(motorR, HIGH ); // правый мотор вперед
analogWrite (mRspeed, Vmax); // скорость правого мотора на максимуме
digitalWrite(motorL, HIGH ); // левый мотор вперед
analogWrite (mLspeed, Vmax); // скорость левого мотора на максимуме
}
else // иначе: , левый - над белым , а правый датчик над черным полем
{
// поворот направо
digitalWrite(motorR, LOW ); // правый мотор слегка назад
analogWrite (mRspeed, V); // правый мотор подтормаживает
digitalWrite(motorL, HIGH ); // левый мотор продолжает вперед
analogWrite (mLspeed, Vmax); // скорость левого мотора на максимуме
}
}
else // иначе: левый датчик над черным полем
{
if (digitalRead( sensorR)) // если правый датчик над белым полем
{
// поворот налево
digitalWrite(motorR, HIGH ); // правый мотор вперед
analogWrite (mRspeed, Vmax); // скорость правого мотора на максимуме
digitalWrite(motorL, LOW ); // левый мотор назад
analogWrite (mLspeed, V); // левый мотор подтормаживает
}
else // иначе: правый датчик над черным полем, левый - над черным
{
// движение вперед
digitalWrite(motorR, HIGH );
analogWrite (mRspeed, Vmax);
digitalWrite(motorL, HIGH );
analogWrite (mLspeed, Vmax);
}
}
}