Arduino uno n'affiche pas le port com virtuel. Dépannage Premiers pas avec Arduino. Arduino ne démarre pas après la mise à jour de Java sur Mac

Le cœur de la plate-forme Arduino est une puce de microcontrôleur connue sous le nom d'ATmega328.

L'ATmega328 est en fait un ordinateur 8 bits à tous égards : après avoir été allumé, son processeur charge un octet à partir d'un emplacement mémoire donné et l'interprète comme une commande. Ce qui se passe ensuite dépend de la valeur de cet octet. Contrairement aux ordinateurs que nous connaissons, ATmega328 n'exécute aucun système d'exploitation : l'utilisation des ressources est sous le contrôle total du programmeur. Nous ne pouvons pas compter sur un système d'exploitation qui peut mal allouer de la mémoire, la déborder ou entraîner d'autres conséquences indésirables pour un système automatique précis. De plus, le processeur ne peut travailler que sur une tâche à la fois (vous savez probablement que tous les processeurs fonctionnent de cette manière, mais le système d'exploitation répartit le temps de travail des différentes tâches de telle sorte qu'il semble que plusieurs programmes de votre ordinateur soient travaillant en même temps).

Si vous avez vraiment besoin de plus d'explications pour aller au bout de cette configuration, vous en avez une, mais vous pouvez généralement vous en passer ! 😉. Vous devez maintenant configurer Logiciel pour correspondre à votre carte. Dans la barre de menu, cliquez sur "Outils", puis "Type de carte" et sélectionnez la carte que vous souhaitez connecter.

Ensuite, lorsque c'est fait, cliquez à nouveau sur "Outils" et sélectionnez le port qui vient d'être ajouté à la liste. Et après avoir vérifié que la carte est connectée, exécutez le fichier de contenu. Cliquez sur "Oui" lorsque vous êtes invité pour les droits d'administrateur, puis cliquez sur "Installer". Lorsque l'installation est terminée, une boîte de dialogue s'ouvre et vous en informe. Une fois cela fait, redémarrez votre ordinateur si nécessaire et la carte sera désormais reconnue ! 🙂.

Le nouvel Arduino a une mémoire complètement vide, donc le premier octet traité par le processeur a une valeur de zéro : "No operation". Avant de en utilisant Arduino vous devez charger un programme exécutable dans sa mémoire, c'est-à-dire une séquence de bits dont le premier est interprété comme une commande et exécuté. Si la commande a besoin de paramètres pour s'exécuter, ils sont extraits des prochains octets de mémoire. Après avoir exécuté la commande, le processeur charge l'octet reçu en mémoire et l'interprète comme une commande. Si vous éteignez l'Arduino, la mémoire n'est pas effacée. La séquence d'octets qui y est chargée est stockée dans une mémoire non volatile, de sorte que lorsque vous le rallumez, le programme recommence depuis le début.

Si votre carte fonctionne correctement, vous pouvez passer à la partie suivante de cette page 😉. Détachez ensuite la carte et remontez. À la fin, un message apparaît entre l'éditeur et la console indiquant que la gravure a réussi. Votre carte est maintenant chargée !

Pour faciliter la vie des futurs programmeurs, voici quelques conseils. Activer les informations d'erreur. . En effet, s'il y a une erreur dans votre programme, lorsque vous voulez compiler ou même charger votre programme, un message d'erreur apparaîtra en bas de la fenêtre. Dans certains cas, ce message n'est pas suffisamment clair ou précis pour identifier le problème, auquel cas plus d'informations sur les messages d'erreur peuvent être très pratiques.

La fréquence des opérations du processeur est réglée par un générateur d'horloge de 16 MHz. L'alimentation peut être fournie via le connecteur USB. Travailler sans Alimentation USB Arduino une alimentation séparée de 7 à 12 V est nécessaire (cette tension est normalisée aux niveaux requis par un régulateur embarqué, vous avez donc juste besoin d'une alimentation peu coûteuse pour cela). À bord, les deux niveaux de tension de 5V et 3,3V sont disponibles pour l'utilisateur, à partir desquels un maximum de 50mA de courant peut être tiré.

Affichez le numéro de ligne et activez la sauvegarde du code. . En effet, pour ne pas vous perdre dans votre code lorsque celui-ci devient long, le numéro de ligne vous indiquera à quelle ligne correspond cette partie de votre code et vous permettra d'y revenir plus facilement.

Encore une fois, il y a deux cases à cocher dans les paramètres. Évidemment, ce ne sont pas les moyens dont nous traiterons dans cette partie. Non, nous verrons les moyens de communication dont dispose la carte Arduino. Elle a cette petite carte sous le capot ! 😉. Tout dépend de ce que vous voulez communiquer avec les médias que vous fournissez. Cependant, cette solution reste instable et oblige l'utilisateur à se trouver devant le système d'alarme. Aujourd'hui, avec le développement de la technologie et de "tout ce qui s'y rapporte", il serait dommage de ne pas pouvoir aller plus loin.

La mémoire Arduino se compose de trois types : mémoire flash, où le programme est stocké 32 Ko ; RAM(SRAM) 2 Ko, où le processeur stocke et écrase les variables utilisées dans le programme ; et mémoire morte (EEP-ROM) de 1 Ko, où le programmeur peut stocker les données qui doivent rester lorsque le contrôleur est redémarré (comme la mémoire flash, où le programme est stocké). Comparé aux ordinateurs d'aujourd'hui, qui gèrent au moins quelques gigaoctets, 35 Ko semble ridicule, mais c'est en fait suffisant pour la plupart des usages. À cause d'un manque système opérateur, l'utilisation de la mémoire est sous votre seule responsabilité : en cas de dépassement de mémoire ou d'accès à un emplacement mémoire inexistant, votre programme peut se comporter de manière imprévisible, ce qui est assez difficile à détecter lors du débogage. Vous devez toujours garder le nombre de variables sous contrôle dans votre programme.

C'est le but principal de la communication. Ces informations peuvent alimenter la base de données, servir au calcul, ou autre chose. Tout dépend de ce que vous en faites. Lorsque des informations sont transmises, il est nécessaire que l'émetteur, qui transmettra les informations transmises, et le destinataire, qui recevra les informations, les traitent.

L'un communique avec l'autre tandis que l'autre reçoit le message envoyé à l'autre. Cependant, il y a deux flèches dans votre dessin. L'autre qui reçoit le message peut envoyer les données ? Cependant, tout dépend du type de connexion. Par exemple, trois types de conversations peuvent être distingués. Chaque conversation n'a que deux interlocuteurs. Ils disent que c'est une connexion point à point. Dans ce cas, tout autre appareil utilisant la liaison série et son protocole de communication peut communiquer. Qu'est-ce qu'un protocole de communication ?

Le processeur ATmega328 est connecté à 14 ports d'E/S discrets (numérotés de 0 à 13), 6 entrées analogiques et un port USB. Les E/S discrètes sont connexion électrique, qui peut avoir deux états booléens : 1 et 0, ou TRUE et FALSE, ou, comme dans Syntaxe Arduino, BAS et HAUT. Si le signal est dans la valeur LOW, la broche correspondante a un potentiel zéro de 0 V - c'est-à-dire connectée à fil commun. Si le signal est ÉLEVÉ, le niveau de tension entre cette broche et la masse est de 5 V.

Il s'agit d'un ensemble de règles qui définissent la manière dont deux appareils interagissent entre eux. En revanche, deux appareils qui communiquent avec un protocole différent ne seront pas compris correctement et pourront même interpréter les actions à effectuer de manière inverse à ce qui a été demandé. Il serait dommage que votre interlocuteur "laisse le chat manger" lorsque vous lui demandez de "nourrir le chat". Bref, si les appareils de communication n'utilisent pas le bon protocole, ça peut devenir un vrai kapharnaüm !

Liaisons série, il y a un paquet ! L'inconvénient, bien que cela puisse aussi être un avantage, est que vous seul pouvez utiliser un tel message. Et qui verra-t-on parmi eux ? Certains sont meilleurs que d'autres ? oo. Alors oui, il y en a qui ont des avantages sur les autres. On peut noter essentiellement le type d'usage qu'on veut en faire et la vitesse à laquelle les appareils peuvent communiquer.

Les broches 0 et 1 sont utilisées pour la réception et la transmission de données série : à travers elles, la carte Arduino peut communiquer avec les modules (shields) qui lui sont attachés en utilisant le protocole série. Les protocoles série sont des protocoles de communication dans lesquels chaque bit est transmis/reçu à tour de rôle l'un après l'autre. Les broches 2 et 3 peuvent également être utilisées comme interruptions. Une interruption est un signal électrique sur une entrée numérique qui interrompt le programme du processeur en cours lorsqu'un état logique donné se produit. Des interruptions existent également dans les processeurs des ordinateurs conventionnels. Après qu'une interruption se soit produite, le processeur stocke son état en mémoire et retarde l'exécution du programme, passant à l'exécution d'un gestionnaire d'interruption : un court morceau de code de programme nécessaire pour traiter l'interruption. À la fin, le processeur reprend l'état qu'il avait avant l'arrivée de l'interruption et reprend l'exécution du programme.

Comment gérer les conflits cygwin sous Windows ?

Il définit le signal électrique, le protocole utilisé et tout ce qui concerne la mécanique. Pour communiquer via une liaison série, deux appareils doivent avoir au moins 3 câbles. Le premier câble est une référence électrique, communément appelée mise à la terre électrique. Un peu quand tu te mesures : tu mesures 1,7 mètre du sol jusqu'au sommet de ta tête, pas 4,4 mètres car tu es au premier étage et tu es accoudé au rez-de-chaussée. L'un est utilisé pour envoyer des données à un expéditeur, mais aussi pour recevoir des données d'un autre expéditeur. Il permet de rayonner l'un et de recevoir l'autre. Le vert est celui utilisé pour envoyer les données de la première carte, mais sert également à recevoir les données envoyées pour la deuxième carte. Orange est celui utilisé pour envoyer les données de la deuxième carte carte, mais sert également à recevoir les données envoyées pour la première carte.

  • Cela vous permet de mesurer la tension, en fixant le même cadre de référence.
  • Deux autres câbles assurent le transfert de données.
  • Le noir est la masse électrique commune.
C'est le strict minimum.

Les broches 3, 5, 6, 9, 10 et 11 peuvent être utilisées comme sorties PWM et ont des paramètres analogiques. En conséquence, leurs cellules mémoire contiennent des valeurs comprises entre 0 et 255.

Fig. 1 Arduino UNO, vu d'en haut et d'en bas. Notez la carte de l'Italie au verso.

La broche 13 est également connectée à la LED à bord. Lorsque le signal est BAS, la LED est éteinte, et si le signal est HAUT, la LED est allumée.

Signal électrique et protocole

La norme n'interdit pas l'utilisation d'autres câbles utilisés pour le contrôle de flux et la gestion des erreurs. Tout d'abord, il faut savoir que deux appareils électroniques ou informatiques utilisent des données sous forme de bits pour communiquer. En règle générale, ces ensembles sont constitués de 8 bits, qui forment alors un octet. Ces décharges sont en fait des niveaux de tension électrique. Les niveaux de tension imposés par la norme peuvent être listés dans le tableau comme suit.

Ainsi, toutes les tensions supérieures aux valeurs définies, donc entre -3V et 3V, inférieures à -25V et supérieures à 25V, sont hors plage. Une tension trop élevée peut endommager l'équipement. Lorsque les tensions de -3 V à -3 V sont ignorées, c'est dans ces zones que l'on trouve la plupart, voire la quasi-totalité des parasites. C'est un moyen d'éviter les erreurs de transmission.

Outre l'utilisation standard en tant qu'E/S numériques, les broches 10, 11, 12 et 13 permettent de communiquer avec des périphériques externes.

Les entrées analogiques sont repérées A0 ... A5 : elles ont chacune une résolution numérique de 10 bits,

c'est-à-dire qu'ils convertissent toute tension entre 0 et 5V en un nombre entre 0 et 1023 accessible en mémoire.

Connecter un Arduino à un ordinateur

Lorsqu'il n'y a pas de communication sur la liaison série, il existe un état dit dormant. Autrement dit, il y a toujours un niveau logique. C'est le niveau logique. Laissez la tension se situer entre -3V et -25V. Si cet état mouvement oisif manquant, il peut y avoir un problème de connexion.

Les données transitant par le port série sont transmises sous forme binaire. Vous ne le savez peut-être pas, mais une lettre du clavier est codée sur 8 bits, donc un octet. En fait c'est en fait sur 7 bits qu'il est encodé, mais en ajoutant un 0 devant l'encodage il garde sa valeur et permet d'encoder la lettre sur 8 bits. Ainsi, pour chaque caractère du clavier, vous pouvez trouver un encodage de 8 bits. Il s'agit donc de bases décimales, octales, hexadécimales et binaires. Certains d'entre eux vous sont inconnus, comme nous l'avons vu.

Toutes les plates-formes sont montées sur une planche mesurant 60,6 mm × 53,4 mm et ne pesant pas plus de 25 g (Fig. 1).

Les cartes ont également des connecteurs USB A/B avec lesquels vous pouvez les connecter à un ordinateur pour la communication. La connexion USB alimente également l'Arduino lorsqu'il est connecté à un ordinateur, vous n'avez donc pas besoin d'une source d'alimentation externe pour démarrer.

Nous, ce qui nous intéresse, c'est la base binaire. Oui, car le binaire est une séquence de 0 et de 1, qui sont les états logiques 0 et 1. Vous devez imaginer qu'il y a un récepteur. Afin de ne pas aller trop vite, nous nous en tiendrons à cette seule lettre. Par conséquent, nous verrons ce que nous passons par le chemin série. En effet, si un appel est reçu et que personne ne répond après l'arrêt, la conversation ne peut pas avoir lieu. Enfin, après avoir dit tout ce que vous aviez à dire, vous terminez la conversation par "Au revoir" ou "Salut !", "Plus !" Etc. Il y aura donc un bit de fin ou un bit d'arrêt qui fera la même chose sur la liaison série.

  • Ce message initial vous permet d'ouvrir une conversation.
  • C'est lui qui engagera une conversation avec son interlocuteur.
  • L'élément principal de la conversation.
C'est là que la communication série entre en jeu.

Programme

Un programme Arduino, comme tout autre programme pour le processeur, est une séquence de bits en langage machine. Afin de faciliter la vie des programmeurs, l'équipe Arduino a développé un langage de programmation haut niveau, un compilateur et un outil de micrologiciel pour verser du code machine dans la mémoire Arduino.

Tous ces outils sont inclus dans un programme IDE (Integrated Development Environment), gratuit

Aussi, savez-vous pourquoi le chemin série s'appelle ainsi ? En fait, c'est parce que les données transmises sont envoyées les unes après les autres. Si vous aimez, ils sont dans la queue de le-lei. Tout comme une conversation entre deux personnes : la personne qui parle ne peut pas dire plusieurs phrases à la fois, ou plusieurs mots ou sons. Chaque élément suit dans un ordre logique.

A l'aide d'un chronogramme on peut remarquer ce qui suit. C'est comme un nombre qui a des unités, des dizaines, des centaines, des milliers, etc. référence peut être faite au bit le moins significatif en binaire, ce qui est correct. Et comme les données sont transmises à l'envers sur les liaisons série, nous aurons le bit le moins significatif juste après le début, donc à gauche et le bit le plus significatif à droite. Avec le nombre précédent, si quelqu'un le lisait à l'envers, cela donnerait : un bit de peu de poids à gauche et à droite du bit le plus significatif.

à télécharger depuis le site Arduino : choisissez le système d'exploitation de votre ordinateur et téléchargez le programme. Il ressemble à la plupart des programmes informatiques classiques. Il a plusieurs onglets sur différentes fenêtres. L'une de ces fenêtres sert à éditer le programme. Cela s'appelle sketch dans le jargon Arduino. Les croquis sont écrits en C++ simplifié.

L'esquisse ne démarre pas lors de la mise sous tension ou de la réinitialisation de l'Arduino

Par conséquent, il est important de savoir où se trouve le bit le moins significatif pour pouvoir lire les données à cet emplacement. Sinon, nous détectons des données incorrectes ! Notez les tensions négatives qui correspondent à l'état logique 1 et les tensions positives à l'état logique.

Ils sont exprimés en bits par seconde. Lorsqu'une liaison série est utilisée, le débit en bauds sera déterminé. Cette vitesse est soumise à plusieurs limitations : la longueur du câble utilisé pour relier les deux parties et la vitesse à laquelle les deux parties peuvent se comprendre.


Fig. 2 Le programme Arduino apparaît sous la forme d'une fenêtre dans laquelle vous pouvez saisir le texte du programme, qui s'appelle simplement une esquisse.

Vous pouvez compiler votre croquis pour Programme Arduino(Fig. 2) en cliquant sur le bouton Vérifier dans le coin supérieur gauche de la fenêtre : le processus de compilation traduit le programme C++ dans les codes machine correspondants du processeur ATmega328. Une fois compilé, le sketch exécutable peut être chargé dans la mémoire Arduino via cable USB, lorsque vous cliquez sur le bouton Télécharger. Vous devrez peut-être sélectionner le port COM approprié dans le menu s'il y en a plusieurs disponibles. Le chargement d'un sketch entraîne toujours l'exécution du compilateur en premier. L'esquisse démarre immédiatement après la fin du téléchargement.

Plus le câble est court, plus débit, car il y a moins de tension et de risque d'interférence. Cependant, si la distance entre les deux parties augmente, la vitesse de communication diminuera effectivement. Malgré la tension imposée par la norme, il peut y avoir d'autres erreurs et erreurs de transmission. Il existe une solution pour limiter ce risque. Il consiste à ajouter des bits de parité. Vous verrez, c'est facile ! 😉 Juste avant le stop bit, on ajoutera un bit qui sera pair ou impair. Ainsi, si vous utilisez une liaison série, si la parité paire est sélectionnée, le nombre de niveaux logiques de 1 dans les données plus le bit de parité doit donner un nombre pair.

Caractéristiques supplémentaires ajouté au langage principal à l'aide de bibliothèques externes développées par l'équipe Arduino ou des tiers. Les bibliothèques peuvent être incluses dans le code exécutable en sélectionnant l'élément de menu approprié. Si nécessaire, l'ajout d'une bibliothèque ajoutera automatiquement des lignes à l'esquisse informant le compilateur de la nouvelle syntaxe.

Les programmes ne clignotent pas dans Arduino

Dans le processus de transfert d'un programme d'un ordinateur vers un Arduino, de nombreux composants sont impliqués. Si au moins l'un d'entre eux ne fonctionne pas correctement, le processus du micrologiciel sera interrompu. En particulier, le processus du micrologiciel dépend : des pilotes Arduino, du modèle de périphérique et de la sélection du port dans l'environnement Arduino, de la connexion physique à la carte, du micrologiciel du contrôleur 8U2 (sur Arduino Uno et Mega 2560), bootloader du microcontrôleur principal de l'appareil, réglages du bit de fusible, etc. Vous trouverez ci-dessous quelques recommandations pour le dépannage d'un composant particulier.

Environnement Arduino

  • Assurez-vous que votre modèle Arduino est sélectionné dans le menu Outils > Carte. Si vous avez un Arduino Uno, sélectionnez l'élément approprié. Gardez également à l'esprit que les modèles après l'Arduino Duemilanove sont livrés avec un microcontrôleur ATmega328, tandis que les versions plus anciennes sont livrées avec un ATmega168. Pour savoir quel contrôleur est utilisé dans votre Arduino, lisez l'inscription sur le microcontrôleur (la plus grande puce de la carte). Vous trouverez plus d'informations sur le menu Board dans la section Environnement de développement Arduino.
  • Vérifiez ensuite que le bon port est sélectionné dans le menu Outils > Port série (si le port n'apparaît pas, essayez de redémarrer EDI périphérique connecté à l'ordinateur). Sur un Mac, le port série devrait ressembler à /dev/tty.usbmodem621 (pour l'Arduino Uno ou Mega 2560) ou /dev/tty.usbserial-A02f8e (pour les anciens Arduinos avec une puce FTDI). Sous Linux : /dev/ttyACM0 ou similaire (pour Arduino Uno ou Mega 2560) ou /dev/ttyUSB0 (pour les anciennes versions d'Arduino). Sous Windows, ce sera un port COM, mais avant de choisir dans le gestionnaire de périphériques, vous devez vérifier lequel est associé à Arduino. Si ces ports ne sont pas répertoriés, consultez la section suivante sur les pilotes.

Conducteurs

Les pilotes permettent au logiciel d'application de l'ordinateur (c'est-à-dire l'environnement Arduino) de communiquer avec le matériel qui lui est connecté (la carte Arduino). En ce qui concerne Arduino, les pilotes sont responsables de la création d'un port série virtuel (ou port COM virtuel) dans le système. Arduino Uno et Mega 2560 avec microcontrôleur ATmega8U2 utilisent des pilotes standard (USB CDC) du système d'exploitation. D'autres cartes Arduino, où la puce FTDI joue le rôle d'un convertisseur USB-UART, utilisent des pilotes de FTDI.

Le moyen le plus simple de vérifier si les pilotes sont correctement installés est de connecter l'Arduino au PC et d'ouvrir le menu Outils > Port série dans l'environnement de développement. Après avoir connecté l'Arduino, de nouveaux éléments de menu devraient apparaître ici. Dans ce cas, peu importe le nom de port qui sera attribué à Arduino.

  • Sous Windows 7 (en particulier la version 64 bits), vous devrez peut-être aller dans le gestionnaire de périphériques et mettre à jour les pilotes Arduino Uno ou Mega 2560. Pour cela, faites un clic droit sur le périphérique dans le gestionnaire de périphériques (la carte doit être connecté à l'ordinateur) et pointez à nouveau vers Windows le fichier .inf correspondant. Ce fichier se trouve dans le dossier drivers/ du logiciel Logiciel Arduino(mais pas dans le sous-répertoire FTDI USB Drivers).
  • Si lors de l'installation Pilotes Arduino Uno ou Mega 2560 sous Windows XP vous obtenez l'erreur suivante : "Le système ne peut pas trouver le fichier spécifié", alors essayez cette solution (sur l'ajout de la clé "RunOnce" à la branche de registre "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" ).
  • Sous Linux, l'Arduino Uno et le Mega 2560 sont définis comme des périphériques /dev/ttyACM0, qui ne sont pas pris en charge par la version standard de la bibliothèque RXTX utilisée par l'environnement série Arduino. Par conséquent, la version Linux de cet environnement inclut une bibliothèque RXTX corrigée, qui fonctionne également avec les périphériques /dev/ttyACM*. Il existe également une version spéciale (11.04) qui inclut la prise en charge de ces appareils. Si vous utilisez le package RXTX standard, vous devez créer un lien symbolique dans le système de /dev/ttyACM0 à /dev/ttyUSB0 (par exemple) - le port série apparaîtra alors dans l'environnement Arduino.

Accès au port série

  • Sous Windows : si le programme prend beaucoup de temps à s'ouvrir ou se bloque au démarrage, ou si le menu Outils prend trop de temps à s'ouvrir, alors dans le Gestionnaire de périphériques, essayez de désactiver tous les ports série Bluetooth et les autres ports COM du réseau. Lors du démarrage ou de l'ouverture du menu Outils, l'environnement de développement Arduino analyse tous les ports série de votre ordinateur, respectivement, la présence de ces ports réseau peut parfois entraîner des blocages ou des plantages du programme.
  • Assurez-vous qu'aucun programme de scanner série n'est en cours d'exécution, tel qu'un dongle Wi-Fi cellulaire USB (tel que Sprint ou Verizon), des applications de synchronisation PDA, des pilotes USB Bluetooth (tels que BlueSoleil), des démons virtuels, etc.
  • Assurez-vous que la raison du blocage du port série n'est pas un pare-feu (par exemple, ZoneAlarm).
  • Il est également nécessaire de fermer tous les programmes qui surveillent les données envoyées via USB entre Arduino et le PC (par exemple, Processing, PD, vvvv, etc.).
  • Sous Linux : Essayez d'exécuter l'environnement Arduino en tant que root, au moins temporairement, pour voir si cela aide à flasher l'Arduino ou non.

Connexion physique au tableau

  • Tout d'abord, assurez-vous que l'Arduino est allumé (allumé DEL verte) et connecté à un ordinateur.
  • Sur les ordinateurs Mac, il y a des problèmes quand connecter Arduino Uno et Mega 2560 via hub USB. Si rien n'apparaît dans le menu "Outils > Port série", essayez de brancher la carte directement sur votre ordinateur et de redémarrer l'IDE Arduino.
  • Pendant la durée du micrologiciel, déconnectez tous les appareils des broches numériques 0 et 1, car ces broches sont connectées à l'interface de connexion Arduino à l'ordinateur (après avoir réussi à flasher le code sur le contrôleur, elles peuvent être réutilisées).
  • Essayez de flasher l'Arduino en déconnectant tous les périphériques de celui-ci (sauf le câble USB, bien sûr).
  • Assurez-vous que la carte n'est pas en contact avec des objets métalliques conducteurs.
  • Essayez un autre câble USB, parfois ils échouent aussi.

Réinitialisation automatique

  • Si votre Arudino ne prend pas en charge la fonction de réinitialisation automatique, assurez-vous de réinitialiser la carte quelques secondes avant de clignoter. (Arduino Diecimila, Duemilanove et Nano prennent en charge la réinitialisation automatique, tout comme LilyPad, Pro et Pro Mini avec connecteurs de programmation à 6 broches).
  • Attention : certains Arduino Diecimila ont été accidentellement flashés avec le mauvais bootloader. De tels modèles nécessitent une pression physique sur le bouton de réinitialisation avant de charger le programme ; voir ci-dessous pour plus d'informations à ce sujet.
  • Sur certains ordinateurs, vous devez appuyer sur le bouton de réinitialisation (sur la carte) après avoir appuyé sur le bouton Télécharger dans l'environnement Arduino. Expérimentez avec différents intervalles de temps entre les tapotements - de 0 à 10 secondes ou plus avec un intervalle d'environ 2 secondes.
  • Si vous obtenez cette erreur : "L'appareil ne répond pas correctement." essayez de flasher à nouveau le programme (en d'autres termes, réinitialisez la carte et appuyez à nouveau sur le bouton Upload).

Chargeur

  • Assurez-vous que votre Arduino dispose d'un chargeur de démarrage. Pour ce faire, redémarrez simplement votre appareil. La LED intégrée (connectée à la 13ème broche du contrôleur) doit clignoter. Si cela ne se produit pas, il est fort probable que votre carte n'ait pas de chargeur de démarrage.

Si les programmes ne clignotent toujours pas, posez une question sur le forum. Veuillez inclure les informations suivantes dans votre message :

  • La version de votre système d'exploitation.
  • Type de votre Arduino. S'il s'agit d'un Mini, LilyPad ou d'un autre modèle nécessitant des fils supplémentaires, incluez une photo de votre circuit si possible.
  • Avez-vous déjà réussi à flasher la carte. Si oui, veuillez décrire ce que vous avez fait avec la carte avant qu'elle ne cesse de fonctionner, quel logiciel avez-vous installé ou supprimé de votre ordinateur récemment ?
  • Messages qui apparaissent lorsque vous essayez de charger un programme dans Arduino. Pour recevoir des messages, maintenez la touche Maj enfoncée tout en cliquant sur le bouton Télécharger de la barre d'outils.

L'erreur "Le dossier de construction a disparu ou n'a pas pu être écrit" se produit (sur Mac OS X)

Avez-vous extrait l'Arduino.app de l'image disque (par exemple dans le dossier Applications) ? Sinon, vous ne pourrez pas télécharger d'exemples.

Arduino ne démarre pas après la mise à jour de Java sur Mac

La dernière mise à jour Java d'Apple tente d'utiliser les versions 64 bits des bibliothèques natives. Cependant, le logiciel Arduino utilise la version 32 bits de la bibliothèque RXTX. Au démarrage de l'Arduino, l'erreur suivante se produit :

Exception non détectée dans la méthode principale : java.lang.UnsatisfiedLinkError : /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib : aucune image appropriée trouvée. A trouvé : /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib : aucune architecture correspondante dans le wrapper universel

Pour résoudre ce problème, cliquez sur l'application Arduino (c'est-à-dire Arduino 16.app) dans la fenêtre du Finder, et dans le menu Fichier, choisissez Obtenir des informations. Sur le panneau, cochez la case "Ouvrir en mode 32 bits". Après cela, l'environnement Arduino devrait démarrer normalement.

Lors de la compilation du programme, une erreur java.lang.StackOverflowError se produit

L'IDE Arduino prétraite votre croquis en manipulant le code avec des expressions régulières. Parfois, certaines lignes de texte font échouer ce processus. Si vous voyez une erreur comme celle-ci :

Java.lang.StackOverflowError à java.util.Vector.addElement(Source inconnue) à java.util.Stack.push(Source inconnue) à com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)

Sur com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) sur com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) ) sur com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) à com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) à com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) à com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher .Java)

alors c'est exactement la situation. Vérifiez si le code contient des séquences de caractères inhabituelles associées à des "guillemets doubles", des "guillemets simples", une barre oblique inverse \, des commentaires, etc. Par exemple, des guillemets manquants ou, par exemple, une telle séquence "\"" (au lieu de """) .

Sketch ne s'exécute pas lorsque la carte est alimentée par une source externe (modèles Arduino Diecimila ou antérieurs)

Étant donné que la broche RX est déconnectée, le chargeur de démarrage Arduino peut recevoir du bruit au lieu de données, ce qui signifie qu'il n'expirera jamais et, par conséquent, le programme ne démarrera pas. Pour résoudre ce problème, essayez de connecter la broche RX à la terre avec une résistance de 10 kΩ (ou de connecter les broches RX et TX).

L'environnement de développement Arduino (sous Windows) se fige lorsque vous essayez de flasher le programme

Ce problème peut survenir en raison d'un conflit entre l'Arduino et le processus Logitech "LVPrcSrv.exe". Ouvrez le Gestionnaire des tâches et recherchez-le dans la liste des processus. S'il est là, vous devez terminer le processus avant de flasher le programme.

Arduino ne s'allume pas (le voyant d'alimentation vert ne s'allume pas)

Si vous utilisez un Arduino Diecimila ou plus ancien avec USB (par exemple NG), assurez-vous que le cavalier sur la carte (la petite pièce en plastique près du connecteur USB) est correctement réglé. Si la carte est alimentée par une source d'alimentation externe (connectée au connecteur approprié), le cavalier doit fermer les deux broches les plus proches du connecteur d'alimentation. Si la carte est alimentée par USB, le cavalier doit fermer les deux broches les plus proches du connecteur USB. Cette image montre la position du cavalier lorsque la carte est alimentée par USB.

