Comment effacer la mémoire de l'Arduino Uno?

15

Je suis juste un bricoleur qui apprend l'Arduino avec mon fils et j'ai été surpris que lorsque je rebranchais le cordon USB sur l'Arduino, le programme était toujours en cours d'exécution et je me suis dit: "c'est une bonne chose que je n'ai pas fait exploser quoi que ce soit "

Alors, quelle est la façon normale dont les gens appellent ça un jour avec ces choses? Chargez-vous généralement les os nus, ne faites-vous rien d'esquisse ou débranchez-vous tout simplement?

Peter Turner
la source
4
Que voulez-vous dire par "lorsque j'ai rebranché le cordon USB sur l'Arduino, le programme était toujours en cours d'exécution", quel comportement avez-vous observé et à quel comportement vous attendiez-vous? Quelque chose était-il connecté à l'Arduino?
jippie
@jippie ouais, j'avais un tas de LED branchées et elles se sont toutes allumées. Pour une raison quelconque, je pensais que les programmes étaient chargés en mémoire et seraient partis au redémarrage, mais puisque cela n'existe pas ...
Peter Turner
7
Les programmes sont chargés dans la mémoire flash, pas dans la RAM, ils sont donc conservés même après la mise hors tension.
Ricardo

Réponses:

15

Au démarrage, l'Arduino exécutera le programme qui lui a été mis en dernier. Solution: ne l'allumez pas si vous ne voulez pas qu'il s'exécute.

Lorsqu'il est sorti de la boîte, l'Arduino exécute généralement le programme Blink. Vous pouvez donc simplement charger cela et l'appeler un jour si vous souhaitez le "réinitialiser".

Ou avoir un programme en boucle avec une commande sleep.

Si vous avez joué avec le chargeur de démarrage USB via les broches icsp, cela ne suffit pas, vous devrez réinstaller le chargeur de démarrage. Mais si vous avez téléchargé des programmes via USB ou directement à l'aide d'un programmeur, il n'y a aucun problème avec le téléchargement de Blink ou d'un autre programme factice pour le réinitialiser.

Manishearth
la source
est-il possible de lui faire exécuter un programme autodestructeur sans rien brancher sur les bornes de tension?
Peter Turner
@PeterTurner quand il n'y a pas de puissance? Non. Mais vous pouvez ajouter un programme qui abuse des broches, et si vous le laissez
allumé,
9

Si la sécurité est une préoccupation majeure, vous devez presque toujours charger un croquis d'arrêt * sur le tableau avant de l'appeler un jour. Ce serait une bonne idée, par exemple, lorsque votre planche fait partie de façon semi-permanente d'un système plus vaste. Vous pouvez le faire en:

  • Téléchargez le croquis Bare Minimum trouvé dans File-> Examples-> Basicdans l'
  • Téléchargez une esquisse avec un grand retard en boucle.
#include <limits.h>

void setup()
{}

void loop()
{
  delay(ULONG_MAX);
}
void setup()
{
   exit(0);
}

void loop()
{}

* Stop est tout simplement figuratif. La planche n'arrête pas vraiment de fonctionner.

asheeshr
la source
2
Pourriez-vous obtenir un effet similaire (et plus permanent) en appelant exit()de l'intérieur setup()ou loop()?
Peter Bloomfield
@ PeterR.Bloomfield Je ne peux pas croire que j'aie oublié ça!
asheeshr
Pourquoi s'embêter avec la sortie ou le retard? Avoir juste void setup () { } void loop () { }- dans tous les cas en interne, le processeur tourne en boucle "ne faisant rien d'utile".
Nick Gammon
1

La principale chose qui peut mal tourner est que si vous mettez votre Arduino de côté pendant quelques semaines, oubliez le croquis (code) qui y est chargé, puis recommencez à travailler dessus, branchez le matériel (comme un interrupteur, une LED ou un moteur) ) et le faire s'allumer / s'allumer de façon inattendue, car le code précédent adressait la broche à laquelle il était connecté.


