[résolu]Arduino qui reboot quand il est connecter à l'usb

Bonjour Tout le monde!

bien je suis en train de créer un projet de gestion et contrôle de mon puisard de sous sol avec onduleur pompes, contrôle des intensité, lcd 20x4 etc... le projet avance très bien, (gestion de plusieurs pages sur le lcd). Je précise que j'ai une alimentation stab 5VCC.

Mon problème parce qui l'en faut, c'est que lorsque mon programme tourne a merveille avec l'arduino uno ou meme nano connecté à l'usb le programme reboot et reprends de zéro au bout de quelque dizaine de secondes, mais si je débranche l'usb pas de problème sa tourne pendant des heures sans soucis.

si vous avez une idée je suis preneur

le uno r3 et authentique et le nano copie chinoise.

merci

bonjour , l'arduino doit être alimenté en 7 v minimum sur la prise jack , merci de nous donner un schéma et photo pour que l'on vous donne des conseils concernant votre problème .salutation

Bonjour Artnow,

J'alimente le circuit avec une alimentation stabilisé a 5.00vcc sur les pin VIN et GND. Se qui est surprenant si je fais tourner avec juste l'alim sa marche impec. et si je laisse l'alim et que je branche l'usb pour chargé le programme sa marche mais au bout de quelque dixaine de seconde elle reboot. Et dsl je n'ai pas de schéma j'ai tout fais en live.

Je viens de de régler mon alim a 7.00vcc et c'est toujours pareil.

je me demande si cela ne viendrait pas de mon code

#include <LiquidCrystal.h>!   //librairie LCD
#include "RTClib.h"           //librairie horloge


//Variables divers
int Ecran;
int Anci_Eta_BP1=0;int New_Etat_BP;
String Num_Ecr;

//Variable d'entrées et sorties
const int BP1 = 8;
const int Sortie9=9;
const int Sortie7=7;

//Variable pour couler le temps
unsigned long Ancien_Millis = 0;
const long interval = 30*1000; // Temps avant extection du retroéclairage (ms)

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
RTC_Millis rtc;

//=================================Caractères spéciaux
byte smiley[8] = {
   B00000,
   B10001,
   B00100,
   B00100,
   B10001,
   B01110,
   B00000,
};
byte FULL[8] = {
   B11111,
   B11111,
   B11111,
   B11111,
   B11111,
   B11111,
   B11111,
};
//===================================================


void setup () {
   lcd.begin(20,4);
   lcd.createChar(0, smiley);
   lcd.createChar(1, FULL);
   rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
   Ecran=1;
   pinMode(BP1, INPUT);
   pinMode(Sortie9,OUTPUT);
   pinMode(Sortie7,OUTPUT);
   //(année, mois, jour,heure,minute,seconde)
   // rtc.adjust(DateTime(2016, 1, 4, 10, 56, 0));
}

//================================================================Programme

void loop () {
   unsigned long Actuel_Millis = millis();
   New_Etat_BP=digitalRead(BP1);
   if (Anci_Eta_BP1!=New_Etat_BP){
       if(New_Etat_BP==LOW)
         {
             int val_Sortie7;
             val_Sortie7=digitalRead(Sortie7);
             if (val_Sortie7!=LOW)   //Empeche le changement d'ecran à la première puls allumage du rétroéclairage
             {
                 Ecran=Ecran+1;
                 if (Ecran>5)
                 {
                     Ecran=1;
                 }
                 lcd.clear(); 
             }
             
             digitalWrite(Sortie9,HIGH);
             digitalWrite(Sortie7,HIGH);
             Ancien_Millis=Actuel_Millis;
         }
       else
         {
             digitalWrite(Sortie9,LOW);
         }
       Anci_Eta_BP1=New_Etat_BP;
   }
   switch(Ecran){
     case 1:
           lcd.setCursor(3,0);
           lcd.print(Date_FR());
           lcd.setCursor(6,1);
           lcd.print(Heure_FR());
           break;
     case 2:
           lcd.setCursor(0,0);
           lcd.print("Fonctionnement");
           lcd.setCursor(0,1);
           lcd.print("Pompe 1 = ON");
           lcd.setCursor(0,2);
           lcd.print("Pompe 2 = OFF");
           break;
     case 3:
           lcd.setCursor(0,0);
           lcd.print("Parametrages");
           lcd.setCursor(9,2);
           lcd.write((uint8_t) 0);
           lcd.write((uint8_t) 1);
           break;
     case 4:
           float var;float val;
           val=355;
           val=val/1000*100;
           var=20;
           var=var/100*val;
           lcd.setCursor(0,0);
           lcd.print("Niveau d'eau");
           lcd.setCursor(0,2);
           for (int i=1; i <= var; i++){
               lcd.write((uint8_t) 1);
           }
           lcd.setCursor(8,1);
           lcd.print(String(int(val))+"%");
           break;
     case 5:
           lcd.setCursor(0,0);
           lcd.print("Intensite pompes");
           lcd.setCursor(0,1);
           lcd.print("Pompe 1 = 6,1A");
           lcd.setCursor(0,2);
           lcd.print("Pompe 2 = 5,9A");
           break;
   }
   Num_Ecr=Ecran;
   Num_Ecr=Num_Ecr+"/5";
   lcd.setCursor(17,3);
   lcd.print(Num_Ecr);

   
   if (Actuel_Millis - Ancien_Millis >= interval) {
         digitalWrite(Sortie7,LOW);
         lcd.clear();
         Ecran=1;
   }    
}

//=========================================================================Fonctions

String Date_FR () //Date en français
{
   String Annee; String Mois; String Jour;String Lcd_Date;String JourSemaine;
   DateTime now = rtc.now();
   Annee=now.year();Mois=now.month();Jour=now.day();JourSemaine=now.dayOfWeek();
   switch (JourSemaine.toInt()){
         case 0:
               JourSemaine="Dim";
               break;
         case 1:
               JourSemaine="Lun";
               break;
         case 2:
               JourSemaine="Mar";
               break;
         case 3:
               JourSemaine="Mer";
               break;
         case 4:
               JourSemaine="Jeu";
               break;
         case 5:
               JourSemaine="Ven";
               break;
         case 6:
               JourSemaine="Sam";
               break;
         
   }
   Lcd_Date=JourSemaine+" "+H00_FR(Jour)+"/"+H00_FR(Mois)+"/"+Annee;
   return Lcd_Date;
}
String Heure_FR() //Heure française
{
   String Tps_h;String Tps_min;String Tps_sec;String Tps_heure;
   DateTime now = rtc.now();
   Tps_h=now.hour(); Tps_min=now.minute();Tps_sec=now.second();
   Tps_heure=H00_FR(Tps_h)+":"+H00_FR(Tps_min)+":"+H00_FR(Tps_sec);
   return Tps_heure;
}
String H00_FR(String Valeur)  //Ajoute les 0 à la date ou l'heure
{
   String Resultat;String a;
   a=10;
   if (Valeur.toInt()<a.toInt()){
       Resultat="0"+Valeur;
   }
   else
   {
       Resultat=Valeur;
   }
   return Resultat;
}

Bon, j'ai résolu mon problème en mettant un condo 10micro Farad entre reset et gnd.