Tutoriel Arduino USB Keyboard [Eng]
Tutoriel Arduino USB Keyboard [Eng]
...
Arduino ADK est une carte à microcontrôleur basée sur l’ATmega2560. Il dispose d'une interface hôte USB pour se connecter aux téléphones basés sur Android, basés sur le MAX3421e IC. Il possède 54 broches d’entrée / sortie numériques (dont 14 peuvent être utilisées en tant que sorties PWM), 16 entrées analogiques, 4 UART (ports série matériels), un oscillateur à cristal de 16 MHz, une connexion USB, une prise de courant, un en-tête ICSP, et un bouton de réinitialisation.
À part ce qui précède, l’une des spécialités principales de toutes les cartes Arduino est qu’elles ont leur propre logiciel de codage et de programmation. Ce logiciel prend en charge une vaste bibliothèque et une grande variété de fonctions intégrées, ce qui rend son codage très confortable par rapport au codage normal c en code vision avr pour la puce Atmega 8/16.
Ce logiciel peut être téléchargé à partir du site Web arduino.cc uniquement. Ce logiciel est disponible pour Windows ainsi que Linux et Mac. Après l'avoir installé, nous pouvons coder dans ce logiciel et le compiler.
Afin de télécharger votre code, connectez votre arduino au port USB de votre ordinateur portable à l’aide du câble USB fourni, il installera automatiquement les pilotes dès que vous vous connectez. S'il ne le fait pas, vous pouvez les installer manuellement en naviguant dans le fenêtre qui apparaît demandant le pilote. Les pilotes sont disponibles dans le dossier arduino uniquement dans le lecteur c ou dans le lecteur dans lequel vous l'avez téléchargé. Il suffit de parcourir ces pilotes et les pilotes arduino sont installés. Après cela, sélectionnez votre type de carte et de port de communication à partir d’outils.
L'écran du logiciel Arduino ressemble à l'illustration ci-dessous
2 boutons situés sous l'onglet Fichier permettent de compiler et de télécharger du code.
Vous pouvez essayer quelques exemples de base
code pour par exemple sélectionner des exemples de fichiers
compilez et téléchargez-le, votre panneau arduino commence à clignoter
quelques caractéristiques de base du codage arduino
code maily se compose de fichiers d’en-tête, de fonctions créées par vous-même et de leur définition, ainsi que de deux fonctions spéciales, sans configuration ni boucle
La configuration 1.void est cette fonction qui est exécutée au tout début du programme et qui est utilisée pour initialiser les variables et vérifier les conditions initiales de base. La boucle vide est cette fonction qui est exécutée après la configuration de vide et elle continue à s'exécuter encore et encore, comme si (1) boucle dans le codage c normal dans le code visionavr
La commande 2.serial.print () est utilisée pour placer directement le varialble à l'intérieur de la parenthèse sur l'écran du moniteur en série
Nous arrivons maintenant à l’interfaçage du clavier.
La partie matérielle consiste simplement à joindre un clavier USB avec un bouclier USB et à connecter arduino à un ordinateur portable, mais pour coder une partie, nous devons comprendre la forme du paquet de données USB que je donne ci-dessous.
Les données USB sont envoyées en paquets, le bit le moins significatif (LSB) en premier.
Il existe 4 types de paquets USB principaux: Token, Data, Handshake et Start of Frame.
Chaque paquet est construit à partir de différents types de champs, à savoir SYNC, PID, Adresse, Données, Point final, CRC et EOP.
Les paquets sont ensuite regroupés dans des cadres pour créer un message USB
Le paquet de jetons USB est utilisé pour accéder à la bonne adresse et au bon terminal. Il est construit avec le SYNC, le PID, un champ PID de 8 bits, suivi d'une adresse de 7 bits, d'un point d'extrémité de 4 bits et d'un CRC de 5 bits.
Le champ d'adresse et de noeud final doit être correctement décodé pour un fonctionnement correct.
Le paquet de données peut être de longueur variable en fonction des données. Cependant, le champ de données sera un nombre entier d'octets.
Le code Arduino développé pour l’interfaçage est le suivant
#include <avr / pgmspace.h>
#include <avrpins.h>
#include <max3421e.h>
#include <usbhost.h>
#include <usb_ch9.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr / pgmspace.h>
#include <adresse.h>
#include <hidboot.h>
#include <printhex.h>
#include <message.h>
#include <hexdump.h>
#include <parsetools.h>
classe KbdRptParser: public KeyboardReportParser
{
void PrintKey (mod uint8_t, clé uint8_t);
protégé:
void virtuel OnKeyDown (mod uint8_t, clé uint8_t); void virtuel OnKeyUp (mod uint8_t, clé uint8_t); void virtuel OnKeyPressed (clé uint8_t);
};
void KbdRptParser :: PrintKey (uint8_t m, clé uint8_t)
{
MODIFIERKEYS mod;
* ((uint8_t *) & mod) = m;
Serial.print ((mod.bmLeftCtrl == 1)? "C": ""); Serial.print ((mod.bmLeftShift == 1)? "S": ""); Serial.print ((mod.bmLeftAlt == 1)? "A": "");
Serial.print ((mod.bmLeftGUI == 1)? "G": "");
Serial.print (">");
PrintHex <uint8_t> (clé);
Serial.print ("<");
Serial.print ((mod.bmRightCtrl == 1)? "C": ""); Serial.print ((mod.bmRightShift == 1)? "S": ""); Serial.print ((mod.bmRightAlt == 1)? "A": "");
Serial.println ((mod.bmRightGUI == 1)? "G": "");
};
void KbdRptParser :: OnKeyDown (mod uint8_t, clé uint8_t)
{
Serial.print ("DN"); PrintKey (mod, clé); uint8_t c = OemToAscii (mod, clé);
si (c)
OnKeyPressed (c);
}
void KbdRptParser :: OnKeyUp (mod uint8_t, clé uint8_t)
{
Serial.print ("UP");
PrintKey (mod, clé);
}
void KbdRptParser :: OnKeyPressed (clé uint8_t)
{
Serial.print ("ASCII:");
Serial.println (clé (char));
};
USB USB;
// Hub USBHub (& Usb);
HIDBoot <HID_PROTOCOL_KEYBOARD> Clavier (& Usb);
uint32_t next_time; KbdRptParser Prs;
void setup()
{
Serial.begin (115200); Serial.println ("Démarrer");
if (Usb.Init () == -1)
Serial.println ("OSC n'a pas démarré.");
délai (200);
next_time = millis () + 5000;
Keyboard.SetReportParser (0, (HIDReportParser *) & Prs);
}
boucle vide () {
Usb.Task (); }
un point important pour exécuter le code correctement
nous avons besoin de télécharger la bibliothèque de version usb hostshield rev 2.0 depuis www.github.com pour divers fichiers d’entête inclus dans le code afin d’utiliser des fonctions spéciales. Une chose plus importante à faire après le téléchargement de la bibliothèque est de supprimer le commentaire d’un code #define écrit à l’avenir. Fichier H de la bibliothèque.
Ce commentaire n'est requis que si nous utilisons une carte Arduino Mega ADK avec MAX3421e intégrée.
quelques explications de code
usb est une instance de la classe USB qui doit être invoquée chaque fois qu'elle appelle une autre fonction. Une fonction est appelée lorsque vous appuyez sur une touche du clavier. Cette fonction convertit la clé (un code particulier attribué à chaque touche du clavier lors du transfert de ses données via usb. protocole) en ascii et vérifie également les touches spéciales telles que alt, contol, shift en appelant la fonction printkey, elle appelle ensuite la fonction onkeypressed qui place le caractère dans sa forme originale sur l’écran du moniteur en série à l’aide de la fonction serial.print .onkeyup quand la clé est relesed. Onkeyup et onkeydown ensemble déterminent qu'une touche a été enfoncée et la fonction onkeypress l'imprime sur un moniteur série.
Après avoir fait les choses mentionnées ci-dessus et après avoir compilé avec succès le code et l'avoir téléchargé dans arduino, nous devons ouvrir le moniteur en série en cliquant sur en haut à droite de la fenêtre du logiciel arduino pour voir le résultat de toute entrée saisie par le clavier.
Lcd s'interfaçant avec arduino
Nous pouvons également connecter l’écran LCD à Arduino et obtenir notre affichage sur l’écran LCD plutôt que sur le moniteur série.
Pour cela, nous devons également apporter certaines modifications au code.
Nous devons d’abord inclure la bibliothèque de cristaux liquides et prendre un exemple de cristal liquide de classe ne donnant aucune broche sur la carte sur laquelle nous l’avons connectée. Nous devons ajouter lcd.begin () dans la boucle d’installation void et chaque fois que nous devons imprimer quoi que ce soit, nous devons utiliser la commande lcd.print () (où j’ai pris lcd comme nom d’instance, vous pouvez choisir n'importe quel autre nom). L'image suivante montre que l'écran LCD fonctionne correctement et qu'il est relié au clavier par Arduino et que Keyoard imprime directement sur l'écran LCD!