(merci à mrbbp pour le post et la photo)

Le démarrage du programme sur Arduino Diecimila prend trop de temps (6-8 secondes)

Sur quelques Cartes Arduino Diecimila a accidentellement flashé le bootloader Arduino NG. Cela fonctionne bien, seulement il a un délai d'attente plus long après la réinitialisation de la carte (car l'Arduino NG n'implémente pas la réinitialisation automatique, ce qui nécessite une synchronisation manuelle du processus du micrologiciel). Vous pouvez reconnaître le bootloader de NG par la LED connectée à la broche 13 : dans Arduino NG, après avoir réinitialisé la carte, elle clignote 3 fois, et dans Diecimila - 1 fois. Si votre Diecimila a un bootloader de NG installé, alors avant de flasher le sketch van, vous devez appuyer physiquement sur le bouton de réinitialisation situé sur la carte. Il est également possible de flasher le bon chargeur de démarrage Diecimila dans l'appareil, voir la page du chargeur de démarrage pour plus de détails.

Erreur lors du lancement de arduino.exe sous Windows

Si une erreur se produit lors de l'exécution de arduino.exe sous Windows, telle que celle-ci :

Arduino a rencontré un problème et doit fermer.

puis essayez de démarrer Arduino en utilisant le fichier run.bat. Veuillez être patient car Le démarrage de l'environnement Arduino prend un certain temps.

