ардуино мега про мини

fsdb
Offline
Зарегистрирован: 24.10.2015

Добрый день.

Использую Arduino pro mega

использую команду   переменную long motor; tone(9,motor);

когда нажимаю кнопочку , то мотор почему то начинает крутится довольно быстро, хотя начальное значение переменной 0. что бы убедится что проблема в этом участке кода - я попробовал закоментировать команду tone и теперь при нажатии мотор уже не вращается. так же в сериал я вывел значение переменной motor И оно равно 0. в тоже время я залил в скетч просто  tone(9,0);  и мотор не крутился. если скорость текущая становится отличная от 0. например 1 то скорость вращения соотвествует 1 герцу. как вновь нажимаю эту кнопку- меньше- на экранчике у меня 1 меняется на 0 но при этом двигатель вращается где то в районе 40кгц (осцилографа нет)
как вообще к этой задаче подступится не пойму. посоветуйте как выявить ошибку. может быть скажите какую библиотеку которая генерирует на 9 пине?




//МЕНЬШЕ Скорость мотора протяжки
if (btn_up_tim+100<millis()) {

if (digitalRead(24)==1)  {
btn_up_tim=millis();
  k1=0.01;

if (Eflag==1) {Mspeed=Eoutput;  tone(9,Mspeed); Eoutput=0; Eflag=0; disp_refresh=true;} else
{Mspeed=Mspeed-k2;}

if (Mspeed<0) {Mspeed=0;} 


tft.setTextColor(TFT_YELLOW); 
tft.fillRect(57,0,60,15,TFT_GREY);      
tft.setCursor(57, 0);
tft.setTextSize(2);   
tft.setTextColor(TFT_YELLOW);  
tft.println(String(Mspeed));


tone(9,Mspeed);  
k2=k2*1.2;

if (k2>1500) {k2=1500;}
} else {k2=1;}
}
//МЕНЬШЕ Скорость мотора протяжки

 

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

У tone не бывает 1 Герц. Что-то Вы напутали.

fsdb
Offline
Зарегистрирован: 24.10.2015

http://arduino.ru/Reference/Tone

а какая бывает? я о таком не слышал. я ему на вход подавал Mspeed=1; и вроде бы он крутил мотор. там микрошаг большой я не обратил внимание. видимое вращение уже при значении 100. посоветуйте пожалуйста с чего начать искать ошибку. может быть есть сторонняя библиотека - аналогичная tone, я эти таймеры не могу осилить сам никак.  я пока даже не знаю что проверить еще что бы исправить эту ошибку.

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

tone не выдаёт частоту меньше 31Гц. А уж что и куда Вы там подавали - это Вам виднее.

fsdb
Offline
Зарегистрирован: 24.10.2015

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

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

для таких маленьких частот никакие библиотеки не нужны.

Например, чтобы получить частоту 1 Гц, все что нужно - подать на пин HIGH на полсекунды  а потом LOW на столько же

fsdb
Offline
Зарегистрирован: 24.10.2015

я бы хотел от 0 до 45000 генерировать. когда я использовал tone то при превышении этого числа у меня ардуина мега начинала *подвисать* - как то медленно обновлять цифры на дисплее.  может у кого есть наработка на любом другом пине с таймером
или помогите разобраться в использовании этой библиотеке https://alexgyver.ru/gyvertimers/

я не понимаю какая связь между каналами и 9 и 10 пинами в таблицами. почему 2 пина. и куда подключать провод в итоге. один земял а второй к какому пину - 9 или 10. не понятно

CHANNEL_A 10 PB4
CHANNEL_B 9 PH6

 

 

 

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

fsdb пишет:

или помогите разобраться в использовании этой библиотеке https://alexgyver.ru/gyvertimers/

С нею Вам здесь помогут - https://community.alexgyver.ru/