Двойной щелчок для аналогового датчика с порогом
Я пытаюсь создать клавиатуру для пациентов с МД. У меня есть только пять датчиков силы, каждый датчик кодирует 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();
}
}
@baraah baryhe, 👍0
Обсуждение0
Смотрите также:
- Настройка порога для цифровых контактов
- Шум в Analog Read Serial от инструментального усилителя (ina122p)
- analogRead всегда 1023 на Arduino Due
- DHT11 аналоговый или цифровой?
- Расширенная настройка АЦП на Due (SAM3X8E) для повышения точности
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Как считывать аналоговое значение на ESP32-CAM с включенным считывателем SD-карт?
- Не получая никакого выхода от датчика ЭКГ AD8232
что подключено к аналоговым выводам?, @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