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);
}