Utilisation d’un clavier avec Arduino

Après un premier article qui faisait clignoter une LED, nous allons maintenant nous pencher sur la problématique du clavier. Le but étant de définir la vitesse de clignotement en fonction du chiffre choisi sur le clavier.

Tout d’abord, le schéma, qui est très simple. Dans le cas du clavier souple utilisé, le câblage est le suivant : les 4 premières broches pour les 4 lignes, et les 3 broches suivantes pour les colonnes. Ensuite, une librairie initialisée avec les bonnes broches viendra contrôler tout ça très simplement.

Câblage du clavier

Maintenant, le code, qui va afficher sur le port série la touche pressée.

Maintenant, nous allons faire clignoter la LED, en fonction du chiffre choisi sur le clavier : 1 pour un clignotement toutes les 100ms jusqu’à 9 pour 900ms.

Ce mode de fonctionnement n’est pas optimal, car il n’est pas possible d’appuyer sur une touche pendant le “delay”, ce qui fait que le montage devient difficilement utilisable quand on choisi de gros chiffres. En effet, la fonction “delay” est bloquante : elle interrompt l’exécution du programme pendant les “n” millisecondes définies en paramètre.

La solution va être de laisser tourner la fonction loop, et de compter nous même le temps pour faire clignoter la LED

Afin de bien illustrer la différence entre les deux modes, j’ai garder le mode “delay”, et ajouter un mode “millis”, qui va compter les millisecondes écoulées. Les touches * et # permettant de passer d’un mode à l’autre (* pour le mode delay, # pour le mode millis, par défaut)

Premier pas avec Arduino

Comme dans tout nouveau langage de programmation, on commence par le fameux “hello world” après avoir installé les outils de base, et notamment l’IDE Arduino.

Faire clignoter une LED

La LED intégrée

Dans le cas de l’Arduino, on va trouver plusieurs programmes (aussi appelés croquis dans le cas de l’Arduino) tout-faits fournis avec l’IDE, afin de se familiariser avec les concepts de base. Il suffit de cliquer sur Ouvrir, et de choisir le croquis souhaité dans un des groupes.

Le plus simple se nomme “blink” (dans le groupe Basics), et permet de faire clignoter une LED. C’est tout simple, il n’y a besoin que d’une carte Arduino (Arduino Uno dans mon cas), et un câble USB pour connecter à l’ordinateur (et alimenter la carte par la suite). La LED utilisée par le programme “blink” est celle intégrée à la carte. Certains me diront que ce n’est pas réellement un “hello world”, puisqu’il n’affiche pas le texte Hello world. Cependant, c’est réellement le programme le plus simple, tout en étant utile.

Une LED externe à la carte

Pour faire clignoter une LED externe, il suffit de réaliser le montage suivant, qui comporte une LED, et une résistance de 1kΩ. La LED est un composant polarisé, qu’il faudra donc placer dans le bon sens pour qu’elle laisse passer le courant. Pour savoir dans quel sens la placer, ce n’est pas compliqué : une des pattes est plus longue et correspond au + (anode). En regardant dans la LED, l’anode est la plus petite partie. On connectera donc l’anode au + de la carte Arduino, ou dans notre cas, à la broche 13, qui sera configurée en sortie par le programme ( pinMode(13, OUTPUT); ). La cathode ( – ) sera elle reliée à la masse ( GND sur la carte Arduino ). La résistance peut être placée indépendamment entre la résistance et la broche 13, ou entre la résistance et la broche GND.

Montage pour faire clignoter une LED
Montage pour faire clignoter une LED

Le programme reste le même, puisque nous avons relié la LED à la broche 13, qui était déjà la broche utilisée pour piloter la LED intégrée à la carte.

Si la broche 13 n’est pas libre, ou si l’on souhaite en utiliser une autre, il suffira de changer le 13 dans le code par la valeur de la broche utilisée (en choisissant une broche du côté “Digital”. Une solution propre et simple pour pouvoir modifier cette broche simplement est de la déclarer sous forme de variable :

On utilisera ensuite la variable à chaque fois que l’on veut se servir de cette broche.

Utilisation du moniteur série

Une autre possibilité de “hello world” serait faire afficher sur le moniteur série le texte “Hello world”. Ce programme aura cependant moins d’intérêt que le précédent, car l’utilisation du port série pour en faire une sortie est souvent dans le cas de debug. Pour réaliser une véritable sortie d’informations pour l’utilisateur, on utilisera plutôt des afficheurs LCD, 7 segments, OLED, etc. D’autres articles viendront traiter de ces sujets.

Ce programme va donc afficher “hello world” au moment du setup, puis ne fera plus rien.

Deux fonctions sont disponibles pour faire une sortie “lisible” sur le port série :

  • Serial.print() pour écrire du texte, sans se soucier de la suite
  • Serial.println() pour écrire du texte suivi d’un retour à la ligne

Ces deux fonctions s’utilisent de la même manière :

  • Serial.print(78) va afficher “78”
  • Serial.print(1.23456) va afficher “1.23”
  • Serial.print(‘N’) va afficher “N”
  • Serial.print(“Hello world.”) va afficher “Hello world.”

Un second paramètre, optionnel, va nous permettre de spécifier la base (ou format) à utiliser pour l’affichage d’un nombre, ou alors le nombre de décimales dans le cas d’un nombre à virgule flottante (sachant que par défaut, le nombre de décimales est fixé à 2). Dans le cas du format, les valeurs acceptés sont BIN pour écrire en binaire, OCT pour écrire en octal, DEC pour la base 10 (standard de “lecture” pour nous), HEX pour la base héxadécimale.

  • Serial.print(78, BIN) va afficher “1001110”
  • Serial.print(78, OCT) va afficher “116”
  • Serial.print(78, DEC) va afficher “78”
  • Serial.print(78, HEX) va afficher “4E”
  • Serial.println(1.23456, 0) va afficher “1”
  • Serial.println(1.23456, 2) va afficher “1.23”
  • Serial.println(1.23456, 4) va afficher “1.2346”

Introduction

Ce blog est un peu mon bloc-note, dans lequel je vais pouvoir consigner les résultats (positifs ou négatifs) de mes expériences, dans divers domaines. Ces domaines sont assez variés, mais la plupart vont tourner autour de l’informatique, de l’électronique, ou encore des nouvelles technologies, comme la domotique, ou les objets connectés. Je suis conscient que de nombreux blogs traitent des mêmes sujets, souvent mieux que moi, mais l’idée de base est avant tout de centraliser tout ce qui me passionne.