1503 linee diskr 2motora: различия между версиями
Перейти к навигации
Перейти к поиску
Woronin (обсуждение | вклад) Нет описания правки |
Woronin (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
<syntaxhighlight lang="C++"> | <syntaxhighlight lang="C++"> | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
// | // 2022.01.10 woronin, umkiedu@gmail.com | ||
// Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой | // Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой | ||
// Robot UMKI controller K6_3 | // Robot UMKI controller K6_3 | ||
// включаем правый и левый мотор регулируя скорость и путь, при езде по датчикам линии | // включаем правый и левый мотор регулируя скорость и путь, при езде по датчикам линии | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
int DL; // Переменная для левого датчика | |||
int DR; // Переменная для правого датчика | |||
int motorR = 2; // направление вращения первого правого мотора | |||
int | int motorL = 4; // направление вращения первого левого мотора | ||
int | int mLspeed = 3; // управляет скоростью вращения левого мотора | ||
int | int mRspeed = 5; // управляет скоростью вращения правого мотора | ||
int mLspeed = 3; // | |||
int mRspeed = 5; // | int V = 130; // Задаем скорость вращения колес (от 0 до 255) | ||
// Задаем скорость вращения колес (от 0 до 255) | int timeM = 80; // время включения моторов в млсек | ||
int | |||
// время включения моторов в млсек | |||
void setup() // Задаем параметры инициализации переменных | void setup() // Задаем параметры инициализации переменных | ||
{ | { | ||
pinMode( | pinMode( A0 , INPUT);// настраиваем порт на вход | ||
pinMode( | pinMode( A1 , INPUT); | ||
pinMode(mLspeed, OUTPUT); // | pinMode(mLspeed, OUTPUT); // настраиваем порт на выход | ||
pinMode(mRspeed, OUTPUT); | pinMode(mRspeed, OUTPUT); | ||
pinMode(motorR1, OUTPUT); | pinMode(motorR1, OUTPUT); | ||
pinMode(motorL1, OUTPUT); | pinMode(motorL1, OUTPUT); | ||
} | } | ||
// Основной бесконечный цикл | // Основной бесконечный цикл | ||
void loop() { | void loop() { | ||
DL = digitalRead(A0); // считываем значение из порта в переменную | |||
DR = digitalRead(A1); | |||
if (( | if ((DL == 0) && (DR == 0)) { // если оба датчика видят белый | ||
digitalWrite(motorR, HIGH ); // правый мотор вперед | |||
digitalWrite( | |||
analogWrite(mRspeed, V); // старт правого мотора с заданной скоростью | analogWrite(mRspeed, V); // старт правого мотора с заданной скоростью | ||
digitalWrite( | digitalWrite(motorL, HIGH ); // левый мотор вперед | ||
analogWrite(mLspeed, V); // старт левого мотора с заданной скоростью | analogWrite(mLspeed, V); // старт левого мотора с заданной скоростью | ||
delay(timeM); // время включения в млсек | delay(timeM); // время включения в млсек | ||
} | } | ||
if (( | if ((DL == 1) && (DR == 0)) { // если левый датчик видит черный | ||
digitalWrite( motorR, HIGH ); // правый мотор вперед | |||
digitalWrite( | |||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( | digitalWrite( motorL, LOW ); // левый мотор Назад | ||
analogWrite(mLspeed, V); // | analogWrite(mLspeed, V); // | ||
delay(timeM); | delay(timeM); | ||
} | } | ||
if (( | if ((DL == 0) && (DR == 1)) { // если правый датчик видит черный | ||
digitalWrite( motorR, LOW ); // правый мотор Назад | |||
digitalWrite( | |||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( | digitalWrite( motorL, HIGH ); // левый мотор вперед | ||
analogWrite(mLspeed, V); // | analogWrite(mLspeed, V); // | ||
delay(timeM); | delay(timeM); | ||
} | } | ||
if (( | if ((DL == 1) && (DR == 1)) { // если оба датчика видит черный | ||
digitalWrite( motorR, LOW ); // правый мотор Назад | |||
digitalWrite( | |||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( | digitalWrite( motorL, LOW ); // левый мотор Назад | ||
analogWrite(mLspeed, V); // | analogWrite(mLspeed, V); // | ||
delay(timeM); | delay(timeM); |
Версия от 23:02, 9 января 2023
//////////////////////////////////////////////
// 2022.01.10 woronin, umkiedu@gmail.com
// Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой
// Robot UMKI controller K6_3
// включаем правый и левый мотор регулируя скорость и путь, при езде по датчикам линии
//////////////////////////////////////////////
int DL; // Переменная для левого датчика
int DR; // Переменная для правого датчика
int motorR = 2; // направление вращения первого правого мотора
int motorL = 4; // направление вращения первого левого мотора
int mLspeed = 3; // управляет скоростью вращения левого мотора
int mRspeed = 5; // управляет скоростью вращения правого мотора
int V = 130; // Задаем скорость вращения колес (от 0 до 255)
int timeM = 80; // время включения моторов в млсек
void setup() // Задаем параметры инициализации переменных
{
pinMode( A0 , INPUT);// настраиваем порт на вход
pinMode( A1 , INPUT);
pinMode(mLspeed, OUTPUT); // настраиваем порт на выход
pinMode(mRspeed, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorL1, OUTPUT);
}
// Основной бесконечный цикл
void loop() {
DL = digitalRead(A0); // считываем значение из порта в переменную
DR = digitalRead(A1);
if ((DL == 0) && (DR == 0)) { // если оба датчика видят белый
digitalWrite(motorR, HIGH ); // правый мотор вперед
analogWrite(mRspeed, V); // старт правого мотора с заданной скоростью
digitalWrite(motorL, HIGH ); // левый мотор вперед
analogWrite(mLspeed, V); // старт левого мотора с заданной скоростью
delay(timeM); // время включения в млсек
}
if ((DL == 1) && (DR == 0)) { // если левый датчик видит черный
digitalWrite( motorR, HIGH ); // правый мотор вперед
analogWrite(mRspeed, V); //
digitalWrite( motorL, LOW ); // левый мотор Назад
analogWrite(mLspeed, V); //
delay(timeM);
}
if ((DL == 0) && (DR == 1)) { // если правый датчик видит черный
digitalWrite( motorR, LOW ); // правый мотор Назад
analogWrite(mRspeed, V); //
digitalWrite( motorL, HIGH ); // левый мотор вперед
analogWrite(mLspeed, V); //
delay(timeM);
}
if ((DL == 1) && (DR == 1)) { // если оба датчика видит черный
digitalWrite( motorR, LOW ); // правый мотор Назад
analogWrite(mRspeed, V); //
digitalWrite( motorL, LOW ); // левый мотор Назад
analogWrite(mLspeed, V); //
delay(timeM);
}
digitalWrite(mRspeed, LOW); // Останов, чтоб не потерять линию
digitalWrite(mLspeed, LOW); // скорость левого мотора стоп
delay(timeM);
}