Парктроник для незрячих

HelpMAN
Offline
Зарегистрирован: 23.01.2020

Доброго времени суток, я новенький в программировании. История такова. У моего друга бабуля слепая. Друг подал идею сделать типа парктронрика на двойные кастыли(Не знаю как они по другому называются).

модули. Ардуино уно, дальномер, пьезопищалка.

работать должно так.  Например:

если растояние <= 50cm сигналить 1 раз.

если растояние <= 40cm сигналить 2 раза.

если растояние <= 30cm сигналить 3 раза.

если растояние <= 20cm сигналить 4 раз.

если растояние <= 10cm сигналить 5 раз.

 

#define trigPin 12    //Обьявление
#define echoPin 13 //переменных
#define buzzer 11

int sound = 500;
 
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT); //Настройка
pinMode(echoPin, INPUT);  //Портов
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(buzzer, OUTPUT);


}
void loop() {
  
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);          //Чтобы начать измерения
  delayMicroseconds(10);                //необходимо на вход trigPin подать высокий сигнал 5В на 10мкс
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);    //с выхода echoPin считывается как долго был открыт порт
  distance = (duration/2) / 50.1;       //преобразования полученного параметра в дистанцию
  Serial.print(distance);
  if(distance <= 50){
    sound = 100;
  }
   if(distance <= 40){
    sound = 200;
  }
     if(distance <= 30){
    sound = 300;
  }
     if(distance <= 20){
    sound = 400;
  }
     if(distance <= 10){
    sound = 500;
  }
    if(distance <= 5){
    sound = 600;
  }




  if (distance > 50 || distance <=0){
    Serial.println("***");
    noTone(buzzer);
   }
   else {
    Serial.print(distance);             //Выводит расстояние в сантиметрах
    Serial.println(" cm");              //в мониторе последовательного порта
    tone(buzzer, sound);                 //задает соответствующий тон динамика
   }
   delay(500);
}

 

 

 

HelpMAN
Offline
Зарегистрирован: 23.01.2020

Этот скетч на увеличение громкости. он не подходит

rkit
Offline
Зарегистрирован: 23.11.2016

Пожалей бабулю. Не нужна ей эта хрень.

HelpMAN
Offline
Зарегистрирован: 23.01.2020

rkit пишет:

Пожалей бабулю. Не нужна ей эта хрень.

Огромное спасибо. не ожидал такой помощи!!! 

Народ ещё одно пожелание. нужно чтобы когда костыли стоят на месте и не двигаются звучание пропадало.

 

b707
Offline
Зарегистрирован: 26.05.2017

HelpMAN пишет:

Этот скетч на увеличение громкости. он не подходит

этот скетч на изменение тона (частоты) а не на громкость. И, кстати, изменение тона будет лучше восприниматься, чем твоя задумка насчет многократных пи-пи.

и заодно, при изменении тональности отпадает проблема с неподвижными костылями

так что не трогай код, бери так. Все равно ты лучше не напишешь

Kakmyc
Онлайн
Зарегистрирован: 15.01.2018

Не может он "так оставить".
Ему зачет не поставят.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А чего сложного? Вместо 61 строки пишете подпрограмму для выполнения функции "пищания заданное количество раз". Примеров мигания светодиодами даже на этом форуме завались - а тут практически тоже самое, только мигаем бузером.



for (i=0;i<n;i++){
tone(buzzer, 300);
delay(50);
noTone(buzzer);
}

HelpMAN
Offline
Зарегистрирован: 23.01.2020

mykaida пишет:

А чего сложного? Вместо 61 строки пишете подпрограмму для выполнения функции "пищания заданное количество раз". Примеров мигания светодиодами даже на этом форуме завались - а тут практически тоже самое, только мигаем бузером.



for (i=0;i<n;i++){
tone(buzzer, 300);
delay(50);
noTone(buzzer);
}

А можно по подробнее. Не понимаю как это сделать.

Можно в студию функцию?

b707
Offline
Зарегистрирован: 26.05.2017

HelpMAN пишет:

А можно по подробнее. Не понимаю как это сделать.

Можно в студию функцию?

а это вам выше - не функция? Если уже и код готовый дали - а все не въезжаете, значит рано еще, сначала учиться надо

HelpMAN
Offline
Зарегистрирован: 23.01.2020

for (i=0;i<n;i++){      //Цикл фор повторяет энное количество раз

tone(buzzer, 300); //функция tone(Динамик, 300 мс)

delay(50);              // ждём 50 мс

noTone(buzzer); выключить пищалку

}

 

Этот цикл я понимаю полностью это же детские основы. Как написать полностью??? И причём тут рано??? Я пришёл сюда за помощью.

b707
Offline
Зарегистрирован: 26.05.2017

HelpMAN пишет:
Этот цикл я понимаю полностью это же детские основы. Как написать полностью???

этот цикл исключительно пример, в реальную программу он все равно не годится, иначе ваш парктроник будет тормозить по секунде, за которую бабушка давно в стенку въедет

HelpMAN
Offline
Зарегистрирован: 23.01.2020

Ну так че скетч будет? Или вас умолять надо? :) хотябы обьяснили как надо.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Тебе кто-то чем-то обязан? 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Здесь помогают тем, кто делает сам, направление тебе дали - дерзай. 

Не хочешь сам, заказывай за деньги в "Ищу исполнителя"

HelpMAN
Offline
Зарегистрирован: 23.01.2020

DetSimen пишет:

Тебе кто-то чем-то обязан? 

Понятно что никто нечем никому не обязан. Я то не требую, а всего лишь прошу помочь. Пока ни одного нормального ответа по делу, пока только один выпендреж.

 

Я нигде не учусь я не студент. Просто хочу понять как это правино написать. Я начинаю вроде писать код и тут раз стопор. Чего-то не понял а дальше как не знаю. Выкладывать  скеч стыдно. Такие дела.

HelpMAN
Offline
Зарегистрирован: 23.01.2020

Если будет скеч я 90% что пойму его. Если надо прокоментирую каждую строку. Просто не знаю как правильно написать синтаксис чтоли.

SLKH
Offline
Зарегистрирован: 17.08.2015

HelpMAN пишет:

Если будет скеч я 90% что пойму его. Если надо прокоментирую каждую строку. Просто не знаю как правильно написать синтаксис чтоли.

для начала собери устройство, послушай. Изменение тона, имхо, лучше задуманной тобой морзянки (#4).

потом доработаешь:

- увеличишь все частоты (дело вкуса и характеристик пищалки)

- вставишь паузу после включения пищалки. Сейчас у тебя постоянный свист; прерывистый, пожалуй, лучше.

- добавишь одну переменную и одну команду для отключения звука при неподвижных ходунках.

 

b707
Offline
Зарегистрирован: 26.05.2017

HelpMAN пишет:

Если будет скеч я 90% что пойму его.

90% что готового кода тут не будет. Никто не станет писать за тебя.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

HelpMAN пишет:
И причём тут рано??? Я пришёл сюда за помощью.

При том и рано, что Вы пока на сегодняшнем Вашем уровне не способны принять помощь. Чтобы научиться принимать помощь, Вам еще нужно учиться. Иначе - никак.

Вопрос только в том, хотите ли Вы учиться для того, чтобы сначала суметь принимать помощь, а потом, постепенно, суметь что-то сделать и без посторонней помощи. Или Вам нужно всего и сразу, причем, без каких-либо усилий с Вашей стороны (типа: я ведь попросил, чего же вам еще нужно!).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

HelpMAN пишет:

Просто не знаю как правильно написать синтаксис чтоли.

Начни хотя бы с ЭТОЙ книжки, там есть про синтаксис.