Hello there,
First, my very little program where is my problem:
//---------------------
bool memA = false;
bool memB = false;
bool memC = false;
bool memUP = false;
bool memDOWN = false;
bool memLEFT = false;
bool memRIGHT = false;
bool memCENTER = false;
void setup() {
Serial.begin(115200);
Serial.println(“Début init”);
// Initialisation des boutons en entrées
pinMode(WIO_KEY_A, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_KEY_A), changeA, CHANGE);
pinMode(WIO_KEY_B, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_KEY_B), changeB, CHANGE);
pinMode(WIO_KEY_C, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_KEY_C), changeC, CHANGE);
pinMode(WIO_5S_UP, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_5S_UP), changeUP, CHANGE);
pinMode(WIO_5S_DOWN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_5S_DOWN), changeDOWN, CHANGE);
pinMode(WIO_5S_LEFT, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_5S_LEFT), changeLEFT, CHANGE);
pinMode(WIO_5S_RIGHT, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_5S_RIGHT), changeRIGHT, CHANGE);
pinMode(WIO_5S_PRESS, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIO_5S_PRESS), changeCENTER, CHANGE);
Serial.println("Fin init");
}
void loop() {
states();
delay(10);
}
void states() {
if (digitalRead(WIO_KEY_A) == !memA) { memA = !memA; Serial.print(“A=”); Serial.println((memA) ? “high” : “low”); }
if (digitalRead(WIO_KEY_B) == !memB) { memB = !memB; Serial.print(“B=”); Serial.println((memB) ? “high” : “low”); }
if (digitalRead(WIO_KEY_C) == !memC) { memC = !memC; Serial.print(“C=”); Serial.println((memC) ? “high” : “low”); }
if (digitalRead(WIO_5S_UP) == !memUP) { memUP = !memUP; Serial.print(“UP=”); Serial.println((memUP) ? “high” : “low”); }
if (digitalRead(WIO_5S_DOWN) == !memDOWN) { memDOWN = !memDOWN; Serial.print(“DOWN=”); Serial.println((memDOWN) ? “high” : “low”); }
if (digitalRead(WIO_5S_LEFT) == !memLEFT) { memLEFT = !memLEFT; Serial.print(“LEFT=”); Serial.println((memLEFT) ? “high” : “low”); }
if (digitalRead(WIO_5S_RIGHT) == !memRIGHT) { memRIGHT = !memRIGHT; Serial.print(“RIGHT=”); Serial.println((memRIGHT) ? “high” : “low”); }
if (digitalRead(WIO_5S_PRESS) == !memCENTER) { memCENTER = !memCENTER; Serial.print(“CENTER=”); Serial.println((memCENTER) ? “high” : “low”); }
}
//------------------------------
void changeA() {Serial.println(“changeA”);}
void changeB() {Serial.println(“changeB”);}
void changeC() {Serial.println(“changeC”);}
void changeUP() {Serial.println(“changeUP”);}
void changeDOWN() {Serial.println(“changeDOWN”);}
void changeLEFT() {Serial.println(“changeLEFT”);}
void changeRIGHT() {Serial.println(“changeRIGHT”);}
void changeCENTER() {Serial.println(“changeCENTER”);}
//------------------------------
The result is that the “WIO_KEY_A” and “WIO_5S_UP” buttons do not work in interruption.
I don’t see why I have these errors because I just received this material.
These “WIO TERMINAL” might not be fully tested in factory output?
Thanks in advance for your opinion.