[Non Reglé]Communication impossible, Arduino UNo Rev3.

Bonjour à tous !

Depuis quelques semaines, je possède un Arduino UNO Rev3.
J'ai fais quelques réalisations diverses avec, et dernièrement, je m'en suis servi plus particulièrement pour un projet scolaire.

Alors que je testais différentes modifications apportées au programme, d'un coup, en voulant le recharger, j'ai commencé à avoir l'erreur suivante :
avrdude: stk500_getsync(): not in sync: resp=0x00.

Après quelques recherches sur le net, j'ai testé plein de manipulations : changement de PC, ré-installation des pilotes, changement de port COM, changement de câble USB, etc...

J'ai lu que ceci pouvait être dû au fait que l'ATMEGA ai pu cramer. Cependant, il continue d'exécuter le programme (l'Arduino contrôle entre autre avec un plateau tournant, et un bouton-poussoir, il effectue bien le programme normal).

La connexion USB fonctionne, puisque le PC reconnait bien si l'Arduino est connecté ou non.

Je vous envoi en fin de message le dernier code uploadé sur l'Arduino, et donc qui tourne en ce moment dessus...

Merci d'avance pour vos réponses !

#include <Stepper.h>
const int stepsPerRevolution = 100;  // change this to fit the number of steps per revolution

int rotation = 0;

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 4,5,6,7);   



void setup() {
  Serial.begin(9600);  
  pinMode(3, OUTPUT);   // ECLAIRAGE VOITURE -> Interface Puissance !
  
  pinMode(4, OUTPUT);  // MOTEUR PAP  -> Interface Puissance
  pinMode(5, OUTPUT);  // MOTEUR PAP  -> Interface Puissance
  pinMode(6, OUTPUT);  // MOTEUR PAP  -> Interface Puissance    
  pinMode(7, OUTPUT);  // MOTEUR PAP  -> Interface Puissance  
  
  pinMode(8, INPUT);   // BOUTON UTILISATEUR  
  pinMode(9, OUTPUT);  // LED BOUTON UTILISATEUR
  
    myStepper.setSpeed(100);
}

void loop() {
  int sens = 0;
  digitalWrite(3, LOW);  // ECLAIRAGE CAVITE OFF
  digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
  
      //INCREMENTE
            rotation = 0;
            while(rotation < 15)
              {
            myStepper.step(stepsPerRevolution);
            rotation++;
              }
            sens = 1;
  
  delay(1000);
  int boucle = 0;
while(boucle == 0)
  {  
  digitalWrite(3, HIGH); // ECLAIRAGE CAVITE ON
  digitalWrite(9, HIGH);  // LED BOUTON UTILISATEUR ON
  int temps_boucle = 0;
  int signal = LOW;
  while (temps_boucle < 50)
    {
      signal = digitalRead(8);
      if (signal == HIGH)
        {
          digitalWrite(3, LOW);  // ECLAIRAGE CAVITE OFF
          digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
          
          if (sens == 1) // REMISE A NIVEAU
            {
              //DECREMENTE
                  int rotation = 0;
                  while(rotation < 10)
                    {
                  myStepper.step(-stepsPerRevolution);
                  rotation++;
                    }
              sens = 0;
            }
            
          delay(1000);
          Serial.print('Z'); // ENVOI SIGNAL PC
          
          digitalWrite(3, HIGH); // ECLAIRAGE CAVITE ON
          
          delay(5000); // VIDEO - PARTIE HISTORIQUE
          
          digitalWrite(3, LOW); // ECLAIRAGE CAVITE OFF
          
          //INCREMENTE
          
                rotation = 0;
                while(rotation < 10)
                  {
                myStepper.step(stepsPerRevolution);
                rotation++;
                  }
                    
          digitalWrite(3, HIGH); // ECLAIRAGE CAVITE ON
          sens = 1;
          
          delay(5000); // VIDEO - PARTIE EF1
          
          // PRISE PHOTOS ET IMPRESSION
          
          int reprise = 0;
          while (reprise != 'A')
            {
              	while (Serial.available() == 0) 
                  {
                  }
		reprise = Serial.read(); // lit le 1er octet arrivé
                  
            }
          
          digitalWrite(9, HIGH);  // LED BOUTON UTILISATEUR ON
          
          int compteur = 0;
          signal = LOW;
          
          while (compteur < 250 && signal == LOW)
            {
              signal = digitalRead(8);
              compteur++;
              delay(20);
            }  
            
          digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
            
          if (signal == HIGH)
            {
              // Utilisateur veut prendre la photo
              Serial.print('Z'); // ENVOI SIGNAL PC

              // PRISE PHOTO & ATTENTE RECEPTION SIGNAL
              reprise = 0;
              while (reprise != 'A')
                {
                  while (Serial.available() == 0) 
                    {
                    }
      		  reprise = Serial.read(); // lit le 1er octet arrivé
                }
                      
                  digitalWrite(9, HIGH);  // LED BOUTON UTILISATEUR ON
                        
                  compteur = 0;
                  signal = LOW;
                  
                  while (compteur < 250 && signal == LOW)
                    {
                      signal = digitalRead(8);
                      compteur++;
                      delay(20);
                    }  
                    
                  digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
                                 
                                digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
                  
                  
                            if (signal == HIGH)
                              {
                                // Utilisateur veut imprimer sa photo
                                Serial.print('Z'); // ENVOI SIGNAL PC
                                
                                reprise = 0;
                                while (reprise != 'A')
                                  {
                                    while (Serial.available() == 0) 
                                      {
                                      }
                        	      reprise = Serial.read(); // lit le 1er octet arrivé
                              }   
                    }          
                }           
            }
      else
        {
         temps_boucle++; 
         delay(100);
        }
    }
  digitalWrite(3, LOW);  // ECLAIRAGE CAVITE OFF
  digitalWrite(9, LOW);  // LED BOUTON UTILISATEUR OFF
  temps_boucle = 0;
  
          if (sens == 1)
            {
              //DECREMENTE
          int rotation = 0;
          while(rotation < 8)
            {
          myStepper.step(-stepsPerRevolution);
          rotation++;
             }
 delay(5000);
 sens = 0;

    } 
   else
    {
      //INCREMENTE
            rotation = 0;
            while(rotation < 9)
              {
            myStepper.step(stepsPerRevolution);
            rotation++;
              }
sens = 1;
delay(5000);
    } 
  }
}

