0701 distansmetr: различия между версиями

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
<syntaxhighlight lang="C++">
<syntaxhighlight lang="C++">
  //////////////////////////////////////////////
  //////////////////////////////////////////////
  //    2019.07.18 woronin,  umkiedu@gmail.com
  //    2023.01.11 woronin,  umkiedu@gmail.com
  //    Датчик расстояния ульразвуковой - без библиотек pulseIn()
  //    Датчик расстояния ульразвуковой - без библиотек pulseIn()
  //    Robot UMKI controller  K6_3
  //    Robot UMKI controller  K6_3
  //    Замер расстояния от датчика до препятствия, вывод в Сериал порт
  //    Замер расстояния от датчика до препятствия, вывод в Сериал порт
  //////////////////////////////////////////////
  //////////////////////////////////////////////
#define Trig A3
int Trig A3
#define Echo A4
int Echo A4
#define ledPin A0
int ledPin 13


void setup()  
void setup()  
Строка 15: Строка 15:
   pinMode(Echo, INPUT); //инициируем как вход  
   pinMode(Echo, INPUT); //инициируем как вход  
   pinMode(ledPin, OUTPUT);  
   pinMode(ledPin, OUTPUT);  
   Serial.begin(9600);  
   Serial.begin(9600); // инициируем и задаем скорость общения c Монитором порта
  /* задаем скорость общения. В нашем случае с компьютером */
}  
}  


unsigned int impulseTime=0;  
int impulseTime=0;  
unsigned int distance_sm=0;  
int distance_sm=0;  


void loop()  
void loop()  
{   
{   
   digitalWrite(Trig, HIGH);  
   digitalWrite(Trig, HIGH);  
   /* Подаем импульс на вход trig дальномера */
   delayMicroseconds(10); //Подаем импульс на вход trig дальномера равный 10 микросекундам  
  delayMicroseconds(10); // равный 10 микросекундам  
   digitalWrite(Trig, LOW); // Отключаем  
   digitalWrite(Trig, LOW); // Отключаем  
   impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса  
   impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса  
   distance_sm=impulseTime/58; // Пересчитываем в сантиметры  
   distance_sm=impulseTime/58; // Пересчитываем в сантиметры  
   Serial.println(distance_sm); // Выводим на порт
   Serial.println(distance_sm); // Выводим сообщение в монитор порта
   if (distance_sm<30) // Если расстояние менее 30 сантиметром  
   if (distance_sm<30) // Если расстояние менее 30 сантиметром  
   {     
   {     
Строка 40: Строка 38:
   }   
   }   
   delay(100);  
   delay(100);  
  /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего.
  }
  Это время называется периодом цикла (cycle period).
  Рекомендованный период между импульсами должен быть не менее 50 мс. */
}


</syntaxhighlight>
</syntaxhighlight>

Версия от 21:43, 10 января 2023

 //////////////////////////////////////////////
 //     2023.01.11 woronin,  umkiedu@gmail.com
 //     Датчик расстояния ульразвуковой - без библиотек pulseIn()
 //     Robot UMKI controller  K6_3
 //     Замер расстояния от датчика до препятствия, вывод в Сериал порт
 //////////////////////////////////////////////
int Trig A3
int Echo A4
int ledPin 13

void setup() 
{  
  pinMode(Trig, OUTPUT); //инициируем как выход 
  pinMode(Echo, INPUT); //инициируем как вход 
  pinMode(ledPin, OUTPUT); 
  Serial.begin(9600); // инициируем и задаем скорость общения c Монитором порта
} 

int impulseTime=0; 
int distance_sm=0; 

void loop() 
{  
  digitalWrite(Trig, HIGH); 
  delayMicroseconds(10); //Подаем импульс на вход trig дальномера равный 10 микросекундам 
  digitalWrite(Trig, LOW); // Отключаем 
  impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса 
  distance_sm=impulseTime/58; // Пересчитываем в сантиметры 
  Serial.println(distance_sm); // Выводим сообщение в монитор порта
  if (distance_sm<30) // Если расстояние менее 30 сантиметром 
  {     
    digitalWrite(ledPin, HIGH); // Светодиод горит 
  }  
  else 
  {   
    digitalWrite(ledPin, LOW); // иначе не горит 
  }   
  delay(100); 
 }