1401 distant ezda: различия между версиями
		
		
		
		
		
		Перейти к навигации
		Перейти к поиску
		
				
		
		
	
 (Новая страница: «<code>  //////////////////////////////////////////////  //     2019.07.16 woronin,  umkiedu@gmail.com  //     Проезд по датчику ультразву…»)  | 
				Evgen (обсуждение | вклад)  Нет описания правки  | 
				||
| Строка 1: | Строка 1: | ||
<  | <syntaxhighlight lang="C++">  | ||
  //////////////////////////////////////////////  |   //////////////////////////////////////////////  | ||
  //     2019.07.16 woronin,  umkiedu@gmail.com  |   //     2019.07.16 woronin,  umkiedu@gmail.com  | ||
  //     Проезд по датчику   |   //     Проезд по датчику ультразвука вдоль стены  | ||
  //     Robot UMKI controller  K6_3  |   //     Robot UMKI controller  K6_3  | ||
  //     самостоятельно сделать реакцию на препятствие  |   //     самостоятельно сделать реакцию на препятствие  | ||
| Строка 11: | Строка 11: | ||
  int motorL1=4; //контакт 4 определяет напр вращ левого мотора  |   int motorL1=4; //контакт 4 определяет напр вращ левого мотора  | ||
  int mL_PWM=3; // контакт 3 определяет скорость вращения лев мотора от 0 до 255  |   int mL_PWM=3; // контакт 3 определяет скорость вращения лев мотора от 0 до 255  | ||
  int mR_PWM=5; //   |   int mR_PWM=5; // контакт 5 - прав мотор  | ||
void setup() {  | |||
  pinMode(Trig, OUTPUT); //инициируем как выход    |   pinMode(Trig, OUTPUT); //инициируем как выход    | ||
  pinMode(Echo, INPUT); //инициируем как вход    |   pinMode(Echo, INPUT); //инициируем как вход    | ||
| Строка 22: | Строка 23: | ||
  pinMode(motorL1, OUTPUT);  |   pinMode(motorL1, OUTPUT);  | ||
  delay(2000);    |   delay(2000);    | ||
}  | |||
  unsigned int impulseTime=0;    |   unsigned int impulseTime=0;    | ||
  unsigned int distance_sm=0;  |   unsigned int distance_sm=0;  | ||
void loop() {  | |||
  digitalWrite(motorR1, HIGH);  |   digitalWrite(motorR1, HIGH);  | ||
  analogWrite(mR_PWM,200); //ШИМ =0 мотор стоит  |   analogWrite(mR_PWM,200); //ШИМ =0 мотор стоит  | ||
| Строка 40: | Строка 43: | ||
  if (distance_sm<30) // Если расстояние менее 20 сантиметром    |   if (distance_sm<30) // Если расстояние менее 20 сантиметром    | ||
  {    |   {    | ||
   digitalWrite(motorR1,HIGH); //правый газ левый стоп, поворот налево  | |||
   analogWrite(mR_PWM, 70);    | |||
   digitalWrite(motorL1, HIGH);  | |||
   analogWrite(mL_PWM,200);  | |||
   delay(500);  | |||
  }    |   }    | ||
  else if (distance_sm>40)  |   else if (distance_sm>40)  | ||
  {  |   {  | ||
   digitalWrite(motorR1,HIGH); // правый стоп, левый газ, поворот направо  | |||
   analogWrite(mR_PWM, 200);    | |||
   digitalWrite(motorL1, HIGH);  | |||
   analogWrite(mL_PWM,70);  | |||
   delay(500);  | |||
  }  |   }  | ||
  else  |   else  | ||
  {  |   {  | ||
   digitalWrite(motorR1,HIGH); //прямо  | |||
   analogWrite(mR_PWM, 250);    | |||
   digitalWrite(motorL1, HIGH);  | |||
   analogWrite(mL_PWM,250);  | |||
   delay(500);    | |||
  }  |   }  | ||
  delay(100);  |   delay(100);  | ||
}  | |||
</  | |||
</syntaxhighlight>  | |||
[[Категория:Видео эпизоды УМКИ]]  | [[Категория:Видео эпизоды УМКИ]]  | ||
[[Категория:Примеры программирования Arduino]]  | |||
Текущая версия от 14:03, 15 ноября 2019
 //////////////////////////////////////////////
 //     2019.07.16 woronin,  umkiedu@gmail.com
 //     Проезд по датчику ультразвука вдоль стены
 //     Robot UMKI controller  K6_3
 //     самостоятельно сделать реакцию на препятствие
 //////////////////////////////////////////////
 #define Trig A3 // трегер-излучатель на контакте А3 
 #define Echo A4 // приемниик на А4
 int motorR1=2; //контакт 2 определяет напр вращения правого мотора
 int motorL1=4; //контакт 4 определяет напр вращ левого мотора
 int mL_PWM=3; // контакт 3 определяет скорость вращения лев мотора от 0 до 255
 int mR_PWM=5; // контакт 5 - прав мотор
void setup() {
 pinMode(Trig, OUTPUT); //инициируем как выход 
 pinMode(Echo, INPUT); //инициируем как вход 
 Serial.begin(9600); // задаем скорость общения.
 // задаем параметры работы моторов L & R
 pinMode(mL_PWM, OUTPUT);
 pinMode(mL_PWM, OUTPUT);
 pinMode(motorR1, OUTPUT);
 pinMode(motorL1, OUTPUT);
 delay(2000); 
}
 unsigned int impulseTime=0; 
 unsigned int distance_sm=0;
void loop() {
 digitalWrite(motorR1, HIGH);
 analogWrite(mR_PWM,200); //ШИМ =0 мотор стоит
 digitalWrite(motorL1, HIGH);
 analogWrite(mL_PWM, 200);
 delay(500);
 digitalWrite(Trig, HIGH); 
 /* Подаем импульс на вход trig дальномера */
 delayMicroseconds(10); // равный 10 микросекундам 
 digitalWrite(Trig, LOW); // Отключаем 
 impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса 
 distance_sm=impulseTime/58; // Пересчитываем в сантиметры 
 Serial.println(distance_sm); // Выводим на порт 
 if (distance_sm<30) // Если расстояние менее 20 сантиметром 
 { 
   digitalWrite(motorR1,HIGH); //правый газ левый стоп, поворот налево
   analogWrite(mR_PWM, 70); 
   digitalWrite(motorL1, HIGH);
   analogWrite(mL_PWM,200);
   delay(500);
 } 
 else if (distance_sm>40)
 {
   digitalWrite(motorR1,HIGH); // правый стоп, левый газ, поворот направо
   analogWrite(mR_PWM, 200); 
   digitalWrite(motorL1, HIGH);
   analogWrite(mL_PWM,70);
   delay(500);
 }
 else
 {
   digitalWrite(motorR1,HIGH); //прямо
   analogWrite(mR_PWM, 250); 
   digitalWrite(motorL1, HIGH);
   analogWrite(mL_PWM,250);
   delay(500); 
 }
 delay(100);
}