0702 distansmetr RGB
Перейти к навигации
Перейти к поиску
//////////////////////////////////////////////
// 2019.07.18 woronin, umkiedu@gmail.com
// Датчик расстояния ульразвуковой - изучаем оператор else if и else
// Robot UMKI controller K6_3
// При разных расстояниях горит разный цвет RGB диода
//////////////////////////////////////////////
#define Trig A3
#define Echo A4
#define ledPinR A0
#define ledPinG A1
#define ledPinB A2
void setup()
{
pinMode(Trig, OUTPUT); //инициируем как выход
pinMode(Echo, INPUT); //инициируем как вход
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, 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 < 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);
}