Solution 1. Chargez d'abord le nouveau code.

Une technique simple et sûre consiste à charger le nouveau code sur lequel vous travaillez aujourd'hui avant de brancher un matériel. Maintenant, vous savez ce que fait le code, quelles broches il utilise, puis vous branchez le matériel par la suite (en tournant de préférence l'Arduino d'abord en le débranchant).

Ensuite, lorsque vous rebranchez l'alimentation, il exécute l'esquisse que vous avez téléchargée, vous avez votre matériel connecté et tout devrait bien se passer.


Solution 2. Chargez une esquisse "ne rien faire".

Vous pouvez télécharger ce court croquis:

int main () { }

Il "ne fait rien". Toutes les broches resteront en entrée, vous pouvez donc connecter votre matériel en toute sécurité, puis commencer à coder votre nouveau projet.


La sécurité d'abord

Une bonne règle consiste à ne pas brancher ou débrancher le matériel (par exemple, les LED, les commutateurs, les moteurs) avec l'alimentation appliquée. Si vous êtes distrait et que vous vous branchez sur la mauvaise prise de la carte, vous pouvez immédiatement endommager soit ce que vous êtes connecté, soit l'Arduino, ou les deux.

Lorsque l'appareil est hors tension, vous pouvez ensuite vérifier à la dernière minute que tout est connecté au bon endroit, que vos polarités sont correctes, etc.

Assurez-vous également que vous n'avez pas d'électricité statique sur votre corps, en particulier si vous portez un pull ou quelque chose de moelleux, ou si vous êtes assis sur un tapis.

Personnellement, je tends toujours la main et touche une partie métallique à proximité pour me "mettre à la terre", avant d'atteindre l'Arduino. Un exemple est le boîtier métallique d'un PC, une prise casque ou quelque chose comme ça.

Si, après avoir connecté l'alimentation à l'Arduino (par exemple par le câble USB), vous ne voyez pas immédiatement le voyant d'alimentation s'allumer, coupez immédiatement l'alimentation! Vous avez peut-être court-circuité quelque chose et moins vous le faites, mieux c'est.

Nick Gammon
la source
1

Ma plus grande préoccupation lorsque cela se produit est que j'ai généralement câblé l'Arduino pour mon nouveau projet et que je branche l'USB pour le téléchargement initial du nouveau croquis. Je m'inquiète, n'ayant aucune idée de ce que le programme précédent va essayer, étant connecté à un matériel totalement différent.

Jusqu'à présent, rien de mauvais ne s'est produit et je ne pense pas que j'adopterai la gravure de BLINK chaque fois que je remets un de mes Arduinos dans le bac. Ce n'est probablement qu'une question de temps.

linhartr22
la source
0

Si la carte Arduino est connectée à un autre appareil, débranchez tout et connectez simplement l'Arduino à l'ordinateur à l'aide du câble USB et essayez de télécharger un nouveau croquis, j'espère que cela vous aidera.

nipi
la source
Bienvenue sur Arduino SE! Y a-t-il une raison pour laquelle cette réponse est meilleure que les autres réponses fournies? Merci!
Anonymous Penguin
0

Dans l'IDE Arduino, accédez aux exemples, sélectionnez Eeprom, sélectionnez eeprom clear, puis téléchargez l'esquisse.

Lorsque c'est la LED sur la broche 13 qui s'allume, vous avez terminé.

NB. Cela peut prendre un certain temps en fonction de la taille de l'EEPROM de l'Arduino.

Victor Peters
la source
Alors à quoi ça sert? Exécuter quelque chose qui ne touche pas les E / S (mais efface l'EEPROM à chaque mise sous tension)?
Peter Mortensen
Avez-vous réellement essayé cela? La broche 13 ne semble pas être configurée en sortie (Arduino IDE 1.6.5)
Peter Mortensen