Je débute sur ARDUINO

Salut ! :slight_smile:

hier j'ai reçu ma première carte Arduino (Funduino) et en expérimentant un peu je me suis posé quelques questions:

-Lorsque qu'un programme tourne en boucle a l'infini (void loop) comment faire pour l'arrêter (ex: Blink) ?

-A quoi sert le bouton reset ?

-La carte est branchée par USB, faut t-il l'éjecter ou y a t-il une manip particulière a faire avant de la retirer ?

-Faut-il acheter un câble spécial pour alimenter la carte par cette prise ?

Bonjour,

Les questions se posent dans la section générale. voir ici. Demande au modérateur de déplacer ton sujet.

  • on n'arrête pas un programme, il tourne à l'infini. Dans certaines conditions on peut mettre en standby le processeur

  • à faire un reset (en gros à redémarrer le programme)

  • non rien de particulier à faire

  • il te faut une alim entre 7 et 12V avec ce connecteur. Mais il y a d'autres moyens d'alimenter la carte en particulier par l'usb.

Salut,
pour arrêter ta boucle loop, tu peux éteindre ta carte alors? Sinon tu peux mettre ton code a exécuté qu'une seul fois dans la boucle setup. Mais j'ai du mal a voir l'intention d'un telle programme.
Le bouton reset est assez explicite, il serre a rebooté ta carte. Cad que la carte va arrêter l'exécution de son programme en cours et reprendre l’exécution du bootloader suivi de ton programme "du début".

-La carte est branchée par USB, faut t-il l'éjecter ou y a t-il une manip particulière a faire avant de la retirer ?

? Je ne crois pas qu'il y as de précaution particulière a avoir.

Faut-il acheter un câble spécial pour alimenter la carte par cette prise ?

Une des choses a faire attention c'est la polarisation de la fiche jack. Le positif doit être au centre! Arduino recommande une tension de 7@12V et une limite de 6@20V. Privilégie une tension basse pour diminuer le travailler du régulateur.

Merci de vos réponses :slight_smile:

désolé de ne pas avoir posté au bon endroit kamill :s

Ca veut dire que si on veut modifier des branchements sur notre circuit on le fait comme ça, sans arrêter le programme ?

Ca veut dire que si on veut modifier des branchements sur notre circuit on le fait comme ça, sans arrêter le programme ?

Si tu parles des connexions électriques, sauf a être très sûr de soi, il est toujours préférable d'éteindre la carte.
En général les court-circuits accidentels lors des manipulations de câblage ne pardonnent pas.

Dès que tu rebrancheras la carte le programme démarrera.
La phase de démarage du micro est automatique : dès que la tension Vcc atteint une valeur déterminée par Atmel, un Reset (Raz en français) se produit pour un démarrage propre du programme.

Alimentation :
Je ne connais pas la Fonduino mais en général on peut alimenter simultanément par l'USB et "Vin" et retirer l'un ou l'autre sans danger .

Attention les possibilités en courant sont limitées :
USB max = 500mA (c'est la norme USB)
Vin (jack) : c'est plus compliqué. Il y a un régulateur sur la carte. Ce régulateur chauffe sous l'effet de la puissance qu'il doit dissiper.
La puissance c'est égal au produit de la tension par le courant -> P = UI.
C'est pour cela que Scoob t'a conseillé une tension de 9V plutôt que 12 V qui à puissance max égale permet plus de courant. Par contre je ne suis pas d'accord avec les 6 V mini : pour fonctionner le régulateur a besoin d'une différence de tension Entrée/Sortie d'au moins 1,5 V (c'est dans son principe), de plus il y a souvent en série avec Vin une diode "anti-connerie" pour protéger des inversions "plus/moins" et qui apporte une chute de tension supplémentaire de 0,7 V. Donc pour moi Vin minimal c'est plutôt 7,5 V.

