Ciao ragazzi ho acquistato un tastierino 4x4 e lo fatto funzionare in arduino. Dato che devo scrivere su un "blocco note" devo utilizzare processing.
Qui nasce il problema, non sò proprio come fare a passare la libreria keypad di arduino in processing. Questo è il mio codice in arduino:
//Definisce i pin per comandare le luci
const int rele_1 = 13; // Luce 1
const int rele_2 = 4; // Luce 2
// Definizione tastiera
#include <Keypad.h>
const byte ROWS = 4; // Quattro righe
const byte COLS = 4; // Quattro colonne
// Definizione mappa della tastiera
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {
8, 7, 6, 5 }; // Connessione delle righe: Riga0, Riga1, Riga2 e Riga3 ai pins di Arduino.
byte colPins[COLS] = {
12, 11, 10, 9 }; // Connessione delle colonne: Colonna0, Colonna1 , Colonna2 e Colonna3 ai pins di Arduino.
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Creazione della tastiera
void setup() {
// imposta i pin digitali come uscite:
pinMode(rele_1, OUTPUT);
pinMode(rele_2, OUTPUT);
digitalWrite(rele_1, HIGH);
digitalWrite(rele_2, HIGH);
Serial.begin(9600);
}
void loop()
{
char key = kpd.getKey();
if(key) // controlla che il valore sia valido.
{
switch (key)
{
case 48: //valore ascii del numero 0
digitalWrite(rele_1, HIGH);
Serial.println(0);
break;
case 49: //valore ascii del numero 1
digitalWrite(rele_1, HIGH);
Serial.println(1);
break;
case 50: //valore ascii di 2
digitalWrite(rele_2, HIGH);
Serial.println(2);
break;
case 51: //valore ascii di 3
digitalWrite(rele_2, HIGH);
Serial.println(3);
break;
case 52: //valore ascii del numero 4
digitalWrite(rele_1, LOW);
Serial.println(4);
break;
case 53: //valore ascii del numero 5
digitalWrite(rele_2, LOW);
Serial.println(5);
break;
case 54: //valore ascii del numero 6
digitalWrite(rele_2, LOW);
Serial.println(6);
break;
case 55: //valore ascii del numero 7
digitalWrite(rele_2, LOW);
Serial.println(7);
break;
case 56: //valore ascii del numero 8
digitalWrite(rele_2, LOW);
Serial.println(8);
break;
case 57: //valore ascii del numero 9
digitalWrite(rele_2, LOW);
Serial.println(9);
break;
}
}
}