0803speeker distant: различия между версиями
		
		
		
		
		
		Перейти к навигации
		Перейти к поиску
		
				
		
		
	
 (Новая страница: «<code>  //////////////////////////////////////////////  //     2019.07.19 woronin,  umkiedu@gmail.com  //     работа с динамиками и датчик…»)  | 
				Evgen (обсуждение | вклад)  Нет описания правки  | 
				||
| Строка 1: | Строка 1: | ||
<  | <syntaxhighlight lang="C++">  | ||
  //////////////////////////////////////////////  |   //////////////////////////////////////////////  | ||
  //     2019.07.19 woronin,  umkiedu@gmail.com  |   //     2019.07.19 woronin,  umkiedu@gmail.com  | ||
| Строка 13: | Строка 13: | ||
  int dinamikPin = 12;// пин пищалки  |   int dinamikPin = 12;// пин пищалки  | ||
  int knopkaPIN = 11; // пин кнопки 0-нажата, 1 отпущена  |   int knopkaPIN = 11; // пин кнопки 0-нажата, 1 отпущена  | ||
void setup()  | |||
{  | |||
   pinMode(knopkaPIN,  INPUT_PULLUP); // инициализируем подтягивающий резистор  |    pinMode(knopkaPIN,  INPUT_PULLUP); // инициализируем подтягивающий резистор  | ||
   pinMode(Trig, OUTPUT); //инициируем как выход  |    pinMode(Trig, OUTPUT); //инициируем как выход  | ||
| Строка 21: | Строка 22: | ||
   pinMode(ledPinG, OUTPUT);  |    pinMode(ledPinG, OUTPUT);  | ||
   pinMode(ledPinB, OUTPUT);  |    pinMode(ledPinB, OUTPUT);  | ||
}  | |||
  unsigned int impulseTime = 0;  |   unsigned int impulseTime = 0;  | ||
  unsigned int distance_sm = 0;  |   unsigned int distance_sm = 0;  | ||
void midi(int zvuk) {  | |||
   tone(dinamikPin, 2 * zvuk, zvuk);  |    tone(dinamikPin, 2 * zvuk, zvuk);  | ||
   delay(zvuk);  |    delay(zvuk);  | ||
   tone(dinamikPin, zvuk, 200);  |    tone(dinamikPin, zvuk, 200);  | ||
   delay(2 * zvuk);  |    delay(2 * zvuk);  | ||
}  | |||
void loop() {  | |||
   digitalWrite(Trig, HIGH);  |    digitalWrite(Trig, HIGH);  | ||
   /* Подаем импульс на вход trig дальномера */  |    /* Подаем импульс на вход trig дальномера */  | ||
| Строка 67: | Строка 71: | ||
   }  |    }  | ||
   delay(100);  |    delay(100);  | ||
}  | |||
</  | |||
</syntaxhighlight>  | |||
[[Категория:Видео эпизоды УМКИ]]  | [[Категория:Видео эпизоды УМКИ]]  | ||
[[Категория:Примеры программирования Arduino]]  | |||
Текущая версия от 14:41, 15 ноября 2019
 //////////////////////////////////////////////
 //     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);
}