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

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
(Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.18 woronin, umkiedu@gmail.com // Датчик расстояния ульразвук…»)
 
Нет описания правки
Строка 1: Строка 1:
<code>
<syntaxhighlight lang="C++">
  //////////////////////////////////////////////
  //////////////////////////////////////////////
  //    2019.07.18 woronin,  umkiedu@gmail.com
  //    2019.07.18 woronin,  umkiedu@gmail.com
Строка 9: Строка 9:
  #define Echo A4
  #define Echo A4
  #define ledPin A0
  #define ledPin A0
void setup()  
 
{   
void setup()  
{   
   pinMode(Trig, OUTPUT); //инициируем как выход  
   pinMode(Trig, OUTPUT); //инициируем как выход  
   pinMode(Echo, INPUT); //инициируем как вход  
   pinMode(Echo, INPUT); //инициируем как вход  
Строка 16: Строка 17:
   Serial.begin(9600);  
   Serial.begin(9600);  
   /* задаем скорость общения. В нашем случае с компьютером */
   /* задаем скорость общения. В нашем случае с компьютером */
}  
}  
 
  unsigned int impulseTime=0;  
  unsigned int impulseTime=0;  
  unsigned int distance_sm=0;  
  unsigned int distance_sm=0;  
void loop()  
 
{   
void loop()  
{   
   digitalWrite(Trig, HIGH);  
   digitalWrite(Trig, HIGH);  
   /* Подаем импульс на вход trig дальномера */
   /* Подаем импульс на вход trig дальномера */
Строка 40: Строка 43:
   Это время называется периодом цикла (cycle period).  
   Это время называется периодом цикла (cycle period).  
   Рекомендованный период между импульсами должен быть не менее 50 мс.  */
   Рекомендованный период между импульсами должен быть не менее 50 мс.  */
}
}
</code>
 
</syntaxhighlight>


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

Версия от 14:13, 15 ноября 2019

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

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

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

void loop() 
{  
  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) // Если расстояние менее 30 сантиметром 
  {     
    digitalWrite(ledPin, HIGH); // Светодиод горит 
  }  
  else 
  {   
    digitalWrite(ledPin, LOW); // иначе не горит 
  }   
  delay(100); 
  /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. 
   Это время называется периодом цикла (cycle period). 
   Рекомендованный период между импульсами должен быть не менее 50 мс.  */
}