problema keypad 4x4

Buongiorno a tutti ragazzi,
ho un problema riguardo il keypad 4x4. I collegamenti li ho fatti giusti e quando vado ad eseguire questo semplice sketch:

#include <Keypad.h>
const byte riga = 4;    //quattro righe
const byte colonna = 4; //quattro colonne
char keys[riga][colonna] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte pinRiga[riga] = {9, 8, 7, 6}; //connect to the row pinouts of the kpd
byte pinColonna[colonna] = {5, 4, 3, 2}; //connect to the column pinouts of the kpd
Keypad keypad = Keypad( makeKeymap(keys), pinRiga, pinColonna, riga, colonna );
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char key = keypad.getKey();
  if (key) {
    Serial.print("Tasto ");
    Serial.print(key);
    Serial.println(" premuto");
  }
}

il risultato è quello che ad ogni tasto premuto mi stampa il corrispettivo valore in seriale. Fin qui tutto ok. Il problema sta nel dare una funzione/azione a un tasto.

Avevo intenzione di modificare lo sketch precedente cosi:

void loop()
{
  char key = keypad.getKey();
  if (key) {
    Serial.print("Tasto ");
    Serial.print(key);
    Serial.println(" premuto");
    if (key == 3)
    {
      Serial.println("funzione");
    }
  }
}

ma vedo che al premere del tasto 3 mi stampa solo questo:

Tasto 3 premuto

senza scrivere 'funzione' e quindi penso non entri nell'if e quindi non fare alcuna azione...come mai?

Grazie!

Metti il 3 tra apici singoli.

ottimo, +karma grazie mille ho risolto :smiley:

EDIT: altro problema. Ho una tastiera con 16 pulsanti capacitivi come QUESTA però non ho capito come sviluppare lo sketch...ho cercato qualcosa online ma i risultati sono stati tanti buchi nell'acqua..
Il modulo ha 12 pin di cui 8 di output, 2 per l'alimentazione e altri 2 per la comunicazione I2C quindi SDA e SCL. Il problema sta nel fare lo sketch..non so da dove cominciare :S

eppure vedo che ci sono anche librerie link

Purtroppo librerie di cui il file d'esempio è sbagliato:

#include <TTP229.h>

const int SCL_PIN = 2;  // The pin number of the clock pin.
const int SDO_PIN = 3;  // The pin number of the data pin.

TTP229 ttp229(SCL_PIN, SDO_PIN); // TTP229(sclPin, sdoPin)

void setup()
{
	Serial.begin(115200);
	Serial.println("Start Touching One Key At a Time!");
}

void loop()
{
	uint8_t key = TTP229.ReadKey16(); // Blocking
	if (key) Serial.println(key);

	//uint8_t key = ttp229.GetKey16(); // Non Blocking
	//Serial.println(key);
}

nella compilazione mi da questo errore:

KeyToSerial:65: error: 'class TTP229' has no member named 'GetKey16'

  uint8_t key = ttp229.GetKey16(); // Non Blocking

                       ^

exit status 1
expected primary-expression before '.' token

hai installato male la libreria.
Aprendo lo zip, c'e' una sottocartella TTP229, devi copiare questa

Ok brunello avevi ragione...però adesso penso di avere un problema hardware nei collegamenti..quando vado a premere il tasto 1 in seriale mi stampa 9 fino ad arrivare al numero 8 che quindi mi stampa 16..

i collegamenti che ho fatto sono:
GND -> GND
Vcc -> 5V

out1 -> 4 (pin digitale arduino)
out2 -> 5
...
...
out8 -> 12
SDO -> 3
SCL -> 2

e questo è lo sketch d'esempio:

#include <TTP229.h>

const int SCL_PIN = 2;  // The pin number of the clock pin.
const int SDO_PIN = 3;  // The pin number of the data pin.

TTP229 ttp229(SCL_PIN, SDO_PIN); // TTP229(sclPin, sdoPin)

void setup()
{
	Serial.begin(115200);
	Serial.println("Start Touching One Key At a Time!");
}

void loop()
{
	uint8_t key = ttp229.ReadKey16(); // Blocking
	if (key) Serial.println(key);

//	uint8_t key = ttp229.GetKey16(); // Non Blocking
//	Serial.println(key);
}

Qualche suggerimento? Gazie!

Up :cold_sweat: