Pages: [1] 2   Go Down
Author Topic: Quelles sont les règles à respecter pour ne pas griller son Arduino UNO ?  (Read 1935 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je suis ingénieur en informatique. J'ai étudié l'électronique, mais cela remonte à plus de 15 ans.

Je suis en train de jouer avec l’Arduino UNO. Mais je ne suis pas sûr de bien interpréter les documents techniques.

Aussi je souhaiterais valider certains points afin de ne pas griller mon Arduino.



Question 1:

Si je comprends correctement la documentation, l'Arduino peut être alimenté de trois façons :
  • Via le port USB.
  • Via la prise jack.
  • Via les bornes Vin et GND.

Il est écrit que la tension appliquée via la prise jack, ou via les bornes Vin et GND, doit être comprise entre 7 et 12 Volts.

Mais qu’en est-il de l’intensité du courant ?


Question 2:

Si je comprends correctement la documentation, la borne "5V" est « alimentée par l'Arduino ». Autrement dit, cette borne ne sert pas à alimenter l'Arduino. Elle sert, éventuellement, à alimenter les circuits électroniques connecter à l'Arduino.

L'intensité maximale délivrée par cette borne est de 50 mA.

Est-ce correct ?


Question 3:

Cette question fait suite à la précédente. Je suppose que la borne "3.3V" est également « alimentée par l'Arduino ». Et que l'intensité maximale délivrée par cette borne est de 50 mA.

Est-correct ?


Question 4:

Peut-on utiliser simultanément les bornes "3.3V" et "5V" ?


Question 5:

La carte présente deux bornes GND masse. Je suppose que ces deux broches sont « fonctionnellement identiques ».

Autrement dit :

Supposons que j’alimente la carte à l’aide d’une batterie. Je branche le "+" sur la borne Vin et je peux brancher le "-" sur l’une des deux bornes GND, au choix.

Est-ce correct ?


Question 6:

Cette question concerne les 6 bornes d'entrées analogiques ("A0", "A1"... "A5").

Ce n'est pas explicitement écrit, mais je suppose que pour ces six bornes :

  • Pour une borne, la tension maximale applicable est de 5 Volts.
  • Pour une borne, la tension minimale applicable est de 0 Volt.
  • Pour une borne, l'intensité maximale qui traverse la borne est de 40 mA.

Est-ce correct ?

Si oui, comment limiter l'intensité qui traverse la broche ?


Question 7:

Cette question concerne les 14 bornes d'entrées/sorties numériques utilisées en entrée.

Si la borne est utilisée en entrée, la tension appliquée à une broche ne doit pas dépasser 5 Volts. Et l’intensité qui la traverse ne doit pas dépasser 40 mA.

Est-ce correct ?

Si oui, comment limiter l'intensité qui traverse la borne ?


Question 8:

Cette question concerne les 14 bornes d'entrées/sorties numériques utilisées en sortie.

Si la borne est utilisée en sortie, la tension mesurée à la borne vaut 0 ou 5 Volts. Et il faut veiller à ce que l'intensité qui la traverse ne dépasse pas 40 mA. En vertu de la loi U=RI, il faut donc veiller à placer une résistance d'au moins R=(5/4)*1000 Ohm, (soit 1250 Ohm) entre le borne et la masse.

Est-ce correct ?



Ces questions vous paraîtront peut-être stupides, mais cela fait un bail que je n'ai pas fait d'électronique. Dans l’immédiat, mon objectif est de comprendre la programmation de l’Aeduino sans le griller.

Merci,

Denis
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1968
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
tu te pose un peu trop de questions pour l'aRduino et non aEduino smiley-wink
tu as raison aussi de les poser.
déjà un conseil sur du vécu, pas d'alimentation en 12v, les nouvelles nono ne le supportent pas.
9v, c'est très bien, aprs tu peux lui mettre autant d'ampérage, il ne prendra que ce dont il a besoin.

tu peux utiliser le 5.5v 3v en même temps pour différents matériels suivant leur spec.
les pins digitales : tout ou rien, donc 0-5v
les analogs : pwm
les masses sont utilisées au plus près de tes connecteurs, ca évite des brouilles sur les résultats
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il est difficile de griller un narduino juste en le programmant, à moins de faire un court-circuit sur une pin et de mettre cette pin en sortie...

réponse 1 :

4ième façon, amener du 5V sur la pin 5V.

réponse 2 :

Tout faux. cette pin est reliée au circuit +5V de la carte, c'est aussi bien une entrée qu'une sortie. pas de limitation sur cette pin, à part l'électronique. J'utilise toujours cette pin pour alimenter mes cartes quand je fonctionne sans USB.

réponse 3 :

Vrai, mais je ne crois pas que ce soit limité à 50mA. il faut voir les refs du composant qui génère le 3.3V (à partir du +5V)

réponse 4 :

Oui.

réponse 5 :

Mieux que ça : il y a 3 pin GND. comme leur nom l'indique, elles sont reliées à la masse de la carte donc ont toutes 3 la même fonction : alim et ou référence 0V.

réponse 6 :

tension maximale : celle présente sur la pin Aref, minimale : 0V. on peut utiliser ces pins soit en digital (là, chacune est limitée à 40mA en sortie) ou en analog. Dans ce dernier cas, l'intensité est généralement négligeable (http://forum.arduino.cc/index.php?topic=197288.0).

réponse 7 :

Oui pour la tension, entre 0 et 5V. non pour l'intensité. si elles sont en entrée, on se tape de l'intensité car grande impédance d'entrée. Relire la loi d'Ohm...

réponse 8 :

Quote
il faut donc veiller à placer une résistance d'au moins R=(5/4)*1000 Ohm, (soit 1250 Ohm) entre le borne et la masse.
Ouh la la!!!!! non, une pin en sortie est un générateur, comme ton compteur EDF. si sur le disjoncteur il est marqué 60A, tu n'as tout de même pas une résistance de 230/600*1000 =383 ohms sur ton installation... de plus ta formule est fausse.

La charge sur une pin ne doit pas être inférieure à une résistance de R = U/I = 5/0,04 = 125 ohms. Mais l'ensemble des pins ne doit pas débiter un courant total (somme des courants) supérieur à 200mA.

Quote
Je suis ingénieur en informatique
Dans ce cas, tu aimeras le datasheet du proc de l'arduino : http://www.atmel.com/Images/doc8161.pdf

bonne lecture!
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2266
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je me suis fait griller mais je poste quand même c'est complémentaire (ou presque).

Quote
Il est écrit que la tension appliquée via la prise jack, ou via les bornes Vin et GND, doit être comprise entre 7 et 12 Volts. Mais qu’en est-il de l’intensité du courant ?
Le courant déprendra de comment tu charges  les sorties. La loi d'ohm est omniprésente U= RI, donc I s'adapte à la demande -> attention de ne pas trop demander.
Quote
Si je comprends correctement la documentation, la borne "5V" est « alimentée par l'Arduino ». Autrement dit, cette borne ne sert pas à alimenter l'Arduino. Elle sert, éventuellement, à alimenter les circuits électroniques connecter à l'Arduino.
L'intensité maximale délivrée par cette borne est de 50 mA.
D'où sortent ces 50 mA ?
L'USB peut fournir au maximum 500 mA (qui seront fourni par le PC) --> c'est une norme.
L'entrée extérieure donne 5V après passage dans un régulateur.
Après tout dépendra de ton montage : si les sorties ne délivrent que très peu de courant ce sera autant de disponible pour des montages annexes. Tu viens de mettre le doigt sur la partie difficile du système : on ne peut pas répondre sans avoir toutes les données.
En alim extérieure il vaut mieux se limiter à 9V maxi. La raison est la suivante : le régulateur interne à la carte devra chuter Vchute=(Ventrée -5V).
Il dissipera en chaleur la puissance  P=UI  -> P= Vchute*I.
Donc moins tu lui mettra en entrée et moins il chauffera, et s'il chauffe trop il ne régule plus.
Quote
Peut-on utiliser simultanément les bornes "3.3V" et "5V" ?
Oui, il serait intéressant que tu télécharge le schéma électrique de ta carte à partir du site général Arduino, tu y trouvera une bonne partie des réponses à tes questions.
Quote
La carte présente deux bornes GND masse. Je suppose que ces deux broches sont  fonctionnellement identiques
Oui à tout. Comme te l'a dit infobarquee il faut voir le coté pratique.
Quote
Cette question concerne les 6 bornes d'entrées analogiques ("A0", "A1"... "A5")..
La tension max applicable est bien (Valim +0,5V) et (GND-0,5V) --> c'est pour la sécurité du micro-controleur.
Maintenant pour faire une mesure correcte il ne faut pas appliquer plus que la référence de tension. Par défaut cette référence est égale à la tension d'alimentation mais tu verra qu'on peut la changer.
Quote
Pour une borne, l'intensité maximale qui traverse la borne est de 40 mA
Là je dis NON. Tout ce que tu peux lire sur le site et qui est répété est faux. Ils ne savent pas lire une datasheet.
C'est général en électronique il y a deux types de valeurs :
1) les "Absolute Maximum Rating" qui sont des valeurs a ne jamais dépasser et encore à atteindre que très ocasionellement.
2) les valeurs en  service permanent.
Il est vrai que les fabricants se gardent des marges mais en aucun cas ils ne garantissent un fonctionnement qui dépasse les valeurs en service permanent. Les "Absolute Maximum Rating"  en permanence ça peut marcher, ça marche souvent, mais ça peut péter. Comme ça peux marcher, ou péter, tu es le seul décisionnaire.
Atmel le fabricant précise le courant par sortie :
Absolute Maximum Rating = 40 mA
Service permanent = 20 mA par sortie avec un max de 200mA par Port (voir datasheet pour la définition d'un Port).
Et c'est valable pour toutes les sorties. A noter que les accès analogiques peuvent s'utiliser aussi comme des accès digitaux.
Le courant d'entrée est négligeable toutes les entrées faisant plusieurs Megohms.
Quote
Si oui, comment limiter l'intensité qui traverse la borne ?
En calculant les résistances qui vont bien : toujours la même copine -> la loi d'Ohm U= RI , P=UI, P= RI2 , P= U2/R

Conseils :
Télécharger la datasheet du micro de ta carte l'AtMega328p à partir du site Atmel.
Télécharger le schéma de la carte Uno à partir du site Arduino->Produit->Uno
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je vous remercie pour toutes vos réponses. J’ai quelques remarques :

Quote
@Super_Cinci (question 2)
Tout faux. cette pin est reliée au circuit +5V de la carte, c'est aussi bien une entrée qu'une sortie. pas de limitation sur cette pin, à part l'électronique. J'utilise toujours cette pin pour alimenter mes cartes quand je fonctionne sans USB.

Sur ce lien http://arduino.cc/en/Main/ArduinoBoardUno , il est écrit :

Quote
5V.This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 - 12V), the USB connector (5V), or the VIN pin of the board (7-12V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage your board. We don't advise it.

Donc, même si l’on peut alimenter l’Arduino via la borne 5V, ce n’est pas conseillé.

Quote
@68tjs (question 6)
tension maximale : celle présente sur la pin Aref, minimale : 0V. on peut utiliser ces pins soit en digital (là, chacune est limitée à 40mA en sortie) ou en analog. Dans ce dernier cas, l'intensité est généralement négligeable (http://forum.arduino.cc/index.php?topic=197288.0).

Sur ce lien http://arduino.cc/en/Main/ArduinoBoardUno , il est écrit :

Quote
The Uno has 6 analog inputs, labeled A0 through A5, each of which provide 10 bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function.

Es-tu certain que l’on peut utiliser ses bornes en digitale ? Si je comprends bien : en supposant que la tension appliquée à AREF vaut N Volts, alors la précision de lecture sera de N/1024 Volt.


Quote
@68tjs
Là je dis NON. Tout ce que tu peux lire sur le site et qui est répété est faux. Ils ne savent pas lire une datasheet.
C'est général en électronique il y a deux types de valeurs :
1) les "Absolute Maximum Rating" qui sont des valeurs a ne jamais dépasser et encore à atteindre que très ocasionellement.
2) les valeurs en  service permanent.
Il est vrai que les fabricants se gardent des marges mais en aucun cas ils ne garantissent un fonctionnement qui dépasse les valeurs en service permanent. Les "Absolute Maximum Rating"  en permanence ça peut marcher, ça marche souvent, mais ça peut péter. Comme ça peux marcher, ou péter, tu es le seul décisionnaire.
Atmel le fabricant précise le courant par sortie :
Absolute Maximum Rating = 40 mA
Service permanent = 20 mA par sortie avec un max de 200mA par Port (voir datasheet pour la définition d'un Port).
Et c'est valable pour toutes les sorties. A noter que les accès analogiques peuvent s'utiliser aussi comme des accès digitaux.
Le courant d'entrée est négligeable toutes les entrées faisant plusieurs Megohms.

Je vais jeter un coup d'oeil au "Absolute Maximum Rating". Je ne vois pas de quoi tu parles.

Merci,

Denis
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2266
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Les pin A0 à A5 peuvent s'utiliser en analogique et en digital, relie tranquillement la doc .

Un accès physique peut être redirigé  à l'intérieur d'une puce électroniques. De cette façon une pin peut avoir plusieurs fonctions.

Le nomage A0 à A5 comme D1 à D13 est propre à Arduino, il est défini par la librairie Arduino. D'ailleur les pins A0 à A5 acceptent aussi les dénominations D14 à D19. Il existe des fichiers qui font pointer les noms "Arduino" vers les  références du micro.
Les pins A0 à A5 peuvent
- soit être dirigées sur un port Digital  -> elles sont reliées alors au port C,
- soit être dirigées sur l'entrée du multiplexeur analogique qui n'envoie qu'une entrée à la fois sur le convertisseur analogique/digital. Il n'y a qu'un convertisseur  dans la puce.
- soit pour A4 et A5 être dirigées vers l'interface I2C.

C'est transparant pour toi parce que ce sont les fonctions de la librairie Arduino (DigitalRead/Write , AnalogRead ou les fonctions I2C) qui s'occupent de faire les bons choix à ta place. Si tu veux en savoir plus tout est expliqué dans la datasheet.

Page 5 de la datasheet tu trouvera un schéma synoptyque du micro-controleur.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@ 68tjs

J'ai consulté les deux documents sont tu m'as parlé:

http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
http://www.atmel.com/Images/doc8161.pdf

En ce qui concerne les PINs A0...A5 de l'Arduino, elles correspondent aux PINs PC0...PC5 du AtMega328p.

Et il est écrit :

Quote
Port C is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The
PC5..0 output buffers have symmetrical drive characteristics with both high sink and source
capability. As inputs, Port C pins that are externally pulled low will source current if the pull-up
resistors are activated. The Port C pins are tri-stated when a reset condition becomes active,
even if the clock is not running.

Donc, je comprends qu'elles peuvent être utilisées comme entrée ou comme sortie (bi-directional I/O).

Dans ce cas, pourquoi peut-on lire sur ce lien : http://arduino.cc/en/Main/ArduinoBoardUno

Quote
The Uno has 6 analog inputs, labeled A0 through A5, each of which provide 10 bits of resolution (i.e. 1024 different values).

Ce n'est pas clair...

Je vois où tu veux en venir avec le notion de "Absolute Maximum Rating". CF page 313 du document http://www.atmel.com/Images/doc8161.pdf.

Quote
Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent dam- age to the device. This is a stress rating only and functional operation of the device at these or other conditions beyond those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.

Et:

Quote
Voltage on any Pin except RESET
with respect to Ground ................................-0.5V to VCC+0.5V
Voltage on RESET with respect to Ground......-0.5V to +13.0V
Maximum Operating Voltage ............................................ 6.0V
DC Current per I/O Pin ............................................... 40.0 mA
DC Current VCC and GND Pins................................ 200.0 mA

Donc il faudrait qu'Arduino corrige la page :  http://arduino.cc/en/Main/ArduinoBoardUno

Quote
Each of the 14 digital pins on the Uno can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms

Visiblement, il n'est pas conseillé d'alimenter une PIN avec un courant de 40mA.

Merci pour ces informations!

Denis
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2266
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec Arduino il faut apprendre a relativiser et à interpréter.
Les librairies arduino ont été écrites dans le seul but de rendre la programmation des micro-processuers accessible au plus grand nombre, et ça fonctionne. En contre partie elles ne sont pas optimisées et dans certains cas la lecture de la datasheet et l'écriture directe dans les registres permet de gagner de la place en mémoire et de la rapidité.
Le projet a été initié par des "artistes" donc on ne peut pas leur reprocher de ne pas avoir  le même professionalisme qu'aurait un électronicien où un informaticien de métier.
Par contre pour ce qui est de corriger les erreurs sur le site, et il y en des énormes, ils sont completement autistes et se fichent totalement des remarques qu'on peut leur faire.
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Each of the 14 digital pins on the Uno can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms

Visiblement, il n'est pas conseillé d'alimenter une PIN avec un courant de 40mA.
En électronique logique, on dit qu'une sortie :
  • fournit un courant lorsque le courant qui sort de la pin est positif (généralement quand elle est à l'état haut)
  • reçoit un courant lorsque le courant qui sort de la pin est négatif (généralement quand elle est à l'état bas)
lorsqu'elle est configurée en entrée, elle représente une impédance très élevée, de l'ordre du Mohm. donc pour y envoyer 40mA, il faudrait une tension de 40 000V, (en fait, 6V suffisent car il y a une protection sur l'entrée).

Donc NON, on ne parle pas d'alimenter une pin, ça n'a aucun sens. Quand tu dis que tu es ingénieur en informatique, c'est dans quel domaine, car j'ai l'impression que tu es très très loin du hard... Ce n'est pas un reproche, c'est juste pour mieux comprendre tes questions...

Par ailleurs, je te propose de ne pas te poser autant de questions, comence par faire quelques exercices en suivant les exemples (si nombreux) que l'on trouve sur le net, et une fois un premier câblage fait, essaie de voir comment c'est fait, et comment ça fonctionne en réel. Tu abordes dans tes questions des domaines trop pointus pour débuter, c'est un coup à te décourager. Arduino n'a pas été inventé pour être précis, et je doute que la team arduino sache répondre à tes questions. commence simple.
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1968
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

+1 comme je l'avais dit plus haut.

on va partir dans l'autre sens, tu veux faire quoi exactement avec le nono?
gérer une centrale nucléaire ou faire clignoter une led? l'un possible, l'autre non, devine lequel smiley

je vois une question dans peu de temps, puis je faire du multitache?
non

il y a assez d'exemples dans les bouquins et tutos pour faire des choses pas mal sans se poser autant de questions, enfin à mon avis.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@68tjs

Quote
Donc NON, on ne parle pas d'alimenter une pin, ça n'a aucun sens. Quand tu dis que tu es ingénieur en informatique, c'est dans quel domaine, car j'ai l'impression que tu es très très loin du hard... Ce n'est pas un reproche, c'est juste pour mieux comprendre tes questions...

Je suis développeur dans les systèmes d’information (Perl, PHP, MySql, PostGres...). Je fais aussi du développement C système (les sockets...).

Mais je ne fais pas du tout de hardware. Je suis très éloigné du hardware. J’ai fait de la programmation en assembleur sur Motorola 68000... Mais ça remonte à ma maîtrise de physique (soit 19 ans). Toutefois je n’étais pas mauvais (j’ai eu 18/20 à l’examen).

Cela dit, mon intérêt, aujourd’hui, est plus ludique, dans un premier temps. J’ai quelques idées simples et je souhaite les mettre en oeuvre à titre éducatif (auto-formation). Dans un premier temps, je compte jouer avec l’Arduino, mais je compte tout de même comprendre les bases pour ne pas faire n’importe quoi.

Ce que tu m’as dit en parlant de l’impédance est hyper intéressant. Cela me rappelle mes cours de physique. Je vais revoir ça... ça, par exemple, c'est une « base » importante de mon point de vue.

  • C’est bien de savoir ce que c’est que l’impédance.
  • C’est bien de savoir qu’une PIN en entrée a une impédance.
  • C’est bien de savoir ce que cela implique.
  • C’est bien de savoir où chercher pour trouver l’impédance de la PIN.

A+
« Last Edit: November 11, 2013, 04:34:29 am by denis_beurive » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@infobarquee

Oh, j’ai bien compris qu’un Arduino ne fait pas tourner un petit Linux comme le ferait un Raspberry Pi : donc pas de multitâche et compagnie. Je suis développeur sous Linux, donc sur ce terrain je n’aurais pas de problème.

Je m’intéresse à l’Arduino pour les raisons suivantes :

J’ai des idées de petits projets (pour la vie de tous les jours) qui nécessitent de contrôler des entrées/sorties. Les algorithmes sont hyper basiques (pas besoin de « la grosse artillerie système » d’un Linux). Et il faut un système peu gourmand en énergie et fiable. En plus j’ai envie de découvrir l’Arduino, car un de mes anciens collègues m’en a beaucoup parlé.

 smiley-wink
« Last Edit: November 11, 2013, 04:39:04 am by denis_beurive » Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il n'y a pas de bases réellement à avoir pour mettre un arduino dans un système simple utilisant par exemple des leds, boutons poussoirs, relais...

côté impédance des entrées, on s'en fout un peu, ce qui compte c'est la tension qu'on met dessus : entre 0 et 2,5V pour un état bas, entre 2,5V et 5V pour un état haut. (à la louche, mieux vaut s'éloigner le plus possible du 2,5V pour être sûr de l'état qui doit être interprété : se baser sur les caractéristiques de la TTL est une très bonne approche, voire la CMOS).

Si tu retrouves tes cours sur le M68xxx, relis-les, ça devrait t'aider et te permettre de faire mumuse.

N'hésite pas à nous présenter ton / tes projets, ce sera plus facile de t'aiguiller sur les pièges éventuels que tu pourrais rencontrer. Maîtriser totalement le fonctionnement électrique d'un µP est aujourd'hui impossible pour toi (je ne dis pas ça méchamment, je suis juste réaliste). Ca va venir, petit à petit, au fur et à mesure du grandissement de tes projets.

Je dirais que la chose la plus importante que tu dois savoir pour commencer du bon pied, c'est que c'est un système 8 bits et qu'il y a très peu de mémoire. Je conseille vivement (et à tout le monde) d'optimier les variables au mieux, par exemple :

Code:
for(int i=0; i<200; i++){...}  // pour moi, une très grosse erreur

for(byte i=0; i<200; i++){...}  // Là oui, on a optimisé

for(byte i=200; i != 0; i--){...}  // Là, on est au top!

Sur un PC, le type int tombe sous le sens, c'est une variable 32 bits sur une plateforme 32 bits, (ou 64 bits), la mémoire est infinie (RAM + fichiers d'échange). mais sur l'arduino, dans le premier for, on lui demande de trvailler une valeur 16 bits signée, alors qu'il ne sait faire que du 8 bits non signé, on perd du temps à gérer les débordements, faire des doubles comparaisons... alors qu'un byte (octet 8 bits) permet d'utiliser i sur la plage 0 à 200 (exemple 2 et 3). On économise un octet sur la ram, et le temps de traitement.

L'exemple 3 est une optimisation sur le temps de traitement, car au lieu de charger 200 à chaque comparaison (exemple 2), on se contente de savoir si i est zéro ou pas, ce qui en assembleur (code machine) se fait en une seule instruction : après la décrémentation de i, on fait tout de suite un BNZ pour reboucler.

en premier, donc, se soucier de l'optimisation de la taille des variables. tous les exemples que tu trouveras seront avec des int alors qu'un byte suffit largement dans la plupart des cas. c'est une habitude à prendre dès le début, un bon programmeur doit connaître la plage de valeurs que va prendre sa variable et utiliser le type le plus approprié.

L'électronique, c'est après qu'on voit ça. Une fois qu'on a réussi à faire joujou avec la led de la pin 13... smiley-wink
« Last Edit: November 11, 2013, 05:25:30 am by Super_Cinci » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous pour ces réponses.

En lisant la documentation sur le site d’Arduino, j’ai trouvé l’information présentée par 68tjs.

Lien : http://arduino.cc/en/Tutorial/DigitalPins

Quote
The pins on the Arduino can be configured as either inputs or outputs. This document explains the functioning of the pins in those modes. While the title of this document refers to digital pins, it is important to note that vast majority of Arduino (Atmega) analog pins, may be configured, and used, in exactly the same manner as digital pins.

Donc, d’après ce document les PINs A0..5 peuvent être utilisées non seulement en entrée, mais également en sortie.

Mais, sur le lien, on peut lire: http://arduino.cc/en/Main/ArduinoBoardUno

Quote
Each of the 14 digital pins on the Uno can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions.
...
The Uno has 6 analog inputs, labeled A0 through A5, each of which provide 10 bits of resolution (i.e. 1024 different values).

Déjà, là, pour le lecteur averti, qui croise les informations, il y a une incohérence.

Mais, si en plus on ajoute l'information tirée du lien suivant : http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf

Quote
Port C is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).

Là, on nous dit que les PINs A0..5 gèrent des valeurs codées sur 7 bits, pas sur 10 bits...

Cela ajoute à la confusion.

 smiley-eek smiley-eek smiley-eek
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oublie arduino.cc, la seule doc valable, c'est celle du fabricant qui connaît bien mieux son µP qu'une bande d'artistes!

Quote
Port C is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).
c'est un port I/O de 7 bits dont 6 peuvent être orienté sur le multiplexeur analogique pour le CAN. tu t'enlises complètement. il faut commencer par programmer ne serait-ce que blink, ensuite seulement tu iras t'intéresser au fonctionnement interne de la bébête. tu confonds trop de choses pour t'en sortir dans tout ça. On n'apprend pas le fonctionnement d'un µC ou µP en une matinée... s'il y a des formations qui durent plusieurs années, c'est qu'il doit y avoir une raison smiley-wink
Logged

Pages: [1] 2   Go Up
Jump to: