Guide du débutant pour Arduino (10 / 15 étapes)

Étape 10 : Communication avec l’ordinateur

Jusqu'à présent, nous avons utilisé uniquement la connexion USB pour télécharger de nouveaux programmes à l’Arduino. Mais nous pouvons aussi utiliser la connexion pour envoyer des données depuis et vers l’ordinateur.

Quelques conseils d’Arduino comme Leonardo ont un microcontrôleur qui gère la communication USB tout par ses propres, mais la plupart des conseils ont un second, plus petit microcontrôleur, uniquement pour la communication. Sur l’Arduino Uno, c’est le petit carré noir entre le connecteur USB et les LED TX-RX. La communication entre ce morceau et le microcontrôleur principal se fait en utilisant une connexion série, puis la deuxième puce indique à l’ordinateur « Hey, je suis un serial port », puis simplement convertit les données de série de la puce principale au format USB et convertit les messages de l’ordinateur en série pour le microcontrôleur principal.

Série signifie que les bits sont envoyés sur le même fil, l’un après l’autre, alors que les connexions parallèles envoyer 8 bits ou plus simultanément, à séparent les fils (comme le port d’imprimante parallèle grande sur le dos de certains ordinateurs plus anciens).

L’Arduino utilise deux lignes série : celle de l’Arduino pour la puce USB, la transmission (TX) et une ligne de la puce USB à l’Arduino, la ligne de réception (RX). Ces lettres sont écrites à côté de broche 0 et 1. Cela signifie que ces goupilles sont utilisées lorsque vous êtes connecté à l’ordinateur en cours d’exécution, vous ne pouvez pas utiliser les LEDs ou boutons etc.. Si vous arrêtez la communication encore une fois, vous pouvez simplement utiliser les broches d’e/s comme d’habitude.
Si vous souhaitez vous connecter l’Arduino vers un autre appareil utilisant des communications série, vous devez également utiliser ces deux broches.

Envoi des entrées à l’ordinateur

Ouvrez l’exemple serialButton et le télécharger.
La configuration de montage d’essai est le même que dans l’étape précédente.
Ensuite, ouvrez le moniteur série: outils > Serial Monitor, cliquez sur la loupe dans le coin supérieur droit ou frappé CTRL + MAJ + m Make sûr autoscroll est activé et la vitesse de transmission est défini sur 9600.

Vous verrez un tas d’uns. Maintenant, appuyez sur le bouton poussoir relié à la broche 3, et vous verrez des zéros. C’est juste l’entrée brute de la broche.

Maintenant, ouvrez la table traçante série: outils > série traceur ou CTRL + MAJ + L. Cela va tracer les valeurs dans un graphique.

Nous allons jeter un coup d’oeil sur le code :

Dans la configuration, nous ajoutons une nouvelle commande : Serial.begin(9600). C’est juste pour commencer la communication et le 9600 est le débit en bauds, le nombre d’impulsions par seconde, donc la vitesse de la connexion série. 9600 est simplement la valeur par défaut. Si vous choisissez une valeur différente, vous devrez le changer dans le moniteur de série ainsi. Sinon, il va être synchronisées et vous donner très étranges personnages. C’est le contraire de Serial.begin(...) Serial.end(). Vous pouvez l’utiliser lorsque vous avez à utiliser les broches 1 et 0 comme e/s normales encore une fois, après avoir utilisé la connexion série, toutefois il n'est pas vraiment recommandé.

Dans la boucle, vous verrez le même mot clé série, cette fois utilisée avec la fonction println(...) . Ceci affiche juste sur la valeur qui est spécifiée entre les parenthèses, suivies d’une nouvelle ligne (ln).
(Notez que cela n’est pas juste il convertir en binaire pour l’envoyer au fil de la série, au lieu de cela, elle convertit en ASCIIet l’envoie ensuite au fil de la série, afin que l’ordinateur peut imprimer. Si vous voulez envoyer les octets binaires au fil de la série, utilisez la fonction de Serial.write(...) .)

