Étape 2: Programme Teensy
http://www.pjrc.com/Store/teensy3.html
La disposition des broches est au lien suivant :
http://www.pjrc.com/teensy/pinout.html
J’ai utilisé le Teensy parce qu’il est très facile de le transformer en un clavier USB. Après la mise en place de votre Teensy et le tester avec une simple lumière clignotante, dans le programme Arduino, cliquez sur « Outils » puis sous « USB Type », sélectionnez « Clavier + souris + Joystick » et placez-vous dans le code suivant :
* NOTE * pour maintenant, ne vous inquiétez qui résulte de bouton dans quelque clé. En fait, il serait préférable de changer toutes les clés de serrage des boulons 4-9 et de A-Z (utiliser les capitales) et utilisent des symboles comme {} + pour remplacer les touches marquées 1,2,3. Cela rend plus facile de rester là et de tester pour vous assurer que vous recevez réellement chaque bouton. (Que j’ai fait à l’étape 5) Si vous faites cela, n’utilisez pas les numéros 1, 2 ou 3 pour des fins de test. Ces touches sont programmées à supprimer, tab et Maj.
Pour taper une lettre majuscule, appuyez sur Maj, relâcher, puis appuyer sur elles clés vous souhaitez capitaliser.
/*
Croquis de clavier
imprime la touche pressée sur le clavier sur le port série
Testé avec succès le 28/06/13
*/
const int numRows = 6 ; nombre de lignes dans le clavier
const int numCols = 6 ; nombre de colonnes
const int debounceTime = 20 ; nombre de millisecondes pour interrupteur stable
/*
{ '6','7'}
*/
keymap définit le caractère retourné lorsque vous appuyez sur la touche correspondante
const char keymap [numRows] [numCols] = {}
{« z », « b », « o », « x », '3 ',' j'},
{ '.','m','l' , ',','"','k'},
{ '?',' ','p' , 'v','\'','n'},
{'2', 'w', ' t ', « q », '1 ',' e'},
{ 's','g','i' , 'c','\n','h'},
{'a ',' f', « u »,'d «, » y «, » r'}
};
1 est delete
2 est onglet
3 est Maj
ce tableau détermine les axes utilisés pour les lignes et colonnes
const int rowPins [numRows] = {1,2,3,4,5,6} ; Lignes de 0 à 3
const int colPins [numCols] = {10,12,13,14,15,16} ; Colonnes de 0 à 2
char de TMS = « 0 » ;
void setup()
{
Serial.Begin(9600) ;
pour (int rang = 0; ligne < numRows ; ligne ++)
{
pinMode(rowPins[row],INPUT) ; Ligne de l’ensemble des épingles comme entrée
digitalWrite(rowPins[row],HIGH) ; Allumez les tractions
}
pour (colonne int = 0; colonne < numCols ; colonne ++)
{
pinMode(colPins[column],OUTPUT) ; Réglez de façon strictement de colonne comme sorties
pour l’écriture
digitalWrite(colPins[column],HIGH) ; Faire toutes les colonnes inactif
}
}
void loop()
{
clé char = getKey() ;
Delay(debounceTime) ; Il s’agit d’un moment « debounce clavier »
Si (clé == « 1 ») {}
Supprimer
Keyboard.Press(KEY_BACKSPACE) ;
Keyboard.Release(KEY_BACKSPACE) ;
clé = « 0 » ;
}
Si (clé == « 2 ») {}
Onglet
Keyboard.Press(KEY_TAB) ;
Keyboard.Release(KEY_TAB) ;
clé = « 0 » ;
}
Si (clé == « 3 ») {}
Maj
TMS = « 1 » ;
clé = « 0 » ;
}
Si (sft == « 1 ») {}
Si (touche! = « 0 ») {}
clé = toupper (clé) ;
TMS = « 0 » ;
}
}
Si (touche! = « 0 ») {/ / si le personnage n’est pas 0 then
C’est une touche valide
Keyboard.Print(Key) ;
}
}
retourne avec la touche enfoncée, ou 0 si aucune touche n’est actionnée
getKey() char
{
clé char = « 0 » ; 0 indique aucune touche n’enfoncée
pour (colonne int = 0; colonne < numCols ; colonne ++)
{
digitalWrite(colPins[column],LOW) ; Activer la colonne actuelle.
pour (int rang = 0; ligne < numRows ; ligne ++) / / analyser toutes les lignes pour
une touche enfoncée.
{
if(digitalRead(rowPins[Row]) == faible) / / si une touche est enfoncée ?
{
Delay(debounceTime) ; Debounce
while(digitalRead(rowPins[Row]) == faible) ; attendre pour clé à paraître
clé = keymap [ligne] [colonne] ; N’oubliez pas la touche qui
digitalWrite(rowPins[row],HIGH) ; RESET bouton poussé à haute
}
}
digitalWrite(colPins[column],HIGH) ; Désactiver la colonne actuelle.
}
retourner la clé ; retourne la touche enfoncée ou 0 si aucune
}