Как преобразовать мгновенную кнопку в сенсорный датчик TTP223?

Я пытаюсь преобразовать

этот проект https://maker.pro/arduino/projects/simple-fm-radio-receiver-with-arduino-uno-and-rda5807m

до 3 сенсорных датчиков TTP223.

Но пока мой новый код не работает.

Пожалуйста, не могли бы вы взглянуть на эти изменения?

Обновить:

Код переходит в цикл, и последовательный монитор показывает: толчок 3 толчок 4 толчок 2 толчок 3 толчок 4 толчок 2

и так далее

Я также вижу на OLED-дисплее, что 3 пункта меню меняются циклически.

Датчик TTP223, подключенный к контакту 4, всегда остается включенным с включенной красной лампочкой.

Если я прикоснусь к датчику, подключенному к контакту 3, меню не изменится (ручная настройка, Громкость, автонастройка).

(Я проверил сенсорные датчики, если они работают отдельно).

|
|
//TTP223
#define Pin_DOWN 4   // дестра
#define Pin_UP 2     // sinistra
#define Pin_SET 3    // меню 
#define FIX_BAND 1


int menu;
#define MAXmenu  3
int menux;
#define MAXmenux  3

|
|
void setup() 
{
  Wire.begin();   
  //Serial.begin(9600); 
  Serial.begin(57600);

//TTP223
pinMode(Pin_DOWN,INPUT_PULLUP );
pinMode(Pin_UP,INPUT_PULLUP);
pinMode(Pin_SET,INPUT_PULLUP); 
boolean SET=digitalRead(Pin_SET);
boolean UP=digitalRead(Pin_UP);
boolean DOWN=digitalRead(Pin_DOWN);

|
|
void loop() {
  int newPos;
  unsigned long now = millis();
 // статический беззнаковый long nextFreqTime = 0;
  static unsigned long nextRadioInfoTime = 0;
  char c;
  /*entradaV = analogRead(entrada);
   
   #if DEBUG  
      Serial.print("sensor = " );  Serial.println(entradaV);delay(50);
   #endif
   */
// Boton menu d
/* if(entradaV>500 && entradaV<524)
   { */
//TTP223
if(digitalRead(3) == HIGH) {
    delay(150);
    Serial.println("push 3");
    menu++;
    if(menu>MAXmenu)menu=1;
    Visualizar();

    #if DEBUG 
      Serial.print("menu = " );  Serial.println(menu); 
    #endif   
    //в то время как(1020>analogRead(entrada)) задержка (5);

   }
            
// Boton derecho
/* if( entradaV<50)
   { */
//TTP223
if(digitalRead(4) == HIGH) {
    Serial.println("push 4");
    menux++;
    if(menux>MAXmenux)menux=MAXmenux;
    #if DEBUG 
      Serial.print("menux = " );  Serial.println(menux);
    #endif
    switch(menu)
      {
        case 1:
          frecuencia++;
          if(frecuencia>210)frecuencia=210; 
          delay(130);
        break;  
        case 2:
           volumen++;
           if(volumen>15)volumen=15;
           // в то время как(1020> analogRead(entrada)) задержка (5);
        break; 
        case 3:
           busqueda(0);
           // в то время как(1020> analogRead(entrada)) задержка (5);
        break; 
        case 4:
           // ЖК-дисплей Clear();
            tft.clearDisplay();
           // visualPI();
            delay(3000);
           // ЖК-дисплей Clear();
            tft.clearDisplay();
            frecuenciaOld=-1;
        break; 
      }              
   }
   
// Boton izquierdo
/* if( entradaV<700 && entradaV>660)
    { */
//TTP223
if(digitalRead(2) == HIGH) {
    Serial.println("push 2");
    menux--;
    if(menux<1)menux=1; 
    #if DEBUG 
      Serial.print("menux = " );  Serial.println(menux);
    #endif   
    switch(menu)
      {
        case 1:
            frecuencia--;
            if(frecuencia<0)frecuencia=0;    
            delay(130);
        break;  
        case 2:
            volumen--;
            if(volumen<0)volumen=0;
            // в то время как(1020> analogRead(entrada)) задержка (5);
        break; 
        case 3:
            busqueda(1);
            // в то время как(1020> analogRead(entrada)) задержка (5);
        break; 
        case 4:
           // ЖК-дисплей Clear();
          tft.clearDisplay();
            //tft.печать (частота);
            //visualPTY();
            delay(3000);
           // ЖК-дисплей Clear();
            tft.clearDisplay();
            frecuenciaOld=-1;
        break; 
      }
    
   }
|
|

, 👍1

Обсуждение

Я предполагаю, что вы хотите заменить мгновенные кнопки в проекте сенсорными датчиками. Как именно ваш код не работает? Пожалуйста, предоставьте более подробное описание. Пробовали ли вы читать датчики касания сами по себе (без какого-либо другого кода или части проекта), чтобы убедиться, что они работают правильно?, @chrisl

И поскольку TTP223 настраивается с помощью перемычек, вы пробовали что-то вроде [этого] (https://www.instructables.com/Tutorial-for-TTP223-Touch-Sensor-Module-Capacitive/), чтобы проверить их поведение?, @chrisl

я обновил пост, @massimo