Pourquoi Arduino ne fonctionne-t-il pas sur les anciennes versions de Mac OS X ?

Si vous obtenez une erreur comme celle-ci :

Erreur de lien (dyld) : dyld : /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino Symboles non définis : /Applications/arduino-0004/librxtxSerial.jnilib référence indéfinie à _printf$LDBL128 censé être défini dans / usr/lib/libSystem.B.dylib

alors vous devrez probablement mettre à jour votre système vers Mac OS X 10.3.9 ou une version ultérieure. Les bibliothèques système plus anciennes ne sont pas compatibles avec Arduino.

Merci à Gabe462 pour le message.

Lors du démarrage de l'environnement Arduino, une erreur UnsatisfiedLinkError se produit (avec un message sur la bibliothèque librxtxSerial.jnilib)

Si vous obtenez l'erreur suivante lors du démarrage d'Arduino :

Exception non détectée dans la méthode principale : java.lang.UnsatisfiedLinkError : Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib déjà chargé dans un autre chargeur de classe

alors vous avez probablement une ancienne version de la bibliothèque qui est responsable de la connexion. Recherchez les fichiers comm.jar ou jcl.jar dans le dossier /System/Library/Frameworks/JavaVM.framework/ ou dans les répertoires répertoriés dans les variables d'environnement CLASSPATH et PATH. (bug découvert par Anurag Sehgal)

