Hej
Jeg prøver at få en rotary encoder til at virke som "bank selector" for en gruppe trykknapper. Encoder delen virker, jeg får et brugbart tal ud "number".
Jeg vil så indsætte "number" i forskellige if statements (for trykknap) som så bestemmer handlingen for trykknappen.
Men det virker bare ikke.
Er der nogen der kan se hvor det går galt???????
(har selv en formodning om det er "number" der ikke bliver "husket"...)
Vh
LYDFANGER
volatile int number = 0; //encoder
int oldnumber = number;
volatile boolean halfleft = false;
volatile boolean halfright = false;
int kon=8; //Kontakt
int currState1;
int prevState1;
void setup(){
Serial.begin(9600);
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
attachInterrupt(0, isr_2, FALLING);
attachInterrupt(1, isr_3, FALLING);
pinMode(kon, INPUT);
digitalWrite(kon, HIGH);
}
void loop(){ //encoder "koder"
if(number != oldnumber){
Serial.println(number);
oldnumber = number; //denne værdi jeg gerne vil bruge
}
}
void isr_2(){
delay(1);
if(digitalRead(2) == LOW){
if(digitalRead(3) == HIGH && halfright == false){
halfright = true;
}
if(digitalRead(3) == LOW && halfleft == true){
halfleft = false;
number--;
}
}
}
void isr_3(){
delay(1);
if(digitalRead(3) == LOW){
if(digitalRead(2) == HIGH && halfleft == false){
halfleft = true;
}
if(digitalRead(2) == LOW && halfright == true){
halfright = false;
number++;
}
}
{
currState1 = digitalRead(kon);
if(currState1 !=prevState1) //tryk på knap "koder"
{
if(currState1 == LOW && number == 3)
{
Serial.println("UDSAGN 1");
}
}
prevState1 = currState1;
if(currState1 !=prevState1)
{
if(currState1 == LOW && number == 4)
{
Serial.println("UDSAGN 2");
}
}
prevState1 = currState1;
}
}