Point important :
La carte n'est pas faite pour fournir de l'énergie aux modules complémentaires.
Si ceux ci ne consomment pas beaucoup il est possible de les alimenter à partir du 5V de la carte arduino.
Mais si ce n'est pas le cas il leur faut une alimentation externe --> ne pas oublier de relier ensemble les GND des alimentations et celui de la carte arduino.

Quelques points importants pour un débutant :

  • Jamais de Led sans résistance de limitation de courant.
  • Jamais connecter directement une base de transistor bipolaire sur une sortie du micro sans insérer une résistance de limitation de courant.
  • Jamais de moteur ou de bobinage commandés directement par une sortie du micro --> toujours passer par un transistor (bipolaire ou Mosfet) muni d'une diode de roue libre.

Juste un tout petit grain de sel, (Bonjour les copains.)

Un processeur "tourne" sans arrêt dans une boucle, qu'elle soit globale (loop) ou locale.
Si dans la boucle de base tu désires stopper ton programme, il y a un moyen simple : Le faire boucler sans fin avant la fin de ta boucle principale.

EXEMPLE :

void loop () {
...
... Ici les instructions que tu ne veux executer qu'une seule fois.
...

INFINI: // Ceci est une étiquette à laquelle on peut donner un nom quelconque.

goto INFINI; // Instruction qui dit de brancher le microcontrôleur sur l'étiquette "INFINI".
} // Ceci ferme la boucle de base. En réalité, c'est l'instruction qui brancherait le processeur à l'acollade ouvrante { de la boucle loop.
Mais le programme n'y viendra jamais car rebouclé juste avant par le goto

Un "goto" j'en connais qui vont hurler !
Pas de ça en C/Cpp !

while (1);
bloque le programme définitivement.

Merci pour vos réponses!

68tjs, pour éteindre la carte il faut la débrancher ?

Quand tu dis que la carte n'est pas faites pour fournir de l'énergie au modules complémentaires, tu parles des composants qu'on peut y ajouter (écran lcd, détecteur de mouvement etc..) ?

Merci pour tes petits conseils :wink:

nulentout, je crois avoir compris le fonctionnement d'un "goto", mais n'existe t-il pas des void loop non-infinie qui n’exécute le prog qu'une fois ?

Rigolo, développe ? :stuck_out_tongue:

les “goto” sont des instructions “historiques” qui permettent de faire un “saut” n’importe où dans le code, là où t’as posé l’étiquette de destination. Même si ca fonctionne ce n’est absolument pas recommandé parce que : 1) il y a toujours moyen de s’en passer; et surtout 2) un code avec des “goto” est un code relativement peu lisible, donc peu maintenable ou en d’autres mots un code difficile à comprendre et à maîtriser.
Par ailleurs, si un jour t’as un problème avec ton code plein de “goto” et que tu postes ca dans un forum pour réclamer de l’aide, la première chose qu’on te dira de faire ce sera de tout recoder sans goto si tu veux que quelqu’un t’aide, alors gagne du temps et par conséquent : oublie les goto ! c’est une très mauvaise idée que de les utiliser…

Pour sortir d’une boucle t’as la condition de ta boucle même, c’est le moyen le plus propre d’en sortir :

while( x < 10 )
{
    // faire des trucs
    
    if ( erreurCritique )  // si je dois absolument en sortir
    {
        x = 11; // ca arrêtera la boucle
    }
}

Cette méthode marche aussi avec les boucles “for” et “do while”.

Encore un moyen, que je n’apprécie pas particulièrement mais qui malgré tout, demeure pas mal utilisé par ceux qui veulent faire du code peu volumineux, c’est l’instruction “break” :

while( x < 10 )
{
    // faire des trucs

    if ( erreurCritique ) // si je dois absolument en sortir
    {
       break; // ca arrêtera la boucle illico
    }
}
   // ton code va donc continuer à s'executer à partir d'ici.

Cette dernière méthode est moins pire que les goto et en plus de fonctionner pour des “for” et “do while”, ca marche aussi avec les “switch/case”.