Que signifie l'erreur "Impossible de trouver la classe principale" ?

Si l'erreur suivante se produit lors du démarrage de l'Arduino :

Lanceur de machine virtuelle Java : Impossible de trouver la classe principale. Le programme va quitter.

vérifiez si vous avez correctement décompressé le contenu de l'Arduino .zip - en particulier, assurez-vous que le dossier lib se trouve directement dans le répertoire Arduino et contient le fichier pde.jar.

Comment gérer les conflits cygwin sous Windows ?

Si cygwin est déjà installé sur votre machine, lorsque vous essayez de compiler le sketch dans l'environnement Arduino, l'erreur suivante peut se produire :

6 ? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** erreur fatale - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** discordance de version de la mémoire partagée du système détectée - 0x75BE0084/0x75BE009C.

Ce problème est probablement dû à l'utilisation de versions incompatibles de la DLL cygwin.

Dans la recherche Windows (Démarrer -> Rechercher), saisissez cygwin1.dll et supprimez tous les fichiers trouvés, à l'exception de la version la plus récente. La dernière version doit se trouver dans le dossier x:\cygwin\bin, où "x" est le lecteur sur lequel la distribution cygwin a été installée. Il est également recommandé de redémarrer votre ordinateur.

Assurez-vous également que cygwin n'est pas assis dans des processus lorsque l'environnement Arduino est en cours d'exécution. Vous pouvez également essayer de supprimer le fichier cygwin1.dll du dossier Arduino et le remplacer par le fichier cygwin1.dll de la distribution cygwin existante (qui se trouve très probablement dans le dossier c:\cygwin\bin).

L'environnement Arduino et le menu Outils s'ouvrent longtemps (sous Windows)

Si l'environnement Arduino démarre pendant très longtemps ou se fige lorsque vous essayez d'ouvrir le menu Outils, cela indique un conflit avec un autre périphérique du système. Au démarrage, ainsi qu'à l'ouverture du menu Outils, le logiciel Arduino tente d'obtenir une liste de tous les ports COM disponibles sur le système. Il est possible qu'un port COM spécifique créé par l'un des périphériques de l'ordinateur ralentisse ce processus. Vérifiez le Gestionnaire de périphériques. Essayez de désactiver tous les périphériques qui peuvent créer des ports COM dans le système (par exemple, les adaptateurs Bluetooth).

Le périphérique n'apparaît pas dans Outils | Port série

Si vous utilisez Arduino depuis USB, assurez-vous que les pilotes de la puce FTDI sont correctement installés (voir les instructions d'installation). Si vous utilisez un adaptateur USB-UART avec un Arduino standard (sans USB), vérifiez si les pilotes de cet adaptateur sont installés.

Après cela, assurez-vous que la carte est vraiment connectée : le menu avec la liste des ports est mis à jour à chaque fois que vous ouvrez le menu Outils, donc si vous venez de déconnecter la carte, elle ne sera pas dans cette liste.

Vérifiez si des programmes en cours d'exécution analysent tous les ports série, tels que les applications de synchronisation PDA, les pilotes Bluetooth-USB (tels que BlueSoleil), les démons virtuels, etc.

Sur les systèmes Windows, le numéro de port COM attribué par Arudino peut être trop grand. De l'utilisateur zeveland :

"Une petite note pour ceux qui ne peuvent pas flasher un programme Arduino avec un numéro de port COM élevé : essayez de diminuer le numéro de port associé à la puce FTDI."

"Mon système a un tas de ports COM virtuels d'un adaptateur Bluetooth, donc l'Arduino s'est vu attribuer COM17. L'IDE n'a pas pu trouver l'Arduino, j'ai donc supprimé les autres ports virtuels dans le Panneau de configuration (sous XP) et changé le port pour la puce FTDI sur COM2. Assurez-vous simplement que l'arduino utilise le port attribué et tout devrait bien se passer."

Si vous avez une ancienne version des pilotes FTDI sur un ordinateur Mac, vous devrez les désinstaller et installer dernière version. Voir ce fil de discussion pour les instructions d'installation.

Est-ce que gnu.io.PortInUseException est lancé lors du clignotement du code ou dans "Serial Monitor" (sur les systèmes Mac) ?

Erreur dans Serial. () gnu.io.PortInUseException : Application inconnue sur gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) sur processing.app.Serial. (Serial.java:127) sur processing.app.Serial. (Série.java:72)

Le plus souvent, cette erreur signifie que le port est occupé par une autre application. Par conséquent, vérifiez si des programmes fonctionnant avec des ports série ou USB sont en cours d'exécution, tels que des applications de synchronisation PDA, des gestionnaires de périphériques Bluetooth, certains pare-feu, etc. Sachez également que certains programmes (par exemple Max/MSP) laissent le port série ouvert, même lorsque vous ne l'utilisez pas - il est donc préférable de fermer tous les utilitaires qui utilisent le port série et de quitter complètement ces applications.

Si cette erreur se produit dans l'environnement de traitement ou sur Arduino version 0004 ou antérieure, vous devez exécuter le script macosx_setup.command et redémarrer l'ordinateur. Dans Arduino 0004, ce script a changé et tous les utilisateurs doivent l'exécuter (même ceux qui ont exécuté le même script fourni avec la version Arduino 0003). Vous devez également supprimer le contenu du dossier /var/spool/uucp.

Des problèmes surviennent avec les pilotes USB FTDI

L'esquisse ne démarre pas lors de la mise sous tension ou de la réinitialisation de l'Arduino

Cela est probablement dû au fait que vous envoyez des données de l'ordinateur à la carte immédiatement après sa mise sous tension. Les premières secondes après la réinitialisation, le bootloader (un programme flashé dans le microcontrôleur de la carte) attend que l'ordinateur envoie une nouvelle esquisse à écrire dans la mémoire de la carte. Si pendant ces quelques secondes les données ne sont pas arrivées, le loader terminera son travail par timeout et lancera le programme précédemment chargé. Si vous envoyez des données en continu, le chargeur n'expirera pas et n'exécutera jamais l'esquisse téléchargée. Par conséquent, vous devez soit trouver un moyen de "maintenir" l'envoi de données pendant quelques secondes après la mise sous tension de l'appareil (par exemple, en programmant le contrôleur pour envoyer des données à l'ordinateur dans le bloc de configuration ()), soit flasher votre programme dans le microcontrôleur via le chargeur de démarrage à l'aide d'un programmeur externe.

