Pages: [1]   Go Down
Author Topic: key matrix  (Read 608 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve
Sto giocando da un pò di tempo con un tastierino a matrice e dei led.
ho realizzato un piccolo codice che mi fa accedendere o spegnere  il led associato al tasto del tastierino, nel seguente modo:
premo il tasto, led accesso, ri premo il tasto, led spento.

vi posto il codice:
Code:
#include <Keypad.h>
const byte ROWS = 2; // two rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {1,2,3},
  {4,5,6}
  
};
int stato[7]={LOW,LOW,LOW,LOW,LOW,LOW,LOW};
int led[7]={13,32,30,28,26,24,22};
// Connect keypad ROW
byte rowPins[ROWS] = {2,3};
// Connect keypad COL
byte colPins[COLS] = {4,5,6};
 // Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void setup()
{
 int a=0;
 for(a=0;a<7;a++)
 { pinMode(led[a], OUTPUT);
 }
  
}



void loop()
{
  char key = kpd.getKey();
  if(key)  // Check for a valid key.
  {
    if(stato[key]==LOW)
    {stato[key]=HIGH;}
    else
    {stato[key]=LOW;}
  }
int i=0;
for(i=0;i<7;i++)
 { digitalWrite(led[i],stato[i]); }

}

volevo chiedere nel caso che voglia fare un codice che faccia questo:
premo un tasto(lasciandolo premuto) il led si accende, lascio il tasto, il led si spegne. sapete darmi una mano ad implementarlo...
vi ringrazio!
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non conosco bene la Keypad, ma direi che a occhio e croce dovresti identificare gli eventi di transizione tra tasto premuto e non premuto, e viceversa.

key = leggi tasto attualmente premuto
if (!prevKey && key) {
    // il tasto key è stato premuto
}
else if (prevKey && !key) {
    // il tasto prevKey è stato rilasciato
}
prevKey = key
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20204
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

È semplice; controlli uno dopo l'altro se un pulsante é premuto e poi accendi o spegni il rispettivo led.
Ciao Uwe
« Last Edit: December 08, 2012, 03:21:25 pm by uwefed » Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Già... molto più semplice la soluzinoe di uwe smiley
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, ma sapete come fare a controllare un tasto, l'uno dopo l'altro.....che voi sappiate c'è una funzione apposita in keymatrix oppure lo devo fare con dei cicli anadando a scorrere pin to pin , i pin della tastiera?
Logged

Pages: [1]   Go Up
Jump to: