Résolution du problème de téléversement rencontré avec les clones Arduino Uno

Les clones Arduino sont des produits identiques aux Arduino officiels, pour un prix inférieur. Néanmoins, ils peuvent dans certains cas vous poser problème. Vous pouvez notamment rencontrer un problème de téléversement impossible, accompagné de l’erreur:

avrdude: skt500_recv(): programmer is not responding

ou

avrdude: skt500_getsync() attempt X of 10: not in sync: resp=0xXX

Lorsque votre Arduinho est branché à votre ordinateur, vous voyez la led ON et la led L allumée en permanence, et le bouton RESET ne fonctionne plus.

Nous vous proposons deux solutions pour palier à ce problème.

Avant tout vérifiez que :

  • Vous avez bien selectionné  » Arduino Uno  » dans le menu Outils > Type de carte.
  • Vous avez bien selectionné le bon port COM.

1ère solution: Mise à jour du pilote

Il se peut que le pilote de votre Arduino ne soit pas à jour, ou que ce ne soit pas le bon qui soit installé. Les clones Arduinos utilisent le chip CH340 pour la liaison USB. Vous pouvez télécharger son pilote ici:

http://www.wch.cn/download/CH341SER_EXE.html

Il ne vous reste plus qu’à l’installer. Votre Arduino devrait alors apparaître dans le gestionnaire de périphériques dans « Ports (COM et LPT) » sous cette forme:

hy

2ème solution: télécharger le bootloader sur l’ATmega

Il se peut que le bootloader de l’ATmega ne soit pas installé, ou non fonctionnel. Le tutoriel ci dessous est pour un Uno mais fonctionne également avec les autres modèles). Vous pouvez le télécharger vous même. Pour cela il vous suffit d’avoir:

  1. Branchez votre Arduino fonctionnel à votre ordinateur. Téléverser le programme que vous trouverez dans Fichier > Exemples > ArduinoISP (ne fonctionne pas si vous avez déjà placé le condensateur, pensez à l’enlever).
    arduinoisp
  2. Déconnectez votre Arduino de l’ordinateur.
  3. Réalisez le montage suivant:
Fix_Chinese_Arduino_clone_problems1629051120step4
IMG_7682
Arduino fonctionnelArduino clone non fonctionnel
Pin 10RESET
Pin 11Pin 11
Pin 12Pin 12
Pin 13Pin 13
5V5V
GNDGND

4. Rebranchez l’Arduino fonctionnel à votre ordinateur à l’aide du câble USB. Ouvrez un simple programme Blink par exemple. Allez dans Outils > Type de carte et selectionnez la carte que vous voulez « réparez ». Ici donc Arduino Uno.

5. Dans Outils > Programmeur , cliquez sur Arduino as ISP

6. Allez dans Outils et cliquez sur Graver la séquence d’initialisation, attendez jusqu’à bien avoir le message « Gravure de la séquence d’initialisation terminée ».

Voilà, votre Arduino devrait maintenant fonctionner ! Vous pouvez le vérifier en téléversant le programme de votre choix.

[Tuto] Utiliser un shield LCD

Lire la valeur d’un capteur

Le but de ce montage est de mettre en place un montage rapide avec un shield (= carte d’extension) comprend un écran LCD et des boutons poussoirs. Le programme sera simple, il affichera sur l’écran le nom du bouton pressé.

Ce montage est une adaptation de http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

Composants nécessaires :

Principe du montage :

Le montage de shield est très simple. Il suffit de poser le shield directement sur le Arduino.

Composants

 

Réalisation du montage :

Pour réaliser le montage poser le shield sur le Arduino (Attention au sens). Guidez vous en fonction des bornes A0 à A5.

Montage 1
Montage 2
Montage 4
Montage 3

Remarque : Le potentiomètre (composant bleu avec une vis) permet le réglage du contraste.

Fonctionnement du shield :

Voici comment est réellement câblé le shield :

Bornes

Fonction

Analog 0

Bouton (select, up, right, down and left)

Digital 4

DB4

Digital 5

DB5

Digital 6

DB6

Digital 7

DB7

Digital 8

RS (données ou sélection du signal)

Digital 9

Activation (Enable)

Digital 10

Contrôle du rétroéclairage

Programmation du montage :

Le programme va nous afficher sur l’écran le nom des boutons appuyés. Pour cela il va utiliser une librairie spécific au LCD, la librairie « LiquidCrystal.h ». Cette librairie comprend de très nombreuses fonctions pour en avoir la liste complète et la description, je vous invite à aller visiter le site officiel http://arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary

// Charger la librairie LiquidCrystal
#include <LiquidCrystal.h>

// Définir les pins utilisées par le LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Définir les variables globales
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5

// Fonction lire les boutons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // Lire les valeurs du capteurs
// Les valeurs renvoyées sont sensés être: 0, 144, 329, 504, 741
// Il y a une erreur possible de 50
if (adc_key_in > 1000) return btnNONE; // Nous découpons les valeurs possibles en zone pour chaque bouton
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;
return btnNONE; // On renvoie cela si l'on est au dessus de 850
}

void setup() // Initialisation
{
lcd.begin(16, 2); // Démarrer la librairie
lcd.setCursor(0,0);
lcd.print("Appuyer"); // Afficher un message simple
}

void loop() // Fonction principale
{
lcd.setCursor(0,1); // Placer le curseur au début de la seconde ligne
lcd_key = read_LCD_buttons(); // Lire les boutons

switch (lcd_key) // Selon le bouton appuyer
{
case btnRIGHT: // Pour le bouton "Right"
{
lcd.print("RIGHT "); // Afficher "Right"
break;
}
case btnLEFT: // Pour le bouton "left"
{
lcd.print("LEFT "); // Afficher "Left"
break;
}
case btnUP: // Pour le bouton "Up"
{
lcd.print("UP "); // Afficher "Up"
break;
}
case btnDOWN: // Pour le bouton "Down"
{
lcd.print("DOWN "); // Afficher "Down"
break;
}
case btnSELECT: // Pour le bouton "Select"
{
lcd.print("SELECT"); // Afficher "Select"
break;
}
case btnNONE: // Sinon
{
lcd.print("NONE "); // Afficher "None"
break;
}
}

}

Il reste à brancher le Arduino pour compiler le programme et le téléverser.

Une fois terminé cela nous donne :

NONE
LEFT
RIGHT

 Pour aller plus loin :

On peut à partir de là afficher tout ce que l’on veut. Les possibilités sont très grande.