UNKMAN:
Merci pour vos réponses!

68tjs, pour éteindre la carte il faut la débrancher ?

Quand tu dis que la carte n’est pas faites pour fournir de l’énergie au modules complémentaires, tu parles des composants qu’on peut y ajouter (écran lcd, détecteur de mouvement etc…) ?

Merci pour tes petits conseils :wink:

nulentout, je crois avoir compris le fonctionnement d’un “goto”, mais n’existe t-il pas des void loop non-infinie qui n’exécute le prog qu’une fois ?

Rigolo, développe ? :stuck_out_tongue:

bonjour,
je pense qu’il va falloir te pencher un peu plus sur le sujet.
les tutos sur eskimo sont bien fait.

tu peux alimenter un lcd via la carte, ou autre chose, sans dépasser les caractéristiques de la carte en mA par pin et sur la totalité.

le mieux est de commencer par faire les exemples fournis dans l’ide avec ce que tu as sous la main.
après tu “ponds” un projet et tu analyse comment il doit faire pour arriver à ses fins.
tu écris le code et si soucis, tu reviens poser la question et on aidera.

A la vue de tes questions (sans être méchant ou autre), tu ne cherche pas trop sur le net.

Bonjour les copains,

Relativisons un peu.
OUI, je sais qu’un GOTO mal utilisé est l’ennemi n°1 du programmeur.

OUI, Môamôa aussi j’ai un vécu en programmation.
J’ai connu et programmé :
• Directement en binaire Hexadécimal, durant des années,
• En assembleur symbolique, durant des années,
• En BASIC, en FORTH, en PROLOG, en LSE, en PASCAL et d’autres encore …

De tous ces langages, mon préféré était PASCAL … qui ne connaît pas le GOTO !

Alors effectivement, je ne recommanderais pas son usage intensif.
En revanche, quand en cours de test d’un programme je désire « bloquer » facilement le processeur, c’est là que je m’en accommode pour des raisons le LISIBILITÉ.
Je trouve plus lisible :
INFINI : goto INFINI ;
Que
While(true) {}
La notion de lisibilité reste je crois assez personnelle, chacun possède la sienne. :slight_smile:

Quand à affirmer comme étant sculpté dans le marbre qu’il faut définitivement bannir le GOTO, personnellement j’éviterais … sinon pourquoi les spécialistes qui ont conçu le compilateur l’ont introduit dans les instructions utilisables ?

Bonjour, goto:SUITE1
END:J’espère avoir réussi à montrer mes dires. Merci. goto:FIN
UN_AUTRE:lisibilité, maintenabilité et de goto:LABEL
SUITE5:nous relire. Car se comprendre est une chose simple mais goto:SUITE3
AILLEURS:nos connaissances, expérience et goto:SUITE0
SUITE3:être compris facilement en est une autre. goto:END
LABEL:bon sens à l’égard du code produit goto:PAS_FINI
SUITE1:il ne s’agit pas d’étaler goto:AILLEURS
SUITE0:savoir faire. Il s’agit de goto:UN_AUTRE
PAS_FINI:et de ceux qui vont tenter de goto:SUITE5

FIN:

68tjs, pour éteindre la carte il faut la débrancher ?

Tu vois un autre moyen ?
Il y a aussi la possibilité de téléphoner à EDF pour qu'il coupe le courant mais c'est moins pratique.

Quand tu dis que la carte n'est pas faites pour fournir de l'énergie au modules complémentaires, tu parles des composants qu'on peut y ajouter (écran lcd, détecteur de mouvement etc..) ?

Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,
Tuto d'Eskimon,

inforbarquee, c'est ce que je me suis dit en postant ce topic, mais j'ai lu quelques partis du tuto d'eskimon auparavant et je n'ai aps vraiment trouvé de réponses, je vais chercher sur le net :wink: merci !

68tjs, non je sais pas, mais je trouvais ça un peu barbare de la débrancher comme ça quoi..