volatile unsigned int temp, counter = 0 ; // Эта переменная будет увеличиваться или уменьшаться в зависимости от вращения датчика
void setup () {
Последовательный. начало ( 9600 );
pinMode ( 2 , INPUT_PULLUP); // внутренний входной вывод 2
pinMode ( 3 , INPUT_PULLUP); // внутренний เป็น подтягивающий входной контакт 3
// Настройка прерывания
// Нарастающий импульс от кодируемого активируется ai0 (). AttachInterrupt 0 - это DigitalPin номер 2 на Arduino.
attachInterrupt ( 0 , ai0, RISING);
// B восходящий импульс от кодируемого активированного ai1 (). AttachInterrupt 1 - это DigitalPin № 3 на Arduino.
attachInterrupt ( 1 , ai1, RISING);
}
void loop () {
// Отправляем значение счетчика
if (counter! = temp) {
Последовательный. println (счетчик);
темп = счетчик;
}
}
void ai0 () {
// ai0 активируется, если DigitalPin nr 2 переходит с LOW на HIGH
// Проверьте вывод 3, чтобы определить направление
if ( digitalRead ( 3 ) == LOW) {
Счетчик ++;
} еще {
counter--;
}
}
void ai1 () {
// ai0 активируется, если DigitalPin nr 3 переходит с LOW на HIGH
// Проверка с контактом 2, чтобы определить направление
if ( digitalRead ( 2 ) == LOW) {
counter--;
} еще {
Счетчик ++;
}
}
При вращении в одну сторону энкодер выдает понятные числа 1 2 3 ..., а в другую при прохождении "0" начинает с 65535, 65534, 65533...
Почему так, как исправить?
Извините, я не программист... я пробовал int менять на long
Подскажите пожалуйста что нужно изменить, дописать чтобы при вращении энкодера появились отрицательные значения(...-3,-2,-1,0,1,2,3...).
Извините, я не программист... я пробовал int менять на long
Подскажите пожалуйста что нужно изменить, дописать чтобы при вращении энкодера появились отрицательные значения(...-3,-2,-1,0,1,2,3...).
Код вставьте правильно.
В дезоксирибонуклеиновой кислоте. И немножко в гугол транслаторе.
Иван83 - вы офигели? - зачем вы команды языка перевли на русский?
))))))))
Это автоматом переводчик перевел!
Спасибо!
При вращении в одну сторону энкодер выдает понятные числа 1 2 3 ..., а в другую при прохождении "0" начинает с 65535, 65534, 65533...
Почему так, как исправить?
Потому что тип int безнаковый?
Извините, я не программист... я пробовал int менять на long
Подскажите пожалуйста что нужно изменить, дописать чтобы при вращении энкодера появились отрицательные значения(...-3,-2,-1,0,1,2,3...).
Извините, я не программист... я пробовал int менять на long
Подскажите пожалуйста что нужно изменить, дописать чтобы при вращении энкодера появились отрицательные значения(...-3,-2,-1,0,1,2,3...).
Убрать unsigned