Problème de téléversement avec un Arduino nano

bonjours à tous, j'ai récemment acheter un Arduino nano pour faire une montre, quand je l'ai reçu j'ai réussi a téléverser mon code et a le tester j'ai régler tous les problème du code et je me suis retrouver avec la version final du code. je les téléverser et tout fonctionnait parfaitement. Au moment de poursuivre le projet j'ai du enlever les broche GPIO pour avoir une carte plate. sauf que j'ai appuyer sans faire exprès sur le bouton "RESET" ce qui a réinitialiser le code et au moment de le retéléverser il ne veut plus, il a bien réussi la compilation mais au moment d'upload le le code il me met ça :

Le croquis utilise 16606 octets (54%) de l'espace de stockage de programmes. Le maximum est de 30720 octets.
Les variables globales utilisent 584 octets (28%) de mémoire dynamique, ce qui laisse 1464 octets pour les variables locales. Le maximum est de 2048 octets.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x2b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x2b
Failed uploading: uploading error: exit status 1

si quelqu'un serait m'aider je suis partant !

pour ce que cela intéresse voici mon code :

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
RTC_DS3231 rtc;
const int batteryPin = A1;
const int buttonPin = 2;              // Broche du bouton
const float TensionMin = 3.2;         // Tension min
const float TensionMax = 4.2;         // Tension max
bool buttonPressed = false;           // Variable pour suivre l'état du bouton
unsigned long buttonPressedTime = 0;  // Variable pour enregistrer le moment où le bouton a été pressé
void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT_PULLUP);  // Configuration de la broche du bouton comme entrée avec résistance de pull-up interne
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1)
      ;
  }
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;)
      ;
  }
  display.display();
  delay(2000);
  display.clearDisplay();
  // Set text size for time
  display.setTextSize(2);
  // Set text size for date
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
}
void loop() {
  // Vérifier si le bouton est pressé
  if (digitalRead(buttonPin) == LOW && !buttonPressed) {
    buttonPressed = true;          // Enregistrer que le bouton a été pressé
    buttonPressedTime = millis();  // Enregistrer le moment où le bouton a été pressé
  }
  // Vérifier si le bouton a été pressé il y a moins de 5 secondes
  if (buttonPressed && millis() - buttonPressedTime < 5000) {
    displayDateTime();  // Afficher l'heure et la date
  } else {
    buttonPressed = false;   // Réinitialiser l'état du bouton
    display.clearDisplay();  // Effacer l'écran
  }
  display.display();
}
void displayDateTime() {
  // Afficher l'heure, la date et la charge de la batterie
  DateTime now = rtc.now();
  display.clearDisplay();

  // Set text size for time
  display.setTextSize(2);
  display.setCursor(15, 20);  // Décalage vers la gauche et légère descente de l'heure
  display.print(now.hour(), DEC);
  display.print(':');
  if (now.minute() < 10) {
    display.print('0');
  }
  display.print(now.minute(), DEC);
  display.print(':');
  if (now.second() < 10) {
    display.print('0');
  }
  display.println(now.second(), DEC);

  // Set text size for date
  display.setTextSize(1);
  display.setCursor((SCREEN_WIDTH - 10 * 5.3) / 2, (SCREEN_HEIGHT - 8) / 2 + 25);  // Affichage de la date sous l'heure
  display.print(now.day(), DEC);
  display.print('/');
  display.print(now.month(), DEC);
  display.print('/');
  display.println(now.year(), DEC);
}

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Non, appuyer sur le bouton reset ne réinitialise pas le code. Cela ne fait que relancer ton programme qui est toujours en mémoire Flash. Le bouton reset ne peut pas effacer ton code.
Si tu n'arrives plus à télécharger du code il faut :

  • vérifier que le bon type de carte est sélectionner dans l'IDE. Concernant la Nano il faut en plus choisir le bon bootloader dans les options.
  • vérifier le câble que tu utilises pour le téléchargement, intégrité du câble et s'assurer que c'est bien un câble data pas seulement un câble de charge.
  • comme tu as bricolé la carte vérifie que tu n'as pas de coulure de soudure sur la carte et que rien n'a été abîmé pendant l'opération.

Bonjour
j'ai reçu dernièrement 4 nano chinois ils sont tous avec un oldbootloader.

