#define riga1 11
#define riga2 10
#define riga3 9
#define riga4 8
#define col1 7
#define col2 6
#define col3 5
#define col4 4
void setup()
{
pinMode(riga1,INPUT_PULLUP);
pinMode(riga2,INPUT_PULLUP);
pinMode(riga3,INPUT_PULLUP);
pinMode(riga4,INPUT_PULLUP);
pinMode(col1,OUTPUT);
pinMode(col2,OUTPUT);
pinMode(col3,OUTPUT);
pinMode(col4,OUTPUT);
digitalWrite(col1,HIGH);
digitalWrite(col2,HIGH);
digitalWrite(col3,HIGH);
digitalWrite(col4,HIGH);
Serial.begin(9600);
}
void loop()
{
delay(30);
digitalWrite(col1,LOW);
delay(30);
if (digitalRead(riga1)==LOW) {
Serial.println("1");
while (digitalRead(riga1)==LOW) {
delay(100);
}
}
if (digitalRead(riga2)==LOW) {
Serial.println("4");
while (digitalRead(riga2)==LOW) {
delay(100);
}
}
if (digitalRead(riga3)==LOW) {
Serial.println("7");
while (digitalRead(riga3)==LOW) {
delay(100);
}
}
if (digitalRead(riga4)==LOW) {
Serial.println("*");
while (digitalRead(riga4)==LOW) {
delay(100);
}
}
digitalWrite(col1,HIGH);
delay(30);
digitalWrite(col2,LOW);
if (digitalRead(riga1)==LOW) {
Serial.println("2");
while (digitalRead(riga1)==LOW) {
delay(100);
}
}
if (digitalRead(riga2)==LOW) {
Serial.println("5");
while (digitalRead(riga2)==LOW) {
delay(100);
}
}
if (digitalRead(riga3)==LOW) {
Serial.println("8");
while (digitalRead(riga3)==LOW) {
delay(100);
}
}
if (digitalRead(riga4)==LOW) {
Serial.println("0");
while (digitalRead(riga4)==LOW) {
delay(100);
}
digitalWrite(col2,HIGH);
}
delay(30);
digitalWrite(col3,LOW);
if (digitalRead(riga1)==LOW) {
Serial.println("3");
while (digitalRead(riga1)==LOW) {
delay(100);
}
}
if (digitalRead(riga2)==LOW) {
Serial.println("6");
while (digitalRead(riga2)==LOW) {
delay(100);
}
}
if (digitalRead(riga3)==LOW) {
Serial.println("9");
while (digitalRead(riga3)==LOW) {
delay(100);
}
}
if (digitalRead(riga4)==LOW) {
Serial.println("#");
while (digitalRead(riga4)==LOW) {
delay(100);
}
}
digitalWrite(col3,HIGH);
delay(30);
digitalWrite(col4,LOW);
if (digitalRead(riga1)==LOW) {
Serial.println("A");
while (digitalRead(riga1)==LOW) {
delay(100);
}
}
if (digitalRead(riga2)==LOW) {
Serial.println("B");
while (digitalRead(riga2)==LOW) {
delay(100);
}
}
if (digitalRead(riga3)==LOW) {
Serial.println("C");
while (digitalRead(riga3)==LOW) {
delay(100);
}
}
if (digitalRead(riga4)==LOW) {
Serial.println("D");
while (digitalRead(riga4)==LOW) {
delay(100);
}
}
digitalWrite(col4,HIGH);
}
Buongiorno, volendo imparare ad utilizzare un tastierino su Arduino, ma senza l'utilizzo di una libreria così da sfruttare l'occasione per imparare qualcosa di nuovo sia a livello pratico che logico, ho creato questo semplice sketch cercando vari spunti su internet. Premetto che ad ora non ho ancora avuto modo di provarlo fisicamente, ma solo su Tinkercad. Ma veniamo al dunque:
Riscontro un problema di output seriale sulla colonna 2: alla pressione di un qualsiasi tasto su questa colonna mi escono casualmente valori presenti sulla medesima riga, ma di altre colonne. Il problema è limitato, come già detto, a questa colonna. Negli altri casi i valori sono corretti.
Grazie a tutti per le risposte.
P.S: Ho provato anche ad eliminare i blocchi di codice relativi a colonna 1 mantenendo 2-3-4 e ad eliminare i blocchi 3-4 mantenendo 1-2, ma il risultato non cambia, riscontro il medesimo problema.