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

salve ragazzi, sto facendo un piccolo sketch, per imparare ad utilizzare i tastierini a matrice
mi sono servito della keypad.h
 ho una matrice 2 righe ,3 colonne  e 6 led.
quello che voglio realizzare è semplice, spingo un tasto si accende il led corrispondente, ri-premo il tasto e il led corrispondente si spegne.
questo è il codice che ho prodotto
Code:
#include <Keypad.h>
const byte ROWS = 2; // two rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {0,1,2},
  {3,4,5}
 
};
int stato[6]={LOW,LOW,LOW,LOW,LOW,LOW};
int led[6]={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<6;i++)
 { digitalWrite(led[i],stato[i]); }
}
allora, il codice fa quello che deve per i primi 5 switch e led, se premo il 6° sw il 6° led non si accende.
ho provato a ricontrollare il codice, ma non riesco a capire cosa non va, mi date una mano??
saluti! e grazie per l'attenzione!
Logged

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

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

Stai mettedo 7 Pin come uscite e hai definito nel Array solo 6 (indice da 0 a 5) Pin.
giusto é:
Code:
for(a=0;a<6;a++)

Se Ti fai stampare il dato restituito dalla funzione kpd.getKey(); cosa trovi se premi il sesto pulsante?

Ciao Uwe
Logged

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

come faccio a farmelo  stampare?
Logged

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

con Serial.print
http://arduino.cc/en/Reference/Serial e
http://arduino.cc/en/Serial/Print
Ciao Uwe
Logged

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

GRazie UWE della dritta... non sapevo si potesse monitorare la seriale in questo modo....
Comunque dal monitor seriale ho notato che premendo lo sw corrispondende allo "0", la seriale non trametteva nessun dato, mentre per gli altri si.
ho risolto, togliendo lo "0" dai valori della matrice key. in  questo modo funziona correttamente.
presto inserisco  il codice corretto, nel caso qualcuno possa trovarne giovamento.
Logged

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

Di niente
Ciao Uwe
Logged

Pages: [1]   Go Up
Jump to: