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

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
(Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.18 woronin, umkiedu@gmail.com // Датчик расстояния ульразвук…»)
 
Нет описания правки
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
<code>
<syntaxhighlight lang="C++">
  //////////////////////////////////////////////
  //////////////////////////////////////////////
  //    2019.07.18 woronin,  umkiedu@gmail.com
  //    2019.07.18 woronin,  umkiedu@gmail.com
  //    Датчик расстояния ульразвуковой - изучаем оператор else if и else
  //    Датчик расстояния ульразвуковой - изучаем оператор else if и else
  //    Robot UMKI controller  K6_3
  //    Robot UMKI controller  K6_3
  //    При разных расстояниях горит разный цвет RGB диода
  //    При разных расстояниях горит разный цвет RGB диода
  //////////////////////////////////////////////
  //////////////////////////////////////////////
#define Trig A3
int Trig A3
#define Echo A4
int Echo A4
#define ledPinR A0
int ledPinR A0
#define ledPinG A1
int ledPinG A1
#define ledPinB A2
int ledPinB A2
void setup()
 
{
void setup()
{
   pinMode(Trig, OUTPUT); //инициируем как выход
   pinMode(Trig, OUTPUT); //инициируем как выход
   pinMode(Echo, INPUT); //инициируем как вход
   pinMode(Echo, INPUT); //инициируем как вход
Строка 20: Строка 21:
   Serial.begin(9600);
   Serial.begin(9600);
   /* задаем скорость общения. В нашем случае с компьютером */
   /* задаем скорость общения. В нашем случае с компьютером */
}
}
unsigned int impulseTime = 0;
 
unsigned int distance_sm = 0;
  int impulseTime = 0;
void loop()
  int distance_sm = 0;
{
 
void loop()
{
   digitalWrite(Trig, HIGH);
   digitalWrite(Trig, HIGH);
   /* Подаем импульс на вход trig дальномера */
   /* Подаем импульс на вход trig дальномера */
Строка 57: Строка 60:
   }
   }
   delay(100);
   delay(100);
}
}
</code>
 
</syntaxhighlight>


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

Текущая версия от 20:15, 13 января 2023

 //////////////////////////////////////////////
 //     2019.07.18 woronin,  umkiedu@gmail.com
 //     Датчик расстояния ульразвуковой - изучаем оператор else if и else
 //     Robot UMKI controller  K6_3
 //     При разных расстояниях горит разный цвет RGB диода
 //////////////////////////////////////////////
int Trig A3
int Echo A4
int ledPinR A0
int ledPinG A1
int ledPinB A2

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

  int impulseTime = 0;
  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 < 20) // Если расстояние менее 20 сантиметром
  {
    digitalWrite(ledPinR, LOW); // Светодиод горит
    digitalWrite(ledPinG, HIGH); // Светодиод гаснет
    digitalWrite(ledPinB, HIGH); // Светодиод гаснет
  }
  else if (distance_sm > 21 & distance_sm < 50 ) // Если расстояние в диапазоне от 20 до 200 см
  {
    digitalWrite(ledPinR, HIGH); // Светодиод гаснет
    digitalWrite(ledPinG, LOW); // Светодиод горит
    digitalWrite(ledPinB, HIGH); // Светодиод гаснет
  }
  else   if (distance_sm > 51) // Если расстояние больше 200 сантиметром
  {
    digitalWrite(ledPinR, HIGH); // Светодиод гаснет
    digitalWrite(ledPinG, HIGH); // Светодиод гаснет
    digitalWrite(ledPinB, LOW); // Светодиод горит
  }
  else
  {
    digitalWrite(ledPinR, LOW); // иначе не горит
    digitalWrite(ledPinG, LOW); // иначе не горит
    digitalWrite(ledPinB, LOW); // иначе не горит
  }
  delay(100);
}