0803speeker distant

Материал из УМКИwiki
Версия от 12:14, 12 августа 2019; 195.209.192.5 (обсуждение) (Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.19 woronin, umkiedu@gmail.com // работа с динамиками и датчик…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

//////////////////////////////////////////////
//     2019.07.19 woronin,  umkiedu@gmail.com
//     работа с динамиками и датчиком расстояния
//     Robot UMKI controller  K6_3
//     Писк по расстоянию до препятствия, изучаем подпрограммы и передача переменных в подпрограмму
//////////////////////////////////////////////
#define Trig A3
#define Echo A4
#define ledPinR A0
#define ledPinG A1
#define ledPinB A2
int dinamikPin = 12;// пин пищалки
int knopkaPIN = 11; // пин кнопки 0-нажата, 1 отпущена
void setup()
{
 pinMode(knopkaPIN,  INPUT_PULLUP); // инициализируем подтягивающий резистор
 pinMode(Trig, OUTPUT); //инициируем как выход
 pinMode(Echo, INPUT); //инициируем как вход
 pinMode(ledPinR, OUTPUT);
 pinMode(ledPinG, OUTPUT);
 pinMode(ledPinB, OUTPUT);
}
unsigned int impulseTime = 0;
unsigned int distance_sm = 0;
void midi(int zvuk) {
 tone(dinamikPin, 2 * zvuk, zvuk);
 delay(zvuk);
 tone(dinamikPin, zvuk, 200);
 delay(2 * zvuk);
}
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); // Светодиод гаснет
   midi(500);
 }
 else if (distance_sm > 21 & distance_sm < 50 ) // Если расстояние в диапазоне от 20 до 200 см
 {
   digitalWrite(ledPinR, HIGH); // Светодиод гаснет
   digitalWrite(ledPinG, LOW); // Светодиод горит
   digitalWrite(ledPinB, HIGH); // Светодиод гаснет
   midi(700);
 }
 else   if (distance_sm > 51) // Если расстояние больше 200 сантиметром
 {
   digitalWrite(ledPinR, HIGH); // Светодиод гаснет
   digitalWrite(ledPinG, HIGH); // Светодиод гаснет
   digitalWrite(ledPinB, LOW); // Светодиод горит
   midi(800);
 }
 else
 {
   digitalWrite(ledPinR, LOW); // иначе не горит
   digitalWrite(ledPinG, LOW); // иначе не горит
   digitalWrite(ledPinB, LOW); // иначе не горит
    midi(300);
 }
 delay(100);
}