je vois que le code qui est sensé tourner sur l'Arduino (code donnée en exemple) fait des Serial.write() et des Serial.read().

Peux tu confirmer que la communication entre le PC et l'Arduino fonctionne, que le programme réagit aux commandes envoyées depuis le PC et retourne les infos qu'il doit ?
Sinon, il y a peut être un programme sur le chip d'interface USB/Serial.

Si oui, c'est plutot le circuit de reset qui est out.
Essaye alors d'appuyer sur le bouton reset dès le 1er message que avrdude affiche :

avrdude: Send: 0 [30]   [20]

J'ai l'impression que je n'ai aucune communication en serial, lorsque le programme est censé envoyer des infos via le Serial, la led TX ne s'allume pas.

Donc quelque chose de HS sur la liaison série.

Tu as essayé un shield spécial ?
Quelque chose qui aurait pu cramer la liaison série du ATmega (broches Arduino 0 et 1) ?

hannnnnn, :o

Me dis pas que t'as connecté directement le port série du PC à pin 0-1 de l'arduino ????? :drooling_face:

barbudor:
Donc quelque chose de HS sur la liaison série.

Tu as essayé un shield spécial ?
Quelque chose qui aurait pu cramer la liaison série du ATmega (broches Arduino 0 et 1) ?

Non, pas spécialement, à part une interface de puissance (sur les ports digitaux).

Sinon, Vohu, je ne suis pas suicidaire non plus au point de brancher directement les ports Rx-Tx sur un cable série ^^.

J'ai commandé deux AT-MEGA, je vais installer le bootloader Arduino dessus, en espérant que le problème vienne bien de là.
Avez-vous une idée de l'origine du problème si il s'agit bien de cela ?

Bonjour !

Après quelques mois assez occupé, j'ai décider de me remettre au débugage de ma carte.

J'ai un nouvel AT-MEGA, (acheté avec le bootloader intégré) et quelques uns sans bootloader.
Le problème est toujours là, voici l'erreur détaillée :

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM11
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude done.  Thank you.

Visiblement, aucun signal n'est renvoyé par l'Arduino, le dysfonctionnement pourrait provenir de la carte en elle même ?