Двойной щелчок для аналогового датчика с порогом

Я пытаюсь создать клавиатуру для пациентов с МД. У меня есть только пять датчиков силы, каждый датчик кодирует 4 буквы (всего 20), что означает, что мне не хватает 6 букв. Я думаю об использовании двойного щелчка, например: один щелчок = 'A', двойной щелчок = 'B'. Я нашел следующий код: https://forum.arduino.cc/t/code-to-detect-single-or-double-click/915386/13 Однако при попытке перейти с digitalRead на analogRead и добавить пороговое значение код не может работать (введите). Я также пробовал использовать библиотеку OneButton, но у нее та же проблема (digitalRead).

У кого-нибудь есть предложения, что делать?

Я также прикрепил свой текущий код (одним щелчком мыши).

#include <Keyboard.h>
const int threshold = 800;
int up4 = 0;
int down4 = 0;
int right4 = 0;
int left4 = 0;

int up5 = 0;
int down5 = 0;
int right5 = 0;
int left5 = 0;

int yellow4= A0; // down
int white4 = A1;//left
int red4 = A2;//up
int blue4 = A3;//right 

int yellow5=A4;//down
int white5= A5;//left
int red5= A6;//up
int blue5 = A7;//right

void setup() 
{
  pinMode(red4, INPUT); 
  pinMode(blue4, INPUT);
  pinMode(white4, INPUT); 
  pinMode(yellow4, INPUT);

    pinMode(red5, INPUT); 
  pinMode(blue5, INPUT);
  pinMode(white5, INPUT); 
  pinMode(yellow5, INPUT);
  Serial.begin(9600);
  Keyboard.begin();
}

void loop()
{
  int up4 = analogRead(red4); 
  int right4 = analogRead(blue4);
  int down4 = analogRead(yellow4); 
  int left4 = analogRead(white4);

  int up5 = analogRead(red5); 
  int right5 = analogRead(blue5);
  int down5=analogRead(yellow5); 
  int left5 = analogRead(white5);

  if (right4>threshold & up4<threshold & down4<threshold & left4<threshold){
   Serial.println("right4");
   Keyboard.write('L');
   delay(300);
   Keyboard.releaseAll();
  }
    if (right5>threshold & up5<threshold & down5<threshold & left5<threshold){
   Serial.println("right5");
   Keyboard.write('Y');
   delay(300);
   Keyboard.releaseAll();
  }
  if (right4<threshold & up4>threshold & down4<threshold & left4<threshold){
   Serial.println("up4");
   Keyboard.write('M');
   delay(300);
   Keyboard.releaseAll();
  }
  if (right5<threshold & up5>threshold & down5<threshold & left5<threshold){
   Serial.println("up5");
   Keyboard.write('R');
   delay(300);
   Keyboard.releaseAll();
  }

   if (right4<threshold & up4<threshold & down4>threshold & left4<threshold){
    Serial.println("down4");
    Keyboard.write('N');
     delay(300);
     Keyboard.releaseAll();
  }
  if (right5<threshold & up5<threshold & down5>threshold & left5<threshold){
   Serial.println("down5");
   Keyboard.write('Z');
   delay(300);
   Keyboard.releaseAll();
  }
  if (right4<threshold & up4<threshold & down4<threshold & left4>threshold){
    Serial.println("left4");
    Keyboard.write('O');
     delay(300);
     Keyboard.releaseAll();
  }
      if (right5<threshold & up5<threshold & down5<threshold & left5>threshold){
   Serial.println("left5");
   Keyboard.write('P');
   delay(300);
   Keyboard.releaseAll();
  }

    
  
} 

, 👍0

Обсуждение

что подключено к аналоговым выводам?, @jsotola

Шаг первый: выясните, что такое один клик. Шаг второй добавьте время в микс, чтобы найти время между двумя щелчками мыши или если щелчок происходит без щелчка после него в течение определенного периода времени., @Majenko

датчик подключается к аналоговым выводам, специально для этой модели :https://www.digikey.co.il/he/products/detail/interlink-electronics/30-72718/5724114?utm_adgroup=&utm_source=google&utm_medium=cpc&utm_campaign=Shopping_Product_L%20Runner&utm_term=&productid=5724114&gclid=CjwKCAjwkMeUBhBuEiwA4hpqEOCn0-whp1lwht4arbP3rSYu36um8AE7rkepzMNQalhTJPdU9ZOuoBoCUWsQAvD_BwE, @baraah baryhe