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);   
  }
 }
}