1503 linee diskr 2motora: различия между версиями
Перейти к навигации
Перейти к поиску
Woronin (обсуждение | вклад) Нет описания правки |
Woronin (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
<syntaxhighlight lang="C++"> | <syntaxhighlight lang="C++"> | ||
////////////////////////////////////////////// | ////////////////////////////////////////////// | ||
// 2021.02. | // 2021.02.20 woronin, umkiedu@gmail.com | ||
// Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой | // Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой | ||
// Robot UMKI controller K6_3 | // Robot UMKI controller K6_3 | ||
Строка 15: | Строка 15: | ||
int mRspeed = 5; // 5 управляет скоростью вращения правого мотора | int mRspeed = 5; // 5 управляет скоростью вращения правого мотора | ||
// Задаем скорость вращения колес (от 0 до 255) | // Задаем скорость вращения колес (от 0 до 255) | ||
int V = | int V = 130; | ||
// время включения моторов в млсек | // время включения моторов в млсек | ||
int timeM = | int timeM = 80; | ||
void setup() // Задаем параметры инициализации переменных | void setup() // Задаем параметры инициализации переменных | ||
Строка 27: | Строка 27: | ||
pinMode(motorR1, OUTPUT); | pinMode(motorR1, OUTPUT); | ||
pinMode(motorL1, OUTPUT); | pinMode(motorL1, OUTPUT); | ||
Serial.begin(9600); // | Serial.begin(9600); // Подключаем монитор порта на скорости общения 9600 байт в сек | ||
} | } | ||
Строка 45: | Строка 45: | ||
Serial.println("Lsensor =1 Rsensor=0"); | Serial.println("Lsensor =1 Rsensor=0"); | ||
digitalWrite( motorR1, HIGH ); // правый мотор вперед | digitalWrite( motorR1, HIGH ); // правый мотор вперед | ||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( motorL1 , LOW ); // левый мотор Назад | digitalWrite( motorL1 , LOW ); // левый мотор Назад | ||
analogWrite(mLspeed, V); // | |||
delay(timeM); | delay(timeM); | ||
} | } | ||
Строка 54: | Строка 54: | ||
Serial.println("Lsensor =0 Rsensor=1"); | Serial.println("Lsensor =0 Rsensor=1"); | ||
digitalWrite( motorR1, LOW ); // правый мотор Назад | digitalWrite( motorR1, LOW ); // правый мотор Назад | ||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( motorL1 , HIGH ); // левый мотор вперед | digitalWrite( motorL1 , HIGH ); // левый мотор вперед | ||
analogWrite(mLspeed, V); // | analogWrite(mLspeed, V); // | ||
delay(timeM); | delay(timeM); | ||
} | } | ||
Строка 63: | Строка 63: | ||
Serial.println("Lsensor =1 Rsensor=1"); | Serial.println("Lsensor =1 Rsensor=1"); | ||
digitalWrite( motorR1, LOW ); // правый мотор Назад | digitalWrite( motorR1, LOW ); // правый мотор Назад | ||
analogWrite(mRspeed, V); // | analogWrite(mRspeed, V); // | ||
digitalWrite( motorL1 , LOW ); // левый мотор Назад | digitalWrite( motorL1 , LOW ); // левый мотор Назад | ||
analogWrite(mLspeed, V); // | analogWrite(mLspeed, V); // | ||
delay(timeM); | delay(timeM); | ||
} | } | ||
digitalWrite(mRspeed, LOW); // | digitalWrite(mRspeed, LOW); // Останов, чтоб не потерять линию | ||
digitalWrite(mLspeed, LOW); // скорость левого мотора стоп | digitalWrite(mLspeed, LOW); // скорость левого мотора стоп | ||
delay(timeM); | delay(timeM); |
Версия от 12:41, 22 февраля 2021
//////////////////////////////////////////////
// 2021.02.20 woronin, umkiedu@gmail.com
// Датчик линии цифровой сигнал, тестируем движение робота дискретно с регулировкой
// Robot UMKI controller K6_3
// включаем правый и левый мотор регулируя скорость и путь, при езде по датчикам линии
//////////////////////////////////////////////
const int sensorL = A0; // Присоедниняем левый датчик к A0
const int sensorR = A1; // Присоедниняем правый датчик к A1
int Lsensor; // Переменная для левого датчика
int Rsensor; // Переменная для правого датчика
int motorR1 = 2; // направление вращения первого правого мотора
int motorL1 = 4; // направление вращения первого левого мотора
int mLspeed = 3; // 3 управляет скоростью вращения левого мотора
int mRspeed = 5; // 5 управляет скоростью вращения правого мотора
// Задаем скорость вращения колес (от 0 до 255)
int V = 130;
// время включения моторов в млсек
int timeM = 80;
void setup() // Задаем параметры инициализации переменных
{
pinMode( sensorR , INPUT);// конфигурим порт на вход
pinMode( sensorL , INPUT);
pinMode(mLspeed, OUTPUT); // конфигурим порт на выход
pinMode(mRspeed, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorL1, OUTPUT);
Serial.begin(9600); // Подключаем монитор порта на скорости общения 9600 байт в сек
}
// Основной бесконечный цикл
void loop() {
Rsensor = digitalRead(sensorR); // считываем значение из порта в переменную
Lsensor = digitalRead(sensorL);
if ((Lsensor == 0) && (Rsensor == 0)) { // если оба датчика видят белый
Serial.println("Lsensor =0 Rsensor=0"); // печатаем отладочную информацию в монитор порта
digitalWrite(motorR1, HIGH ); // правый мотор вперед
analogWrite(mRspeed, V); // старт правого мотора с заданной скоростью
digitalWrite(motorL1 , HIGH ); // левый мотор вперед
analogWrite(mLspeed, V); // старт левого мотора с заданной скоростью
delay(timeM); // время включения в млсек
}
if ((Lsensor == 1) && (Rsensor == 0)) { // если левый датчик видит черный
Serial.println("Lsensor =1 Rsensor=0");
digitalWrite( motorR1, HIGH ); // правый мотор вперед
analogWrite(mRspeed, V); //
digitalWrite( motorL1 , LOW ); // левый мотор Назад
analogWrite(mLspeed, V); //
delay(timeM);
}
if ((Lsensor == 0) && (Rsensor == 1)) { // если правый датчик видит черный
Serial.println("Lsensor =0 Rsensor=1");
digitalWrite( motorR1, LOW ); // правый мотор Назад
analogWrite(mRspeed, V); //
digitalWrite( motorL1 , HIGH ); // левый мотор вперед
analogWrite(mLspeed, V); //
delay(timeM);
}
if ((Lsensor == 1) && (Rsensor == 1)) { // если оба датчика видит черный
Serial.println("Lsensor =1 Rsensor=1");
digitalWrite( motorR1, LOW ); // правый мотор Назад
analogWrite(mRspeed, V); //
digitalWrite( motorL1 , LOW ); // левый мотор Назад
analogWrite(mLspeed, V); //
delay(timeM);
}
digitalWrite(mRspeed, LOW); // Останов, чтоб не потерять линию
digitalWrite(mLspeed, LOW); // скорость левого мотора стоп
delay(timeM);
}