звук
- Войдите на сайт для отправки комментариев
Пт, 02/03/2012 - 19:08
Приветствыю, может кто поможет. Что не так?
Хочу, что бы при нажатии кнопки, пишала 3 раза.
Оно пишит постоянно
#include "inc.h"
void setup() {
// put your setup code here, to run once:
pinMode(BUTTON2, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if
(digitalRead(BUTTON2 == LOW)){
beep();
}
if
(digitalRead(BUTTON2 == HIGH)){
noTone(3);
}
else{
noTone(3); }
}
void beep()
{
tone(3, 128, 50) ;
delay(200);
tone(3, 256, 50) ;
delay(200);
tone(3, 512, 50) ;
delay(200);
noTone(3);
}
А если паузы побольше сделать, скажем delay(2000);
Все равно пищит постоянно?
То же самое, токо паузы подлинней. На нажатие кнопки не реагирует, пищит как загрузишь
Лучше начать с того как ты подключил кнопку.
так ты тон то отключи...
алгоритм такой - включаешь тон ждешь определенное время он пищит, выключешь, ждешь определенное время.... потом по новой
в функции beep()
ой простите не понял суть проблемы.. правильно.. нужно начать с кнопки
так ты тон то отключи...
алгоритм такой - включаешь тон ждешь определенное время он пищит, выключешь, ждешь определенное время.... потом по новой
в функции beep()
Как? он пишит и не реагирует на кнопку. Мне нужно, что бы он попишал 3 раза и заткнулся
попробуй поменять местами 14 и 18 строки кода, если уверен, что правильно кнопку подключил
if (digitalRead(кнопка,HIGH)&&flag==0) { tone(3,128) delay(200); noTone delay(200); tone(3,256) delay(200); noTone delay(200); tone(3,512) delay(200); noTone delay(200); flag=1; }попробуй поменять местами 14 и 18 строки кода, если уверен, что правильно кнопку подключил
Правильно подключил. :(
вот это работает, а моя мазня нет
http://www.arduino.cc/en/Tutorial/Pushbutton
Ты кстати забыл объявить на каком пине у тебя кнока висит
Ты кстати забыл объявить на каком пине у тебя кнока висит
вот , что и где висит
строки местами менял? просто странно, но по программе у тебя получется что пока кнопка отпущена на пинеоткуда-то сигнал...
поменяй строки)
строки местами менял? просто странно, но по программе у тебя получется что пока кнопка отпущена на пинеоткуда-то сигнал...
поменяй строки)
Поменял, и кнопку помянял. И код сверху от nestandart запихнул в beep()
пищит как резанный
Попробуйте без отдельной функции.
Просто в loop.
Пищит как резаный это значит циклично делает три писка разной частоты по очереди ?
Если нажать и держать кнопку произойдет три писка и все.
Если отпустить и снова нажать ситуация повториться.
Не забываем про подтягивающие резисторы.
int flag=0; void setup(){} void loop () { if(digitalRead(13)==HIGH&&flag==0) { tone(3,128); delay(200); noTone(3); delay(200); tone(3,256); delay(200); noTone(3); delay(200); tone(3,512); delay(200); noTone(3); delay(200); flag=1; } if(digitalRead(13)==LOW) { flag=0; } }Нет ему просто плевать на кнопку. На все 3 кнопки
если флаг прописан в функции то да, 3 три писка разной частоты по очереди И по кругу
если глобальаня переменная то 128,256, застревает на последнем и пишит на 512
Ну вот, поменял флаг с булеана на инт заработало :) Спасибо.
в C нотации: "digitalRead(BUTTON2 == LOW)" означает:
1. вычислить значение выражения "BUTTON2 == LOW", оно будет булевым, либо true (1) либо false(0)
2. передать вычисленное булевое значение функции digitalRead. так как оно либо 0 либо 1, то читать будет из 0 или 1 пина