1501 datline kalibr: различия между версиями

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
(Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.08 woronin, umkiedu@gmail.com // Датчик линии цифровой сигна…»)
 
Нет описания правки
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
<code>
<syntaxhighlight lang="C++">
//////////////////////////////////////////////
//////////////////////////////////////////////
//    2019.07.08 woronin,  umkiedu@gmail.com
//    2021.02.22 woronin,  umkiedu@gmail.com
//    Датчик линии цифровой сигнал, аналоговое движение
//    Датчик линии цифровой сигнал, калибруем показания
//    Robot UMKI controller  K6_3
//    Robot UMKI controller  K6_3
//    езда с изменяемой скоростью по линии с притормаживанием одного колеса
//    тестируем работу правого и левого датчика линии
//////////////////////////////////////////////
//////////////////////////////////////////////
const int sensorR = A1; // Подсоедниняем правый датчик к A1
const int sensorR = A1; // Присоедниняем правый датчик к A1
const int sensorL = A0; // Подсоедниняем левый датчик к A0
const int sensorL = A0; // Присоедниняем левый датчик к A0
int motorR1 = 2; // 2 контакт определяет направление вращения  первого правого мотора
int Rsensor; // Проверяем правый датчик
int motorR2 = 6; // 6 контакт определяет направление вращения  второго правого мотора
int Lsensor; // Проверяем левый датчик
  int motorL1 = 4; // 4 контакт определяет направление вращения первого левого мотора
 
  int motorL2 = 7; // 7 контакт определяет направление вращения  второго левого мотора
void setup()
int mLspeed = 3; // 3 управляет вращением  левого мотора
{
  int mRspeed = 5; // 5 управляет вращением правого мотора
  pinMode( sensorR , INPUT); // конфигурим  порт на вход
  int speeker = 12; // 12 управляет спикер
  pinMode( sensorL , INPUT);
  void setup()
  Serial.begin(9600);   // Для отладки. Подключаем монитор порта на скорости общения 9600 байт в сек
{
}
  pinMode(mLspeed, OUTPUT); // конфигурим контакты как работающие на выход
 
   pinMode(mRspeed, OUTPUT);
// Основной бесконечный цикл
  pinMode(motorR1, OUTPUT);
void loop()
  pinMode(motorL1, OUTPUT);
{
  pinMode( sensorR , INPUT);// конфигурим контакты как работающие на вход
  Rsensor=digitalRead(sensorR); //  считываем значения для правого датчика. 0 - черный; 1 - белый
   pinMode( sensorL , INPUT);
  Lsensor=digitalRead(sensorL); // считываем значения для левого датчика. 0 - черный; 1 - белый
  if ((Lsensor == 0)&&(Rsensor==0)) {// если оба датчика видят черный
   Serial.println("Lsensor=0 Rsensor=0");
}
 
if ((Lsensor == 1)&&(Rsensor==0)) {// если  правый датчик видит черный
   Serial.println("Lsensor=1 Rsensor=0");
  }
  }
// Задаем скорость подтормаживающего колеса (от 0 до 255)
 
int V=85;
  if ((Lsensor == 0)&&(Rsensor==1)) {// если левый датчик видит черный
// Основной бесконечный цикл
   Serial.println("Lsensor=0 Rsensor=1");
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);  
  }
  }
  }
if ((Lsensor == 1)&&(Rsensor==1)) {// если  оба датчика видит белый
  Serial.println("Lsensor=1 Rsensor=1");
  }
  }
</code>
delay(100);
}
 
 
</syntaxhighlight>


[[Категория:Видео эпизоды УМКИ]]
[[Категория:Видео эпизоды УМКИ]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 13:13, 22 февраля 2021

//////////////////////////////////////////////
//     2021.02.22 woronin,  umkiedu@gmail.com
//     Датчик линии цифровой сигнал, калибруем показания
//     Robot UMKI controller  K6_3
//     тестируем работу правого и левого датчика линии
//////////////////////////////////////////////
const int sensorR = A1; // Присоедниняем правый датчик к A1
const int sensorL = A0; // Присоедниняем левый датчик к A0
int Rsensor; // Проверяем правый датчик
int Lsensor; // Проверяем левый датчик

void setup()
{
 pinMode( sensorR , INPUT); // конфигурим  порт на вход
 pinMode( sensorL , INPUT);
 Serial.begin(9600);   // Для отладки. Подключаем монитор порта на скорости общения 9600 байт в сек
}

// Основной бесконечный цикл 
void loop()
{
 Rsensor=digitalRead(sensorR); //  считываем значения для правого датчика. 0 - черный; 1 - белый
 Lsensor=digitalRead(sensorL); //  считываем значения для левого датчика. 0 - черный; 1 - белый
 if ((Lsensor == 0)&&(Rsensor==0)) {// если оба датчика видят черный 
  Serial.println("Lsensor=0 Rsensor=0");
 }

 if ((Lsensor == 1)&&(Rsensor==0)) {// если  правый датчик видит черный
  Serial.println("Lsensor=1 Rsensor=0");
 }

 if ((Lsensor == 0)&&(Rsensor==1)) {// если  левый датчик видит черный
  Serial.println("Lsensor=0 Rsensor=1");
 }

 if ((Lsensor == 1)&&(Rsensor==1)) {// если  оба датчика видит белый
  Serial.println("Lsensor=1 Rsensor=1");
 }
 delay(100);
}