есть вопрос по команде tone
- Войдите на сайт для отправки комментариев
Чт, 08/12/2016 - 08:01
Здраствуйте, понадобилось управлять командой tone через компьютер, с помощью простенького скетча. Но возникла проблема, не могу задать частоту выше 255 герц, не могли бы помочь советами как это обойти)
int wavepin = 12;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{
wave = Serial.read();
tone(wavepin, wave);
}
}
Вероятно Вы определяете wave как byte. Попробуйте int.
Пробовал и byte и int, результат не изменился, это может быть изза функции Serial.read? Если я правильно понял, она читает один байт из буфера
Вероятно. Используйте Serial.parseInt()
Ну да.
Скетч опубликован в явно неработоспособном виде, поэтому откуда знать, что там еще пропущено.
Попробую, отпишусь, ноута рядом нет, спасибо ответившим)
Всем спасибо, все получилось как нужно))
int wavepin = 12;
void setup() {
Serial.begin(9600);
}
void loop() {
int wave;
if (Serial.available()) {
wave = Serial.parseInt();
tone(wavepin, wave);
}
Serial.write(4);
delay(1000);
}
Еще еще пара вопросов есть, что бы новую тему не создавать)) Как можно заставить ардуину реагировать только на определенные команды с сериал порта? Команды длинные, около 16 байт. Копал в сторону Serial.find но так и не понял как эта команда работает((
А Ардуина всегда реагирует только на определенные команды - только на те, реакцию на которые Вы явно прописали в коде.
PS. Не думаю, что Serial.find здесь поможет. Она, скорее, предназначена для разбора ответа http сервера или чего-то подобного, когда в очень длинной строке нужно найти определенный фрагмент.
Если вы перед вызовом Serial.find() вызываете сначала Serial.parseInt(), то буфер порта отчищается, пока не встретятся цифры. Вы не показали как вы делали, можно только гадать, что там у вас не получается.
есть такие команды, 4 цифры после p4c= и есть нужные мне hex данные, как сделать что бы ардуина реагировала на какую либо из этих команд, преобразовывала hex значение в десятичное и отправляла в скетч выше. Был бы признателен))
Или хотя бы подскажите, в какую сторону копать, как выделить из этих строк hex значения.
Копайте в сторону Serial.readString() и функций для работы со строками.