Pour obtenir une nouvelle ligne, vous pouvez également utiliser Serial.print(...) ainsi que le caractère \n (nouvelle ligne) ou du caractère \r (retour chariot), qui indiquent une ligne terminée, au lieu de la ln.

Les guillemets indiquent que c’est un personnage.

Une autre particularité est le \t (tabulation), nous allons l’utiliser pour imprimer les entrées des deux commutateurs. Il s’agit d’exemple serial2Buttons. Téléchargez et ouvrez le moniteur série pour voir le résultat.

Référence de l’Arduino : Serial

Envoyer des commandes à l’Arduino

La communication fonctionne également l’inverse : nous allons écrire un programme de contrôle LED de l’ordinateur.
Ouvrez l’exemple serialLEDs.

Télécharger, ouvrir le moniteur de la série et essayez de renvoyer des valeurs comprises entre 0 et 3. Maintenant envoyer 4. Téléchargez comment ça marche ?
Nous allons vérifier le code :

Le programme d’installation devrait ressembler assez familier, sauf une seule commande : il s’agit d’une boucle while. Une boucle while répète, tant que la condition entre les crochets est vraie (on pourrait le compare à une boucle for, mais sans le premier et le dernier argument, seuls l’État.) J’ai utilisé explicitement les supports incurvés pour indiquer c’est une boucle, mais vous pouvez aussi simplement utiliser un point-virgule à la place : while (! Série) ;
Série retourne true lorsque la communication série est active (lorsque vous ouvrez le moniteur série, par exemple). Donc si nous ajoutons un opérateur not (!), l’expression est vraie lorsque la communication n’est pas active. Donc la boucle while continue à répéter de suite alors que la communication n’est pas active et essentiellement attend pour qu’il devienne actif. Nous savons que nous puissions commencer à envoyer des données avec la fonction println(...). Si nous ne serait pas utiliser la boucle while pour attendre, certains conseils comme Leonardo (et autres conseils qui ont des capacités USB dans la puce principale) seront juste perdent les premières données. Il cherche à envoyer à l’ordinateur, mais rien n’y est à l’écoute pour l’entrée série.

Dans la boucle, il y a une autre nouvelle déclaration : l' instruction if, c’est probablement la plus importante déclaration en informatique. Il fait exactement ce que son nom l’indique : il exécute un morceau de code, uniquement si une certaine condition est vraie. Sinon, le code entre les crochets courbes est ignoré.

Maintenant, je vais prendre un moment pour expliquer comment l’Arduino reçoit les messages de la série :
Comme je l’ai expliqué plus tôt, série envoie un bit après l’autre, octet par octet. Cela signifie que votre message, « test », par exemple, obtient séparé en morceaux de 1 octet. Un caractère correspond à un octet en taille, donc il ressemblera à quelque chose comme ' t ' « e » ' ' t ' quand vous l’envoyez au fil de la série. Lorsque l’Arduino reçoit ces octets, il les stockera dans un tampon (juste un petit morceau de mémoire pour stocker temporairement). Il reçoit il octet par octet, ce qui rend le tampon ressemblera à quelque chose comme ça "" (vide) "t", "te", "tes" "test".
Lorsque le tampon est vide, la fonction Serial.available() retourne 0, si il a reçu des données dans la mémoire tampon, il retourne le nombre d’octets dans la mémoire tampon, donc 4 dans ce cas. Si vous appelez la fonction Serial.read() , il va lire le premier octet (' t ') dans la zone tampon, supprimez-le de la mémoire tampon et passer le tampon, donc il contient maintenant "est", et Serial.available() renvoie 3. Si vous appelez Serial.read() encore une fois, il retourne « e », et le tampon sera « st ». Vous pouvez continuer à lire jusqu'à ce que Serial.available() est égal à zéro. (Si vous voulez savoir le premier octet sans le supprimer en le faisant, vous pouvez utiliser la fonction Serial.peek() ).

