Пьезодинамик и потенциометр.

omglife
Offline
Зарегистрирован: 31.12.2015

Частота звучания пьездодинамика варьируется от 500Гц до 2000Гц. Хочу сделать так, чтобы она линейно зависила от напряжения на выходе потенциометра. Типо если напряжение 0 то 500Гц, дальше крутишь оно все прибавляется и когда доходит до 5В(макс. значение) становится 2000Гц.

Никак не могу придумать, как это все реализовать программно. Сделал обычный писк 500Гц. А как сделать, чтобы он наростал при повороте потенциометра.

 

int potPin = A2;
int ledPin = 13;
int val = 0;

int soundPin = 13;
long time;
int rate = 5000;
void sound(int duration)
{
time = millis();
while(millis() - time < duration) {
digitalWrite(soundPin, HIGH);
delayMicroseconds(rate);
digitalWrite(soundPin, LOW);
delayMicroseconds(rate);
}
}
void setup() {
pinMode(13, OUTPUT);
pinMode(ledPin, OUTPUT);

}

void loop() {

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000); 

}

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

http://arduino.ru/Reference/Map

http://arduino.ru/Reference/Tone

tone(soundPin, map(analogRead(A0), 0,1024, 500, 2000));
delay(50);

суть программы: читаем аналоговый пин он от 0 до 1024, преобразуем в значения от 500 до 2000, устанавливаем это как частоту на пине.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Используй analogRead() и tone()

omglife
Offline
Зарегистрирован: 31.12.2015

Получается лишние переменные можно убрать? Так?

Получается так?

int potPin = A2;
int val = 0;
int soundPin = 13;

void setup() {
pinMode(soundPin, OUTPUT);

}

void loop() {

tone(soundPin, map(analogRead(A2), 0,1024, 500, 2000));
delay(50);

}

А функция void sound(int duration) нужна или её можно тоже убрать?

 

omglife
Offline
Зарегистрирован: 31.12.2015

И подойдет ли для моей пищалки команда tone()?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Да лишнее лучше убрать. Пьезо подойдет. Отличия команды tone от вашего кода в том что она использует прерывания для своей работы.

omglife
Offline
Зарегистрирован: 31.12.2015

А если я загружу этот код в ардуино и установлю значение потенциометра 0В. Динамик будет сразу пищать?

int potPin = A2;
int val = 0;
int soundPin = 13;

void setup() {
pinMode(soundPin, OUTPUT);

}

void loop() {

tone(soundPin, map(analogRead(A2), 0,1024, 500, 2000));
delay(50);

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

omglife пишет:

А если я загружу этот код в ардуино и установлю значение потенциометра 0В. Динамик будет сразу пищать?

1. Загрузите.
2. Расскажите нам, что получилось.

foYal
Offline
Зарегистрирован: 06.10.2020

помогите с кодом. Мне нужно что бы загорание красного светодиода звучал один звук, а при загорании зеленого светодиода звучал другой звук. цвета и звук я регулирую потенциометром. 

int pot=A5;  
int contact; 
int led2=12; 
int led1=13; 
int led3=11; 
int led4=10; 
int led5=9;  
int led6=8;  
int buzz;
 
void setup()
{
  Serial.begin(9600); 
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(soundPin, OUTPUT);
 
}
 
void loop()
{
  contact=analogRead(A5); 
  Serial.println(contact); 
   delay(400);
  if(contact==0) 
  {
    digitalWrite(13, 0);
    digitalWrite(12, 0);
  }
  else if(contact>0&&contact<=340) 
  {   
    digitalWrite(13, HIGH);
   digitalWrite(12, HIGH);
   digitalWrite(11, 0); 
   digitalWrite(10, 0); 
  }
 
    else if(contact>=341&&contact<=682)    
    {
      digitalWrite(11, HIGH);
      digitalWrite(10, HIGH);
      digitalWrite(9, 0);
      digitalWrite(8, 0);
    }
    else if(contact>=683)
    {    
    digitalWrite(9, HIGH);
    digitalWrite(8, HIGH);
    } 
  }
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

звука в скетче не увидел

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

звука в скетче не увидел

Так вот, и добавьте! Вам же сказано

foYal пишет:

Мне нужно 

Работайте!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

звука в скетче не увидел

Так вот, и добавьте! Вам же сказано

foYal пишет:

Мне нужно 

Работайте!

Разрешите бегом?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

Разрешите бегом?

Разрешаю, но только с соблюдением социальной дистанции и в наморднике :-)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

