Показать сообщение отдельно
Старый 14.06.2017, 15:07   #70
mr.kasper_tyt
Junior Member
 
Регистрация: 14.06.2017
Сообщений: 1
Вес репутации: 0
mr.kasper_tyt is an unknown quantity at this point
По умолчанию

Доброго дня форумчане!
Имеется задача одна, не могу никак допилить..
имеется скетч в котором надо заменить стандартную пищалку на секундный звук воспроизводимый, например, раз в десять секунд.
Как это реализовать?


#define Left_SW_Pin 0 // пин переключателя указателя поворота (левый)
#define Right_SW_Pin 1 // пин переключателя указателя поворота (правый)
#define DZ1_Trig_Pin 2 // пин триггера датчика 1 (правый)
#define DZ2_Trig_Pin 4 // пин триггера датчика 2 (левый)
#define LZ_Led_Pin 11 // пин светодиода левой мертвой зоны
#define BUZZ_Pin 12 // пин звукоизлучателя
#define RZ_Led_Pin 13 // пин светодиода правой мертвой зоны
int count_timer = 0;
int j, d;

void setup()
{ // Назначаем выходами пины всех тригеров и светодиодов.
pinMode(DZ1_Trig_Pin, OUTPUT);
pinMode(DZ2_Trig_Pin, OUTPUT);
pinMode(LZ_Led_Pin, OUTPUT);
pinMode(BUZZ_Pin, OUTPUT);
pinMode(RZ_Led_Pin, OUTPUT);
j = 1000;
d = 1000;
}

int distance(int Data) //Возвращает дистанцию с датчика
{
int time_us;
digitalWrite(Data, HIGH); // Подаем сигнал на выход
//микроконтроллера
delayMicroseconds(15); // Удерживаем 10 микросекунд
digitalWrite(Data, LOW); // Затем убираем
time_us=pulseIn(Data+1, HIGH); // Замеряем длину импульса
return time_us/58; // Пересчитываем в сантиметры
}

void loop()
{

digitalWrite(LZ_Led_Pin, LOW); // отключение левого светодиода
digitalWrite(RZ_Led_Pin, LOW); // отключение правого светодиода светодиоды

if (d<100) // проверка — левая сторона
digitalWrite(LZ_Led_Pin, HIGH); //включаем красный светодиод
else //иначе
digitalWrite(LZ_Led_Pin, LOW); //выключаем
if (j<100) // Проверка — правая сторона
digitalWrite(RZ_Led_Pin, HIGH); //включаем красный светодиод
else //иначе
digitalWrite(RZ_Led_Pin, LOW); //выключаем*/

if (!count_timer)
{ // Заставляем пищалку пищать в течение 200 миллисекунд.
// Если это нужно.
if ((digitalRead(Left_SW_Pin)&&d<80) || (digitalRead(Right_SW_Pin)&&j<80))
tone(BUZZ_Pin, 1500, 200); // поиграть с тоном и длительностью
count_timer = 20; //Устанавливаем таймер паузы оповещения
}else
count_timer--;
j= distance (DZ2_Trig_Pin); // Считываем дистанцию с левого
d= distance (DZ1_Trig_Pin); //и правого канала данных
delay (100); // пауза в 0,1 сек перед повтором цикла
}
mr.kasper_tyt вне форума   Ответить с цитированием