Donc la première if(Serial.available > 0) vérifiera s’il y a toutes les données dans la mémoire tampon. Dans l’affirmative, il va lire le premier octet et stocker dans la variable serialValue. Ensuite, il vérifie si la valeur, qu'il vient de lire est « 0 ». Notez les guillemets simples, cela indique le caractère zéro (ASCII: ' 0 = 48) et pas 0 comme valeur, puisque le serial monitor envoie sous forme de texte. Si la valeur est « 0 », il s’éteint les deux LEDs. Si la valeur n’est pas de « 0 », code dans la section «autre» s’exécutera : donc il va maintenant vérifier si la valeur est "1", dans l’affirmative, elle la première LED s’allume et se transforme de la seconde. Si elle n’est pas non plus « 1 », il vérifiera si elle est « 2 », si donc, il le deuxième LED s’allume et s’éteint le premierà. S’il n’est pas « 2 », il vérifiera si elle est « 3 », dans l’affirmative, il tourne sur les deux LEDs, sinon, il exécute le code dans la dernière section d’autre et imprime les valeurs que vous devez entrer.

Vous pouvez consulter l’organigramme de l’image si l’explication n’était pas suffisamment claire.

Notez qu’un signe d’égalité double est utilisé pour vérifier si deux valeurs sont identiques. Si vous souhaitez utiliser un signe d’égalité unique, (si (serialValue = « 0 »)) il ne sera pas vérifier quoi que ce soit, il sera juste assigner une valeur de « 0 » à la variable serialValue. Il s’agit d’une erreur très commune.

Autres opérateurs pour tester les valeurs sont < (moins de) > (supérieur à) < = (inférieur ou égal à) > = (supérieur ou égal à)! = (non égal à).
À l’intérieur de votre instruction if, vous pouvez également utiliser des opérateurs logiques (opérateurs booléens), de vérifier plusieurs conditions : & & (et), || (ou)

Quelques exemples :

5 > 3 true →
Faux → 5 < 3
3 > 3 faux →
3 > = 3 → true
5! = 3 → true
3 == 3 → true

pour vérifier si une valeur de x est comprise entre 1 et 100 :

(1 < = x) & & (x < = 100)

une autre façon d’écrire cette (non recommandé, à titre d’exemple)

! ((x < 1) || (x>100))

Vous pouvez essayer de comprendre comment il fonctionne, vous-même et ensuite vérifier avec les tables de vérité dans l’image ci-dessus.

Remarque : Tout comme en mathématiques, supports sont utilisés pour indiquer l’ordre des opérations, par exemple, dans la dernière expression, ' x < 1' sera testé tout d’abord, puis ' x > 100', puis ' ||' et enfin '!'.

Référence de l’Arduino : tandis que

Arduino référence : si (et les opérateurs de comparaison)

Référence de l’Arduino : autre

Référence de l’Arduino : opérateurs booléens

_

Résumé

  • La plupart des Arduinos ont une deuxième puce pour communication USB. Cette puce communique avec le microcontrôleur principal à l’aide d’une connexion série.
  • Série, que ça sont envoyée après l’autre, à la fois. Il y a une ligne de transmission et une ligne de réception (TX et RX respectivement).
  • Vous pouvez utiliser le Serial Monitor (CTRL + MAJ + M) et la série traceur (CTRL + MAJ + L) pour montrer les données de que l’Arduino est l’envoi et d’envoyer des données à l’Arduino.
  • Serial.Begin(Baud) ; démarre la communication série avec l’ordinateur. La vitesse de transmission par défaut est de 9600.
  • Serial.end(); met fin à la communication série.
  • Serial.Print(Text) ; imprime le texte à l’ordinateur, il peut être lu dans la série monitor/table traçante. Notez que les nombres sont convertis en ASCII : par exemple Serial.print(0) ; envoie une valeur de série de 48 (code ASCII pour le caractère zéro).
  • Serial.println(Text) ; est-la même impression, mais la volonté ajoute une nouvelle ligne après le message.
  • « \n » est un caractère de nouvelle ligne « \r » est un retour chariot et « \t » est le caractère de tabulation (pour les retraits)
  • Serial.Write(Byte) ; envoie un octet brut au cours de la série. Par exemple, Serial.write(48) ; imprime un caractère-0 dans le moniteur de la série.
  • while(condition) {...} est appelé la boucle while. Code entre les accolades sera exécuté et répétée tant que la condition entre parenthèses normales est vraie.
  • Série retourne true lorsque la communication série est active (lorsque vous ouvrez le moniteur série, par exemple).
  • while (! Série); répétera « rien"(lire « attendre ») tant que la communication sérielle n’est pas active.
  • if(condition) {code if} else {sinon-code} exécutera le code if si la condition est vraie et exécuter le code d’autre si la condition est false.
  • Des données série a reçu de l’Arduino sont stockées dans une mémoire tampon, il y reste jusqu'à ce que vous avez bien lu, ou jusqu'à ce que le buffer overflow.
  • Serial.available() ; retourne le nombre d’octets disponibles dans le tampon.
  • Serial.Read() ; va retourner le premier octet dans la mémoire tampon et supprimez-le ensuite.
  • Serial.Peek() ; renvoie le premier octet dans la mémoire tampon, sans le supprimer.
  • Dans vos conditions, vous pouvez utiliser ces opérateurs de test: == (égal à), < (moins de), > (supérieur à), < = (inférieur ou égal à), > = (supérieur ou égal à),! = (non égal à).
  • Et vous pouvez également utiliser la logique & & (et) et || (ou) des opérateurs.

