This code....See below.... works for the encoder. Values go up and down when turning.
How can I couple the values to the menubutton functions?
#define EncoderPinA 2
#define EncoderPinB 3
#include "pins_arduino.h"
byte portA;
byte portB;
byte bit_maskA;
byte bit_maskB;
volatile byte *registerA;
volatile byte *registerB;
volatile static int numberA;
volatile int* attached_val;
void setup()
{
Serial.begin(9600);
pinMode(EncoderPinA, INPUT);
pinMode(EncoderPinB, INPUT);
digitalWrite(EncoderPinA, HIGH);
digitalWrite(EncoderPinB, HIGH);
portA=digitalPinToPort(EncoderPinA);
portB=digitalPinToPort(EncoderPinB);
bit_maskA = digitalPinToBitMask(EncoderPinA);
bit_maskB = digitalPinToBitMask(EncoderPinB);
registerA = portInputRegister(portA);
registerB = portInputRegister(portB);
attached_val = &numberA;
attachInterrupt(0, doEncoderA, FALLING); // for some reason the new mouser encoders only work on A falling and b rising The other ones don't read fast enough
//and always count the same way
}
void loop()
{
Serial.print("numberA = ");
Serial.println(numberA);
delay(500);
}
void doEncoderA()
{
((((*registerA) & bit_maskA) && ((*registerB) & bit_maskB)) || ((!((*registerA) & bit_maskA)) && (!((*registerB) & bit_maskB))))? (*attached_val)++ :
(*attached_val)--;
}