Взаимосвязь энкодера и пьезодинамика.
- Войдите на сайт для отправки комментариев
Вс, 04/06/2017 - 14:44
Если кто сможешь помочь, то тут при проверки не выдает ошибок, но взаимодействовать не хотят. Тут я хотел, чтобы при повороте энкодера, получалось число. От него должен выводится определённый звук на пьезодинамик.
По отдельности они работают,а вот в связке нет.
#include <iarduino_Encoder_tmr.h> // Подключаем библиотеку iarduino_Encoder_tmr для работы с энкодерами через аппаратный таймер
iarduino_Encoder_tmr enc(5,6); // Объявляем объект enc для работы с энкодером указывая (№ вывода A, № вывода B)
// Если при объявлении объектов перепутать выводы, то поворот влево будет расценен как поворот вправо и наоборот
const int x = 1;
const int y = 50; // При использовании библиотеки iarduino_Encoder_tmr можно подключить до 8 энкодеров.
int i = 0; // Определяем переменную для подсчёта дискретных поворотов энкодера
void setup(){
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
enc.begin(); // Инициируем работу с энкодером
pinMode(3, OUTPUT);
}
void loop(){
delay(100);
int a=enc.read(); // Читаем состояние энкодера в переменную a
if(a){ // Если энкодер зафиксировал поворот, то ...
i=i+a; /* i+=a*/ // Меняем значение переменной i на 1, т.к. в переменной a находится -1 (при повороте влево), или +1 (при повороте вправо).
Serial.println(i);
int i;
if (x > i > y) {
tone(3, 500, 500);
}
}
}
Могу предположить, что аппаратный таймер для работы библиотеки и команды tone один и тот же, потому нет звука.
по моему const int x = 1; ето переменная которая не меняется попробуй просто int
по моему const int x = 1; ето переменная которая не меняется
Так он её и не меняет.