certains refusent le chargement ! d'autres acceptent et après plusieurs chargement se mettent eux aussi en défaut !
solution pour moi charger le bootloader classique .. plus de problèmes.
je me demande pourquoi ils utilisent encore ce old bootloader ...

Re j'ai essayé de téléverser le code avec un raspberry pi 4 avec Arduino IDE 1.8.3. Quand j'ai réessayé même problème j'ai donc utiliser le programme EEPROOM_clair ce qui a servi a reset le code et la mémoire en faisant cet action, j'ai pu remettre le nano comme quand je l'avais acheté j'ai pu a nouveau téléverser le code et il a abouti. Pour ce que cela intéresse, voici comment procéder pour reset entièrement le nano, aller dans fichier→Exemple→EEPROOM→EEPROOM_clair. Une fenêtre va s'ouvrir vous n'avez plus qu'à configurer la carte et a téléverser le code et attendre que cela soit fini et vous pouvez réessayer de téléverser votre code dans le nano. Pour moi ça a marché j'espère que j'ai pu en aider.

Ce n'est peut-être pas qu'un problème de bootloader.

C'est peut-être le début d'un problème de fin de vie de l'atmega328p.

Microchip a simultanément mis l'atmega 328p en "Deprecated" et en a doublé le prix de vente, dès fois que certains auraient la comprenette difficile.

A coté de cela, certains autres, ont flairé un bon coup et ont mis sur le marché un micro, non pas une copie, mais un micro "interchangeable" avec le produit Microchip et bien sûr à un prix très bas, plus bas que l'atmega328PB le successeur compatible du 328p.

L'interchangeabilité ne serait-elle pas parfaite et necessiterait-elle encore des adaptations ?
Cette "*seconde source *" ne s'appelle pas atmega328p, elle a son propre nom (que je n'ai pas noté). Elle est légale.

Sauf falsifications il est bien gravé ATMEL MEGA 328P sur le micro. J ai vérifié les 4.

Tu pense que la puce serait en fin de vie ? Moi j'ai fais bcp de téléversement dans la carte. Je ne sais pas si c'est cela qui l'a cosé le souci. Après la carte ya pas besoin de la formater entre chaque télé versement ?

L'EEPROM n'a absolument rien à voir avec le code. Faire un reset de l'EEPROM ne fait qu'effacer quelques données dans l'EEPROM si jamais tu y avais mis quelque chose.

Ou alors le code que tu avais dans la Nano venait lire quelque chose dans 'EEPROM et la plantait.

Bah moi après l'avoir reset j'ai pu de nouveau re upload les code sans problème alors que avant j'étais bloqué

Re-bonjour j'ai refait mon montage mais rien ne marche même problème que avant avec les mêmes erreurs et cet fois ci le reset de l'EEPROM n'a rien changé. Écran noir, Arduino nano qui ne veut plus recevoir de code. Alors que je n'ai rien changé dans le code, avant tout marchait bien et la depuis que j'ai eu ce problème plus rien ne marche. Je ne sais plus quoi faire, je ne sais pas si mon Arduino nano est défectueux car c'est trop bizarre. Si qlq peut me guider un peu plus mais pour moi l'arduino nano est mort...

Dans ce cas là, on repart de zéro.

  • la Nano seule,
  • branchée sur le PC,
  • avec un câble dont tu es sûr,
  • tu charges blink

Le code ne veut pas se téléverser j'ai la même erreur qu'au début...

Tu as bien essayé les 2 versions de bootloader?

Oui, mais rien ne fais...

Il faudrait peut etre reflasher un bootloader

Comment on fait ?

Il faut avoir un programmateur ou au minimum un arduino qui fonctionne et le flasher avec un programme arduino as isp
Faire les branchement et utiliser la fonction ”graver la sequence d initialisation”
C est plus difficile a expliquer qu a faire. Il y a de nombreux exemples sur internet.

Salut !
Je n'ai malheureusement pas d'autre Arduino a ma disposition, ce projet était sensé me faire entrer dans le monde Arduino c'est donc mon premier Arduino... Si il y a une autre solution je serai partant pour l'essayer. Sinon je renverrai l'article.

Au démarrage, ou lorsque l'on appuie sur le bouton RESET, la LED utilisateur flashe un court instant.
Ensuite, si la carte est neuve, elle est flashée d'origine avec un programme blink, donc la LED clignote.
Le premier FLASH (très court) est provoqué par le bootloader, donc c'est une bonne indication de sa présence.