Le firmware semble réussir, mais rien ne fonctionne

Vous avez mal sélectionné un appareil dans le menu Outils > Microcontrôleur. Assurez-vous que le microcontrôleur que vous choisissez correspond à celui de votre carte (ATmega8 ou ATmega168) - le modèle de contrôleur est répertorié sur la plus grande puce.

Assurez-vous que l'alimentation électrique est stable. Des interférences ou des pannes de courant peuvent provoquer des erreurs de téléchargement de croquis.

Un autre raison possible- la taille du croquis est trop grande pour votre appareil. Lors du téléchargement d'un croquis, l'Arduino 0004 vérifie s'il y a suffisamment d'espace dans la mémoire de l'ATmega8 pour que le programme soit chargé. Dans le même temps, Arduino effectue ses calculs en se basant sur le fait que le chargeur dans la mémoire du contrôleur occupe 1 Ko. Peut-être que votre appareil a une ancienne version du chargeur de démarrage de 2 Ko flashé au lieu de 1 Ko, puis sur la mémoire flash de 8 Ko du microcontrôleur ATmega8, 2 Ko seront déjà occupés. En conséquence, dans ce cas, seule une partie de l'esquisse sera chargée dans le contrôleur, mais le programme ne le sait pas a priori, ce qui entraînera des réinitialisations constantes de l'appareil.

Si vous avez un programmeur (pour un port parallèle ou AVR-ISP), vous pouvez mettre à jour la version du chargeur de démarrage dans le microcontrôleur à l'aide de Outils | Graver le chargeur de démarrage. Sinon, vous pouvez simplement ajuster les paramètres de l'environnement Arduino en spécifiant la quantité de mémoire programme disponible dans la variable upload.maximum_size située dans le fichier de configuration (voir les instructions pour savoir où trouver ce fichier). Modifiez la valeur 7168 qui y est spécifiée en 6144, après quoi l'environnement de développement vous avertira correctement lorsque la taille d'esquisse autorisée est dépassée.

Comment puis-je réduire la taille du firmware ?

Le microcontrôleur ATmega168 de l'Arduino est un modèle assez peu coûteux qui ne dispose que de 16 Ko de mémoire programme, ce qui n'est en fait pas beaucoup (dont 2 Ko sont déjà pris par le bootloader).

Si vous utilisez des calculs en virgule flottante dans votre programme, essayez de réécrire le code pour utiliser des calculs entiers - cela économisera environ 2 Ko de mémoire. Au début du programme, supprimez les directives #include de toutes les bibliothèques inutilisées.

Vérifiez également si le code du programme peut être optimisé pour le rendre plus court.

Nous travaillons constamment à l'optimisation du noyau Arduino afin de réduire l'espace occupé par ses fonctions dans le volume total de l'esquisse compilée, et laisser le plus d'espace possible pour l'écriture de programmes.

Aucun signal PWM (sortie analogique) n'est généré lors de l'appel de la fonction analogWrite() sur des broches autres que 3, 5, 6, 9, 10 et 11

Dans le microcontrôleur Arduino (ATmega168), la prise en charge matérielle de PWM / analogWrite () n'est implémentée que sur certaines broches. Par conséquent, l'appel de la fonction analogWrite() sur n'importe quelle autre broche du contrôleur générera soit un niveau de signal élevé (5 V - pour les valeurs supérieures à 128), soit niveau faible(0 V - pour les valeurs inférieures à 128). Dans les anciennes versions de l'Arduino avec le microcontrôleur ATmega8, le support PWM n'est implémenté que sur les broches 9, 10 et 11.

Pourquoi des erreurs se produisent-elles à propos de fonctions ou de types non déclarés ?

L'environnement de développement Arduino essaie de générer automatiquement des prototypes de fonctions définies par l'utilisateur, afin qu'elles puissent être placées dans n'importe quel ordre dans votre programme. Cependant, le processus de prototypage n'est pas parfait et conduit parfois à des bugs déroutants.

Par exemple, si vous déclarez votre type de données dans un programme, puis créez une fonction qui utilise ce type, une erreur se produira lorsque vous essayez de compiler l'esquisse. Dans ce cas, l'erreur se produit car le prototype généré automatiquement pour cette fonction sera situé AVANT la déclaration de type.

Si vous déclarez une fonction qui renvoie un résultat 16 bits (par exemple, de type "unsigned int"), l'environnement ne comprendra pas qu'il s'agit d'une fonction et, par conséquent, ne créera pas son prototype. Dans ce cas, vous devrez l'écrire manuellement, ou placer la déclaration de cette fonction dans le code du programme ci-dessus - avant qu'elle ne soit appelée pour la première fois dans le programme.

Lorsque vous essayez de flasher le programme, une erreur se produit "signature de périphérique invalide"

Erreur suivante :

Avrdude : Ouais ! Signature d'appareil non valide. Vérifiez les connexions et réessayez, ou utilisez -F pour annuler cette vérification.

peut signifier l'une des deux choses suivantes : soit vous avez sélectionné le mauvais tableau dans le menu Outils > Tableau, soit vous utilisez la mauvaise version d'avrdude. Pour télécharger des croquis sur Arduino, une version légèrement modifiée d'avrdude est utilisée. La version standard envoie des requêtes identifiant l'appareil dans un format que le chargeur de démarrage Arduino ne comprend pas, ce qui entraîne une erreur. Assurez-vous donc que vous utilisez la version exacte d'avrdude fournie avec l'Arduino (