Supplémentaires : commutateur

Dans le dernier exemple, nous avons utilisé beaucoup de if... else déclarations. Même si c’est le moyen le plus rapide de le faire, il n’est pas facile à lire. Si vous souhaitez comparer une variable pour certaines valeurs de données, vous pouvez utiliser un commutateur.

Ouvrez l’exemple serialLEDsSwitch.

Comme vous pouvez le voir, le commutateur démarre avec le mot clé « switch », suivi par la variable que vous voulez vérifier entre parenthèses. Entre les supports incurvés, nos valises sont définis. Ils utilisent la syntaxe 'affaire valeur: ", suivi par le code à exécuter si la variable donnée est égale à la valeur dans cette « affaire ». Après le code de cas particuliers, le 'break;' mot clé est utilisé pour fermer le "cas".
Notez que la valeur que vous entrez ne peut pas être une variable. Si vous souhaitez comparer 2 variables, vous devrez utiliser des instructions if.
Le code dans le 'par défaut:' affaire est exécutée si la variable ne correspond à aucune des valeurs d’autres cas. Ce cas est facultatif et peut être omis.

Référence de l’Arduino : switch / case

Articles Liés

Guide d’installation rapide pour Arduino LCD 2004 avec PCF8574

Guide d’installation rapide pour Arduino LCD 2004 avec PCF8574

Il s'agit d'un guide d'installation rapide pour votre Arduino LCD.Ce que vous devez savoir avant de commencer :1. écrans LCD n'est pas créés égaux, certains ont des broches différentes que l'autre.2. principaux éléments de la mise en place : l'écran
Un Guide de débutants pour dispositifs logiques programmables

Un Guide de débutants pour dispositifs logiques programmables

J'ai mis ce instructable ensemble après avoir remarqué qu'il n'est pas vraiment quoi que ce soit sur le site Web sur les automates programmables industriels à l'exception d'une question et une instructable sur un programmateur (voir liens ci-dessous)
Guide #4 débutants Hardware Arduino partie 2

Guide #4 débutants Hardware Arduino partie 2

Suite à la partie 1, cette vidéo sur Arduino Hardware pour débutants jette un regard sur certains périphériques de nouvelle Arduino matériel pour vous rendre sur la route à un projet.Nous examinons ici les écrans Afficheurs à cristaux liquides (LCD)
Simple guide de débutants pour faire un « BIODIESEL » alimenté voiture

Simple guide de débutants pour faire un « BIODIESEL » alimenté voiture

plus personnes ne réalisent pas un moteur diesel peut fonctionner sur l'huile usée de friteuseIl s'agit en aucun cas une méthode parfaite, ou la meilleure façon de le faire, juste un moyen facile d'apprendre pour les débutants d'entrer dans ce. Consi
Guide du débutant pour la découpe de papier