Разрешите бегом?

Разрешаю, но только с соблюдением социальной дистанции и в наморднике :-)

блокирующий код можно? или Вы всё же настаиваете на неблокирующем ...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:
или Вы всё же настаиваете на неблокирующем ...
Не, я настаиваю только на скорлупе от грецких орехов и на воткнутых под кожуру апельсина зёрнах кофе (кстати, последнее очень рекомендую попробовать, могу написать подробности).

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:
или Вы всё же настаиваете на неблокирующем ...
Не, я настаиваю только на скорлупе от грецких орехов и на воткнутых под кожуру апельсина зёрнах кофе (кстати, последнее очень рекомендую попробовать, могу написать подробности).

у меня закатано 3 литра настойки чёрного ореха, только добавлять её можно по каплям...

а вот про кофе под скорлупкой даже не слышал, озвучьте пожалуйста )))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

Не, я настаиваю только на скорлупе от грецких орехов и на воткнутых под кожуру апельсина зёрнах кофе (кстати, последнее очень рекомендую попробовать, могу написать подробности).

1. не скорлупе, а перепонках, наверное?

2. Очень интересно! Расскажи, плз. Прям вкусно звучит!

3. Я тут попробовал простой аптечный зверобой настоять. Очень неплохо. Для тез, кто подобные вкусы любит. Вот прям в аптеке зеленую пачку купил и несколько ложек в литр 45% сортировки положил.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Про кофе. Рецепт в разных вариациях гуляет по сети под названием "Ликёр 44". Вариации сильно разные, я рассказываю как я делаю.

Берётся небольших размеров целый апельсин. Кожура аккуратно прокалывается (любым ножом) в 44 местах равномерно по всей поверхности, и под кожуру в эти проколы запихивается 44 зерна кофе Арабика. Лишнего колоть не надо - только чтобы зерно запихать. Это хозяйство заливается литром водки, добавляется 44 чайных ложки сахара, закрывается и настаивается при комнатной температуре 44 дня. После этого апельсин выбрасывается, напиток фильтруется через марлю и можно пить. Лучше не сильно охлаждённым, чтобы аромат распространялся лучше (для этого же коньяк в руке греют).

Главная ошибка (делать которую рекомендуют в сети, кстати) - это попытаться отжать апельсин, чтобы добро не пропадало - в настойку попадает какая-то муть, которую потом хрен отфильтруешь.

Иногда советуют заливать не литром, а 0,5 литра водки, чтобы вкус и аромат усилить. Пробовал - слишком усиливается - через край. Так при литре настойка имеет некий летучий букет, а с полулитром - очень резко всё. По мне так с литром лучше.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

wdrakula пишет:

3. Я тут попробовал простой аптечный зверобой настоять. Очень неплохо. Для тез, кто подобные вкусы любит. Вот прям в аптеке зеленую пачку купил и несколько ложек в литр 45% сортировки положил.

Зверобой очень интересен когда не пересушен, утром сорвал, до вечера в тенёчке подсушил и в дело, можно и чай заварить на нём, самая сила

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Gromarsen пишет:

Прошу помощи

Зберіть схему, яка міститиме в собі потенціометр, кнопку та п’єзо динамік. Повертаючи потенціометр міняйте частоту звучання динаміка, але динамік звучить тільки тоді, коли натиснута кнопка.

Или пиши по-русски, или иди на arduino.ua