Go Down

Topic: Tastiera HID con Arduino UNO Rev 3 (Read 5997 times) previous topic - next topic

DanteAuditore

eh... invece, purtroppo, non funziona D:... non capisco come mai ._.

gpb01

Metti il programma che diamo un occhiata (... mi raccomando i tag CODE).

Guglielmo
Search is Your friend ... or I am Your enemy !

docdoc

#47
Jun 26, 2015, 05:13 pm Last Edit: Jun 26, 2015, 05:14 pm by docdoc
Scusate se mi intrometto, ma non si potrebbe cambiare il titolo al topic? Questo scarno "saaalve" (sic!) non significa nulla, e sta diventando anche abbastanza esteso per cui è possibile mettere qualcosa di più significativo?...
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

#48
Jun 26, 2015, 05:19 pm Last Edit: Jun 26, 2015, 05:19 pm by gpb01
Scusate se mi intrometto, ma non si potrebbe cambiare il titolo al topic? Questo scarno "saaalve" (sic!) non significa nulla, e sta diventando anche abbastanza esteso per cui è possibile mettere qualcosa di più significativo?...
Ottimo suggerimento !!!

@DanteAuditore : edita il PRIMO post di questo thread e dagli un titolo che abbia un collegamento con l'argomento.

Guglielmo
Search is Your friend ... or I am Your enemy !

DanteAuditore

mi scuso per iltitolo, lo volevo già cambiare dal secondo post, ma non sapevo come farlo ahah, grazie per l'aiuto, comunque, il codice è questo:

Code: [Select]

int i;
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
uint8_t a[8]= {0,0,0,0,1,0,0,0};
uint8_t w[8]= {0,0,0,1,1,0,1,0};
uint8_t s[8]= {0,0,0,1,0,1,1,0};;
uint8_t d[8]= {0,0,0,0,0,1,1,1};;
uint8_t space[8]={0,0,1,0,1,1,0,0};;
uint8_t q[8]= {0,0,0,1,0,1,0,0};;


//QUA CI SONO LE PREMESSE

void setup()
{
    Serial.begin(9600);
  pinMode(6, INPUT);

  pinMode(7, INPUT);

  pinMode(8, INPUT);

  pinMode(9, INPUT);

  pinMode(10, INPUT);

  pinMode(11, INPUT);
}



//QUI C'è IL MAIN



void loop()

{
  int stringa[8];

  stringa[0] = digitalRead(6);
  stringa[1] = digitalRead(7);
  stringa[2] = digitalRead(8);
  stringa[3] = digitalRead(9);
  stringa[4] = digitalRead(10);
  stringa[5] = digitalRead(11);

if(stringa[0]==1)
  {for(i=0;i<8;i++)
             { buf[i]= a[i];
              } // a
   }
if(stringa[1]==1)
  {for(i=0;i<8;i++)
             { buf[i]= w[i];
              } // w
   }
if(stringa[2]==1)
  {for(i=0;i<8;i++)
             { buf[i]= s[i];
              } // s
   }
if(stringa[3]==1)
  {for(i=0;i<8;i++)
             { buf[i]= d[i];
              } // d
   }
if(stringa[4]==1)
  {for(i=0;i<8;i++)
             { buf[i]= space[i];
              } // space
   }
if(stringa[5]==1)
  {for(i=0;i<8;i++)
             { buf[i]= q[i];
              } // q
   }
 
    Serial.write(buf,8); // Send keypress
 for(i=0;i<8;i++)
             { buf[i]= 0;}
}
 


la board selezionata è Arduino UNO ed è sul com 4 ( dato che aprendo la gestione dispositivi trovo Arduino UNO sul com 4), la verifica la fa senza problemi e lo carica...

se vi interessa, come hardware, ho arduino attaccato al pc tramite il cavo usb e per provarlo ho semplicemente preso i 5 volt da arduino collegandolo da un lato ad un interruttore normalmente aperto, poi dall'altro lato l'ho collegato ai vari pin uno per uno premendo ( non tenendo premuto ma premendo ogni volta) sull'interruttore

gpb01

Ecco ora c'è un bel problema ... fare il debug di quel codice visto che ... NON puoi usare la Serial.print() per stampare valori di diagnostica.

Ad esempio, sarebbe molto interessante mettere una Serial.print() dopo le digitalRead() per vedere cosa VERAMENTE leggi ... ma ovviamente NON puoi farlo perché la porta USB è usata per simulare la keyboard ...

Secondo me, tocca che ripristini le funzioni del convertitore USB, fai un bel debug esaminando in vari punti il valore delle varie variabili e, quando alla fine hai una situazione FUNZIONANTE (ovvero vedi uscire sul monitor seriale quello che ti aspetti) ... solo allora, metti il firmware che simula la KBD sul chip.

Guglielmo

P.S. : Ad esempio ... non stai affatto tenendo conto dei rimbalzi dei pulsanti che hai collegato hai vari pin ... per cui, non sono affatto sicuro di cosa hai in stringa[] quando esci dalle digitalRead() e cominci gli IF ... ::)
Search is Your friend ... or I am Your enemy !

docdoc

mi scuso per iltitolo, lo volevo già cambiare dal secondo post, ma non sapevo come farlo ahah
Perfetto, grazie!! :D
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

Go Up