Guide du débutant pour la découpe de papier

Voici un guide simple pour vous aider à faire des coupes de papier.J'ai eux font depuis plusieurs années et ont découvert qu'ils sont un très bon moyen de faire une belle carte, surtout quand le temps joue contre vous. Je fais ces chaque fois qu'un a
Guide #3 débutants Hardware Arduino partie 1

Guide #3 débutants Hardware Arduino partie 1

Parfois, c'est les petites choses dans la vie qui peut se transformer en grandes pierres d'achoppement, et cela vaut certainement pour noobs commençant leur voyage Arduino. Il était certainement si dans mon cas.Donc dans cette vidéo, j'ai aperçu quel
Un Guide de débutants pour l’émulation du monde.

Un Guide de débutants pour l’émulation du monde.

Avant de vous critiquez et dire que c'est illégal, il est seulement illégal si vous le marché des jeux.Émulation est mieux expliquée grâce à wikipedia, bien que vous y trouverez un petit résumé de ce nouveau monde impressionnant. Émulation est fondam
Expérimentateurs guident pour Arduino interprété à OIT

Expérimentateurs guident pour Arduino interprété à OIT

ressourcesAdafruit ARDX - v1.3 expérimentation Kit pour ArduinoGuide des expérimentateurs pour Arduino (PDF)Mises en page Conseil de pain (PDF)Tutorial Arduino Bundle (Instructable)Ce Arduino Tutorial va être très similaire à l'Arduino tutoriel Bundl
Guide d’achat pour Arduino Uno

Guide d’achat pour Arduino Uno

Choisir un Arduino acheter peut être source de confusion, surtout si vous envisagez d'acheter un Uno. Vendeurs en ligne peuvent omettre des renseignements importants, vendre obsolète ou mal au prix de planches, et certains peuvent être carrément trom
Guide d’assemblage V2 KIT de couleur RGB LCD Shield pour Arduino 65K

Guide d’assemblage V2 KIT de couleur RGB LCD Shield pour Arduino 65K

The RGB LCD shield pour Arduino 65K couleur KIT comprend tous les composants pour assembler un prêt à l'emploi LCD shield pour Arduino et conseils compatibles comme Freeduino.(visitez http://store.nkcelectronics.com/rgb-lcd-shield-for-arduino-65k-col
Arduino Anti vol alarme (avec sirène de Police): Remplir Guide de débutante

Arduino Anti vol alarme (avec sirène de Police): Remplir Guide de débutante

Vous ont peur des voleurs qui peuvent voler tous vos projets??? :) :) Puis cette l'INSTRUCTABLE parfait pour vous. Il s'agit d'une alarme antivol. Lorsqu'il n'y a aucun voleur autour, puis une LED bleue s'estomperont sur et en dehors ; mais si un vol
Un Guide complet des cavaliers à bord sur le kit Intel Edison pour Arduino

Un Guide complet des cavaliers à bord sur le kit Intel Edison pour Arduino

Intel® Edison kit pour Arduino permet l'Intel® Edison pour être compatible avec Arduino shields, conçus pour le R3 de UNO. La carte d'extension Arduino inclut plusieurs en-têtes de cavalier pour configurer le jury avec des paramètres différents comme
Guide du débutant à ESP8266 et Twitter à l’aide de ESP8266

Guide du débutant à ESP8266 et Twitter à l’aide de ESP8266

J'ai appris sur Arduino 2 ans. Alors j'ai commencé à jouer avec des choses simples comme LED, boutons, moteurs etc. Puis j'ai pensé qu'il ne serait pas cool de se connecter pour faire des choses comme l'affichage de la météo du jour, prix de stock, f
Construire un Quadcopter bricolage : Guide du débutant complet

Construire un Quadcopter bricolage : Guide du débutant complet

Il s'agit d'un véritable petit clip de mon quadcopter planant de haut en bas et déplaçant latéralement. J'ai essayé de garder la hauteur aussi minimes que possible car je suis à l'intérieur de mon salon, mais comme vous pouvez le voir, même avec ça i