Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4443 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  119  120  121  ..  278  279  280  281  282  283
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°138097
Profil sup​primé
Posté le 21-06-2016 à 17:51:19  answer
 

Reprise du message précédent :
dites, je voudrais connecter un arduino sur une carte mère sur les pins de l'activité HDD pour compter les signaux et faire s'allumer une LED qui varie en intensité selon l'activité, plutôt que clignoter (enfin clignoter différemment quoi)

 

je suis pas une bête en électronique...  :whistle: je branche le + de la pin LED de la carte mère sur un input de l'arduino et c'est tout? l'arduino sera branché en USB sur un autre ordi, mais les ordis sont reliés à la même prise électrique, donc pas besoin de brancher de masse, si?

 

:jap:

 

edit: quelque chose me dit que je devrais mettre une résistance entre les 2 pins LED de la mobo pour "simuler" une LED, et brancher un câble en plus d'un côté de la résistance (peu importe lequel) vers un input du arduino?

Message cité 1 fois
Message édité par Profil supprimé le 21-06-2016 à 17:58:01
mood
Publicité
Posté le 21-06-2016 à 17:51:19  profilanswer
 

n°138165
Turkleton
I don't quite understand you
Posté le 23-06-2016 à 13:14:21  profilanswer
 

Y'en a icite qui ont déjà utilisé PureData en conjonction avec une Arduino ?
 
Je suis en train de m'y intéresser, et sur les possibilités que ça offre (musicalement parlant en tout cas) c'est… :love:


---------------
If you think it could look good, then I guess it should
n°138211
emerout
Posté le 24-06-2016 à 13:38:35  profilanswer
 

dureiken a écrit :

Salut les gars
 
mon projet piscine est quasiment fini, grâce à vous ! merci
 
avez vous une bonne solution pas trop lourde pour faire un petit blog tutoriel pour permettre à d'autres de réaliser quelquechose de similaire ?
 
Merci


http://www.instructables.com/
 
La majorité des projets est en anglais, mais certains sont aussi en français ...

n°138226
rat de com​bat
attention rongeur méchant!
Posté le 24-06-2016 à 19:49:29  profilanswer
 


Oula :o À moins de savoir exactement ce qu'on fait il faut toujours brancher la masse. Le courant ne peut circuler qu'en boucle fermée. Après dans le cas présent ça peut fonctionner sans car les masses des ordis sont reliées par la terre, mais c'est pas propre!

 

Je ne sais pas comment est fait le circuit sur la carte mère, autrement dit si c'est le + ou le - de la LED qui est commandé. Tu peux mesurer avec un multimètre (résistance ou test continuité) entre la broche 'LED -' et une masse pour voir si il y a un contact? Si tel est le cas tu peux simplement brancher le 'LED -' sur la masse arduino et le 'LED +' sur une entrée. Pas besoin de résistance en principe mais cette dernière (genre 1k) peut éviter de la fumée en cas d'erreur... Comme l'arduino est branché sur un autre ordi perso je mettrais un optocoupleur pour ne pas trop mélanger les potentiels, mais ce n'est pas nécessaire (d'autant plus qu'on aura pas d'isolation galvanique réelle car les masses sont reliées par la terre comme je disais - sauf ordi portable peut-être).

 

edit: Je suppose que la LED est simplement commandée par du 5V avec une résistance, je ne pense pas qu'il y ait une source de courant sur la carte mère pour ça...

Message cité 1 fois
Message édité par rat de combat le 24-06-2016 à 19:50:44
n°138353
gizmo15
Posté le 28-06-2016 à 13:24:46  profilanswer
 

Bonjour,
 
Petite question: vous avez déjà utilisé des capteurs gyro et accéléromètre?
l'idée c'est de mettre ca dans une voiture pour logguer les G and co sur circuit.
 
merci

n°138359
Profil sup​primé
Posté le 28-06-2016 à 21:54:09  answer
 

rat de combat a écrit :


Oula :o À moins de savoir exactement ce qu'on fait il faut toujours brancher la masse. Le courant ne peut circuler qu'en boucle fermée. Après dans le cas présent ça peut fonctionner sans car les masses des ordis sont reliées par la terre, mais c'est pas propre!
 
Je ne sais pas comment est fait le circuit sur la carte mère, autrement dit si c'est le + ou le - de la LED qui est commandé. Tu peux mesurer avec un multimètre (résistance ou test continuité) entre la broche 'LED -' et une masse pour voir si il y a un contact? Si tel est le cas tu peux simplement brancher le 'LED -' sur la masse arduino et le 'LED +' sur une entrée. Pas besoin de résistance en principe mais cette dernière (genre 1k) peut éviter de la fumée en cas d'erreur... Comme l'arduino est branché sur un autre ordi perso je mettrais un optocoupleur pour ne pas trop mélanger les potentiels, mais ce n'est pas nécessaire (d'autant plus qu'on aura pas d'isolation galvanique réelle car les masses sont reliées par la terre comme je disais - sauf ordi portable peut-être).
 
edit: Je suppose que la LED est simplement commandée par du 5V avec une résistance, je ne pense pas qu'il y ait une source de courant sur la carte mère pour ça...


 
merci, je regarde ça prochainement! :jap:

n°138361
Profil sup​primé
Posté le 28-06-2016 à 21:56:09  answer
 

gizmo15 a écrit :

Bonjour,

 

Petite question: vous avez déjà utilisé des capteurs gyro et accéléromètre?
l'idée c'est de mettre ca dans une voiture pour logguer les G and co sur circuit.

 

merci

 

ouiiiiiiiiiiiii

 

j'ai un 9-dof adafruit, celui recommandé ici: https://hackaday.io/project/8952-el [...] eadtracker

 

le code que le mec a filé fonctionne pas. j'ai refait un truc qui fonctionne, mais pas suffisamment bien pour ce que je veux faire (disons que le 9-dof ne remplacera pas un trackIR). la lib est peu/mal documentée et j'ai galéré un peu pour la calibration mais je m'en suis sorti. je te resors des liens vers des forums adafruit sous peu où j'avais posté mes problèmes, et mes solutions

 

et bim! https://forums.adafruit.com/viewtop [...] 31&t=92641

 

dis-moi si tu as des questions! je suis vraiment pas spécialiste mais je peux peut-être t'aider

Message cité 1 fois
Message édité par Profil supprimé le 28-06-2016 à 21:58:58
n°138363
marcoluni
RAS
Posté le 29-06-2016 à 09:31:31  profilanswer
 

Sinon pour tester vous pouvez toujours prendre un adaptateur wii nunchuk, y a les capteurs embarqués de gyro et accéléromètres dans cette petite manette.

 

Faudrait que je teste çà a l'occasion sur la moto d'ailleurs ...  :whistle:

 

http://forum.arduino.cc/index.php?topic=43106.0

 

http://hacknmod.com/hack/how-to-ch [...] -nunchuck/


Message édité par marcoluni le 29-06-2016 à 09:33:20
n°138364
Turkleton
I don't quite understand you
Posté le 29-06-2016 à 10:15:08  profilanswer
 

J'ai un pote qui veut que je lui fasse un système de commande des volets roulants de sa future baraque (par appli smartphone si possible). Je crois que certains ici ont déjà fait ça, non ? Vous pourriez me guider un peu sur les choix à faire ?


---------------
If you think it could look good, then I guess it should
n°138376
ObsydianKe​nobi
peloton suicida
Posté le 29-06-2016 à 20:51:36  profilanswer
 

Vu que les heures de lever et coucher du soleil sont connues, il a qu'à mettre une programmation horaire et basta :o


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
mood
Publicité
Posté le 29-06-2016 à 20:51:36  profilanswer
 

n°138382
rat de com​bat
attention rongeur méchant!
Posté le 29-06-2016 à 23:58:51  profilanswer
 

 

Si jamais il n'y a pas de continuité entre la broche 'LED -' et la masse on a à faire à une commande en open-collector. Dans ce cas: Relier la masse de l'arduino avec la masse de la carte mère (ou de l'alim qui alimente cette dernière, genre se brancher sur un connecteur Molex). Mettre une résistance (quelque kOhm je dirais) entre 'LED -' et 'LED +' et brancher l'entrée arduino sur 'LED -'. Attention le signal sera inversé, LED allumée = '0' sur l'entrée arduino.

 

Si la masse est continue et c'est bien le 'LED +' qui est commandé il y a toujours un risque (que j'estime faible mais bon) que la carte mère sorte plus de 5V. On peut régler ça avec une résistance série (recommandée de toute façon histoire d'éviter la fumée en cas d'erreur) entre la carte mère et l'arduino et une diode Z 4,7V entre l'entrée arduino et la masse.
edit: Même en cas de commande open-collector le problème peut-être présent, la solution est identique: diode Z.


Message édité par rat de combat le 30-06-2016 à 00:48:02
n°138409
gizmo15
Posté le 30-06-2016 à 14:48:39  profilanswer
 


 
Salut,
 
Merci pour la proposition :)
Je suis parti sur un MPU6050 et je verrais si j'arrive à le faire fonctionner ^^

n°138519
yargol
Ex:gpsgpsfr
Posté le 02-07-2016 à 10:02:24  profilanswer
 

Turkleton a écrit :

J'ai un pote qui veut que je lui fasse un système de commande des volets roulants de sa future baraque (par appli smartphone si possible). Je crois que certains ici ont déjà fait ça, non ? Vous pourriez me guider un peu sur les choix à faire ?


 
Mysensors  :)


---------------
Putain, mais tire un câble bordel © Laz-Art . Mon ancien profil
n°138523
Turkleton
I don't quite understand you
Posté le 02-07-2016 à 10:24:03  profilanswer
 

Merci pour le lien, j'ai regardé, effectivement ça pourrait servir :jap:  
 
Mais mes questions étaient plus de l'ordre de "comment relier l'Arduino aux volets ?" ou "comment vous alimentez l'Arduino si elle est positionnée dans le boîtier de l'interrupteur du volet ?", etc


---------------
If you think it could look good, then I guess it should
n°138780
M4vrick
Mad user
Posté le 07-07-2016 à 16:55:05  profilanswer
 

Hello :hello:
 
J'aimerais avoir quelques conseils pour essayer de m'améliorer en code.
 
Je dois remplacer une télécommande 433Mhz, j'ai capturé le signal qui est tout bete et j'arrive à le transmettre grace à mon arduino et un module d'emission 433Mhz.
 
Mon code est ci-dessous. La télécommande fonctionne à 800Hz et le signal se compose de 66 bits.
J'ai donc renseigné mes 66 bits dans un tableau que je parcours ensuite toutes les 650 microsecondes. Je renvois le signal 6 fois avec un interval de 16 millisecondes.
 
est-ce qu'il existe une méthode plus propre ou plus optimisée pour faire la même chose ?
 
(je vous ai mis que la fonction intéressante et la définition du tableau)

Code :
  1. boolean F_ON[66]={1,1,1,1,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1};
  2. void send_ON(){
  3. long int time_tracker = micros(); //initialisation trackeur
  4. for (int t=0; t<6; t++){ //première boucle pour l'interval entre les signaux
  5.  for (int i=0; i<67; i++){ //boucle pour parcours du tableau
  6.   while(micros() < (time_tracker+650)){}; //on attends les 650 micros
  7.   time_tracker = micros();
  8.   digitalWrite(ledPin, F_ON[i]);
  9.   digitalWrite(RfPin, F_ON[i]);
  10.  }
  11. digitalWrite(ledPin, LOW);
  12. digitalWrite(RfPin, LOW);
  13. delay(16);
  14. }
  15. }


 
merci de vos avis :jap:


---------------
--== M4vr|ck ==--
n°138795
rat de com​bat
attention rongeur méchant!
Posté le 07-07-2016 à 23:39:19  profilanswer
 

Code :
  1. for (int i=0; i<67; i++)


erreur! Un tableau de 66 valeurs a des indexes allant de 0 à 65, il faut donc tester i<66. Sauf que ton tableau ne contient que 64 valeurs... Les deux dernières seront donc à 0. À part cela, si c'est constant autant le déclarer ainsi: const boolean

 
M4vrick a écrit :

est-ce qu'il existe une méthode plus propre ou plus optimisée pour faire la même chose ?


Optimisée au niveau utilisation de la mémoire ou du temps de calcul?

 

Pour la mémoire: D'après la doc Arduino:  (Each boolean variable occupies one byte of memory.) == gros gaspillage. On pourrait utiliser un tableau de unsigned char/int/long pour économiser de la place mais il faudra décoder en temps réel (avec du bitshift et du ET binaire). Si la place n'est pas un soucis on peut laisser comme ça, c'est plus simple...

 

Au niveau temps de calcul: On a des délais mais bien faibles (650µs et 16ms), du coup je ne pense pas que ça vaut la peine de sortir un timer et une interruption, surtout sur du Arduino.

Message cité 1 fois
Message édité par rat de combat le 07-07-2016 à 23:42:05
n°138818
M4vrick
Mad user
Posté le 08-07-2016 à 09:36:20  profilanswer
 

rat de combat a écrit :

Code :
  1. for (int i=0; i<67; i++)


erreur! Un tableau de 66 valeurs a des indexes allant de 0 à 65, il faut donc tester i<66. Sauf que ton tableau ne contient que 64 valeurs... Les deux dernières seront donc à 0. À part cela, si c'est constant autant le déclarer ainsi: const boolean  
 


 
Ah oui exact, merci pour la correction. J'avoue avoir fait ce code un peu à l'arrache :D
 

rat de combat a écrit :


Optimisée au niveau utilisation de la mémoire ou du temps de calcul?
 
Pour la mémoire: D'après la doc Arduino:  (Each boolean variable occupies one byte of memory.) == gros gaspillage. On pourrait utiliser un tableau de unsigned char/int/long pour économiser de la place mais il faudra décoder en temps réel (avec du bitshift et du ET binaire). Si la place n'est pas un soucis on peut laisser comme ça, c'est plus simple...
 
Au niveau temps de calcul: On a des délais mais bien faibles (650µs et 16ms), du coup je ne pense pas que ça vaut la peine de sortir un timer et une interruption, surtout sur du Arduino.


 
J'y ai pensé au tableau de int avec décodage, mais j'ai peur de ne pas tenir dans les 650µs lors de la lecture.
En tout cas rien de flagrant pour mon code, je vais continuer comme ca.
 
Merci pour ton avis :jap:


---------------
--== M4vr|ck ==--
n°138851
rat de com​bat
attention rongeur méchant!
Posté le 08-07-2016 à 17:50:13  profilanswer
 

M4vrick a écrit :

Ah oui exact, merci pour la correction. J'avoue avoir fait ce code un peu à l'arrache :D


C'est vraiment 66? Comme je disais dans ton initialisation il n'y a que 64 bits ce qui donnerait 8 octets tout rond.
 

M4vrick a écrit :

J'y ai pensé au tableau de int avec décodage, mais j'ai peur de ne pas tenir dans les 650µs lors de la lecture.


Ca ne devrait pas être un problème.

n°138859
Turkleton
I don't quite understand you
Posté le 08-07-2016 à 22:52:40  profilanswer
 

Le décalage de bit ça doit être une des opérations les plus rapides à effectuer pour un processeur.


---------------
If you think it could look good, then I guess it should
n°138862
rat de com​bat
attention rongeur méchant!
Posté le 08-07-2016 à 23:46:48  profilanswer
 

Turkleton a écrit :

Le décalage de bit ça doit être une des opérations les plus rapides à effectuer pour un processeur.


Il faut différencier: Un décalage d'une position sur AVR c'est un cycle (sur un registre 8 bit). Par contre si on veut décaler d'un nombre n le compilateur doit fabriquer une boucle car les AVR ne possèdent pas de https://fr.wikipedia.org/wiki/Barrel_shifter (à ma connaissance). Ceci étant en 650µs on a largement le temps. Les AVR sont d'architecture RISC, toutes les opérations (élémentaires bien sûr) sont "rapides" = 1-4(5?) cycles d'horloge.

n°138869
Turkleton
I don't quite understand you
Posté le 09-07-2016 à 11:04:17  profilanswer
 

Merci pour la précision, effectivement je parlais pour un proc PC en pensant que c'était sans doute pareil pour un AVR :jap:


---------------
If you think it could look good, then I guess it should
n°138870
Natopsi
☄️Just end it already!☄️
Posté le 09-07-2016 à 11:17:53  profilanswer
 

Vu la vitesse de l'engin doit y avoir moyen de faire le décodage en moins de 5µs en codant en assembleur :D


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°138877
rat de com​bat
attention rongeur méchant!
Posté le 09-07-2016 à 21:16:38  profilanswer
 

Natopsi a écrit :

Vu la vitesse de l'engin doit y avoir moyen de faire le décodage en moins de 5µs en codant en assembleur :D


selon la vitesse (c'est quelle fréquence d'horloge les Arduino?) et le compilateur même avec du C en moins de 5µs - essayer et voir.

n°138878
Natopsi
☄️Just end it already!☄️
Posté le 09-07-2016 à 21:26:34  profilanswer
 

Un arduino ça tourne à 16MHz, un AVR 8 bit ça te torche la majorité des instructions simples en un coup d'horloge soit 0,0625µs et un branchement prends maxi 3 coups d'horloge.
 
Vais essayer, ça fait longtemps que j'ai pas fait d'assembleur RISC  [:am72:5]


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°138880
Natopsi
☄️Just end it already!☄️
Posté le 09-07-2016 à 22:42:01  profilanswer
 

Bon donc j'ai compilé ce code (pas testé en vrai:o ) :
 

Code :
  1. uint8_t data[4] = {0xDE,0xAD,0xBE,0xEF};
  2. void setup() {
  3.   // put your setup code here, to run once:
  4.   pinMode(10,OUTPUT);
  5. }
  6. void loop() {
  7.   // put your main code here, to run repeatedly:
  8.   uint8_t * data_ptr; 
  9.   uint8_t i,j;
  10.   uint8_t dat;
  11.   data_ptr = data;
  12.   for(int i=0;i<sizeof(data);++i)
  13.   {
  14.       dat = *data_ptr;
  15.       data_ptr++;
  16.       for(int j=0;j<8;j++)
  17.       {
  18.         if(dat&0x80)
  19.         {
  20.           digitalWrite(10,HIGH);
  21.         }
  22.         else
  23.         {
  24.          digitalWrite(10,LOW);
  25.         }
  26.         dat = dat << 1;
  27.       }
  28.   }
  29. }


 
J'ai décodé l'assembleur généré derrière, à la grosse entre deux "digitalWrite" j'ai maxi 23 coups d'horloge en dehors du temps perdu par le "digitalWrite" (suis pas allé voir ce qu'il y a derrière, c'est potentiellement mal branlé), soit 1.44µs.
 
L'assembleur généré est globalement optimisé. Par exemple le compilateur décide de remplacer la boucle sur i par une boucle sur le pointeur data_ptr, ce qui lui permet de:
-bénéficier d'une instruction (ld Rd, Y+) qui fait dat = *data_ptr et data_ptr++ en même temps et en deux coups d'horloge
-économiser un registre pour stocker i en faisant for(data_ptr=data;data_ptr<data+sizeof(data);++i)
 
 [:implosion du tibia]

Message cité 1 fois
Message édité par Natopsi le 09-07-2016 à 22:42:11

---------------
ACH/VDSHFRCoin◈1435mm⚡
n°138881
M4vrick
Mad user
Posté le 09-07-2016 à 22:54:00  profilanswer
 

Impressionnant.. j'ai encore beaucoup à apprendre. Et merci pour l'exemple, c'est intéressant à décortiquer


---------------
--== M4vr|ck ==--
n°138882
stepha
Posté le 09-07-2016 à 22:55:43  profilanswer
 

Bonjour,
 
J’aimerai savoir comment réaliser le programme suivant avec des delay real et non entier.
 
#define led 2  
 
void setup()  
{                
  pinMode(led, OUTPUT);    
   
}
void loop()  
{
   
  digitalWrite(led, HIGH);  
  delay(400.43);                
  digitalWrite(led, LOW);    
  delay(400.43);                
}
 
Par avance, merci pour votre aide.
 

n°138883
Natopsi
☄️Just end it already!☄️
Posté le 09-07-2016 à 22:55:50  profilanswer
 

Au passage l'assembleur du loop décortiqué:

.LVL1:
.LBB2:
 .loc 1 22 0
1 ldi r28,lo8(data)
1 ldi r29,hi8(data)
 //data_ptr = data; (i=data)
.LVL2:
.L3: //Début du for(i)
.LBB3:
.LBB4:
 .loc 1 26 0
2 ld r15,Y+
 // dat = *data_ptr;
    // data_ptr++;
.LVL3:
 .loc 1 27 0
1 ldi r16,lo8(8)
1 ldi r17,0
 //initialisation for(j) : j=8
.LVL4:
.L7:
.LBB5:
 .loc 1 31 0
1/2 sbrs r15,7 //dat&0x80 == 0?
2 rjmp .L4 //Oui>saute à L4
 .loc 1 33 0  
1 ldi r22,lo8(1) //r22 = HIGH
2 rjmp .L9 //passe dirèctement à L9
.L4:
 .loc 1 37 0
1 ldi r22,0 //r22 = LOW
.L9:
1 ldi r24,lo8(10) //r24 = 10
4 call digitalWrite //digitalWrite(r24,r22) <> digitalWrite(10,HIGH/LOW selon comparaison plus haut);
.LVL5:
 .loc 1 39 0
1 lsl r15 //dat = dat << 1
.LVL6:
1 subi r16,1
1 sbc r17,__zero_reg__
 //j--
.LVL7:
 .loc 1 29 0
1/2 brne .L7 //j!=0 faire un tour de plus dans la boucle for(j)
.LVL8:
.LBE5:
.LBE4:
 .loc 1 24 0 discriminator 1
1 ldi r24,hi8(data+4)
1 cpi r28,lo8(data+4)
1 cpc r29,r24 //i==(data+4)?
1/2 brne .L3 //non : faire un tour de plus dans la boucle for(i)


 
en 1° colonne j'ai mis le nombre de cycles d'horloge (les branchements prennent plus de temps s'ils changent le cours du programme).
 
D'ailleurs j'ai merdé, en choisissant un int pour j ça fait perdre deux coups d'horloge :o


Message édité par Natopsi le 09-07-2016 à 22:58:23

---------------
ACH/VDSHFRCoin◈1435mm⚡
n°138885
pyromanu
Posté le 09-07-2016 à 23:04:59  profilanswer
 

DigitalWrite est un peu lent, me semble que ça vérifie pas mal de choses style input/output avant de basculer. Une bonne grosse écriture sur le port en mode brutal est clairement plus rapide.

n°138887
rat de com​bat
attention rongeur méchant!
Posté le 09-07-2016 à 23:16:18  profilanswer
 

Natopsi a écrit :

Bon donc j'ai compilé ce code (pas testé en vrai:o ) : [...]


 :jap: Tu as compilé ça dans l'environnement Arduino ou directement avec avr-gcc? Si 1) comment tu fais pour sortir les fichiers debug (listing que tu as posté)? C'est quoi le réglage au niveau optimisation, speed (O3) ou taille (Os)?
 

Citation :

Une bonne grosse écriture sur le port en mode brutal est clairement plus rapide.


Ça c'est sûr, au mieux une instruction (sbi). Pour digitalWrite il y a des machins plus rapides qui profitent du language C++, faut regarder sur le net.

n°138888
Natopsi
☄️Just end it already!☄️
Posté le 09-07-2016 à 23:27:29  profilanswer
 

rat de combat a écrit :


 :jap: Tu as compilé ça dans l'environnement Arduino ou directement avec avr-gcc? Si 1) comment tu fais pour sortir les fichiers debug (listing que tu as posté)? C'est quoi le réglage au niveau optimisation, speed (O3) ou taille (Os)?


 
Avec avr-gcc.
La méthode:

  • Lancer la compilation dans l'environnement arduino en ayant choisi l'option "afficher les résultats détaillés" qui affiche toutes les commandes effectuées
  • Copier le contenu de la petite fenêtre en bas vers un éditeur de texte :o
  • Rechercher la ligne qui concerne le fichier qui nous intéresse
  • La bricoler (voir exemple ci dessous*) pour rajouter l'option -S qui sort de l'assembleur et adapter le chemin
  • Lancer une fenêtre de commande dans le dossier de l'IDE arduino
  • Lancer la commade et récupérer le résultat la ou il tombe (dossier temporaire)


On voit d'ailleurs que c'est optimisé pour la taille du coup :D
 
 
*:

C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=158 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Users\User\AppData\Local\Temp\build7591574591090453781.tmp\Fast.cpp -o C:\Users\Olivier\AppData\Local\Temp\build7591574591090453781.tmp\Fast.cpp.o


devient

"hardware/tools/avr/bin/avr-g++.exe" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=158 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" C:\Users\User\AppData\Local\Temp\build7591574591090453781.tmp\Fast.cpp -S -o C:\Users\Olivier\AppData\Local\Temp\build7591574591090453781.tmp\Fast.cpp.s


par exemple


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°138889
rat de com​bat
attention rongeur méchant!
Posté le 09-07-2016 à 23:28:00  profilanswer
 

stepha a écrit :

Bonjour,
 
J’aimerai savoir comment réaliser le programme suivant avec des delay real et non entier.
 
#define led 2  
 
void setup()  
{                
  pinMode(led, OUTPUT);    
   
}
void loop()  
{
   
  digitalWrite(led, HIGH);  
  delay(400.43);                
  digitalWrite(led, LOW);    
  delay(400.43);                
}
 
Par avance, merci pour votre aide.
 


Tu pourrais utiliser DelayMicroseconds, sauf que la valeur max c'est 16383. Une solution serait de combiner les deux fonctions: delay(400); delayMicroseconds(430);
Sauf que ça ne sera jamais exact, à cause des délais causés par les appels des fonctions et d'éventuelles interruptions (même si tu en utilise pas je suppose qu'il doit y avoir un timer qui tourne par défaut en arrière-plan). En même temps pour une LED je ne vois pas l'intérêt d'un délai si précis, tu veux faire quoi?
 

Natopsi a écrit :

Avec avr-gcc.
La méthode: [...]

Merci pour l'info!
 

Citation :

On voit d'ailleurs que c'est optimisé pour la taille du coup :D

Ça serait intéressant de voir si -O3 change quelque chose (et avec quelle intensité).
 
Ce qui me plaît pas par contre c'est que je ne vois pas de -Wall dans la ligne de commande, pourquoi les gars qui fabriquent l'environnement Arduino ne mettent pas ça par défaut? (On peut l'activer manuellement il me semble.)

Message cité 1 fois
Message édité par rat de combat le 09-07-2016 à 23:32:52
n°138890
stepha
Posté le 09-07-2016 à 23:45:05  profilanswer
 

ok merci,
 
je vais regarder avec la fonction millis() et micros()

n°138910
Natopsi
☄️Just end it already!☄️
Posté le 10-07-2016 à 13:19:27  profilanswer
 

rat de combat a écrit :

Merci pour l'info!
 

Citation :

On voit d'ailleurs que c'est optimisé pour la taille du coup :D

Ça serait intéressant de voir si -O3 change quelque chose (et avec quelle intensité).
 
Ce qui me plaît pas par contre c'est que je ne vois pas de -Wall dans la ligne de commande, pourquoi les gars qui fabriquent l'environnement Arduino ne mettent pas ça par défaut? (On peut l'activer manuellement il me semble.)


Sans optimisation c'est comme attendu un massacre (stockage/destockage systématique sur la pile). Exemple pour un bête i++:

ldd r24,Y+4
ldd r25,Y+5
adiw r24,1
std Y+5,r25
std Y+4,r24


 
Avec O3 c'est kiff kiff dans ce cas particulier et le temps d’exécution semble proche:

.L__stack_usage = 5
.LVL1:
.LBB2:
 .loc 1 13 0
1 ldi r16,lo8(data)
1 ldi r17,hi8(data)
.LVL2:
.L8:
.LBB3:
.LBB4:
 .loc 1 16 0
1 movw r30,r16
1 ld r15,Z+
1 movw r16,r30
.LVL3:
 .loc 1 17 0
1 ldi r28,lo8(8)
1 ldi r29,0
2 rjmp .L6
.LVL4:
.L3:
.LBB5:
 .loc 1 26 0
1 ldi r22,0
1 ldi r24,lo8(10)
4 call digitalWrite
.LVL5:
 .loc 1 28 0
1 lsl r15
.LVL6:
1 sbiw r28,1
 .loc 1 18 0
1/2 breq .L10
.L6:
 .loc 1 20 0
1 sbrs r15,7
2 rjmp .L3
 .loc 1 22 0
1 ldi r22,lo8(1)
1 ldi r24,lo8(10)
4 call digitalWrite
.LVL7:
 .loc 1 28 0
1 lsl r15
.LVL8:
1 sbiw r28,1
 .loc 1 18 0
1§2 brne .L6
.L10:
.LBE5:
.LBE4:
 .loc 1 14 0
1 ldi r31,hi8(data+4)
1 cpi r16,lo8(data+4)
1 cpc r17,r31
1/2 brne .L8


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°139073
TotalRecal​l
Posté le 14-07-2016 à 22:54:58  profilanswer
 

Bonjour,
Petite question à ceux qui connaissent bien la gamme Arduino (et compatible) : je vois sur la site officiel que la Nano part à la retraite :
https://www.arduino.cc/en/Main/ArduinoBoardNano

 

Je trouve le format pratique pour des tous petits projets pas chers et j'ai des projets qui s'en servent, pinout et empreinte exactes compris.
Le seul truc vraiment obsolète c'est le connecteur miniusb.
-> Il y a une nouvelle carte sensée reprendre le même format ou c'est cuit ? Je vais en racheter quelques unes tant qu'on la trouve encore :o.
Merci :jap:

Message cité 1 fois
Message édité par TotalRecall le 14-07-2016 à 22:55:20

---------------
Topic .Net - C# @ Prog
n°139075
SuperSic
Posté le 14-07-2016 à 23:30:30  profilanswer
 

TotalRecall a écrit :

Bonjour,  
Petite question à ceux qui connaissent bien la gamme Arduino (et compatible) : je vois sur la site officiel que la Nano part à la retraite :  
https://www.arduino.cc/en/Main/ArduinoBoardNano
 
Je trouve le format pratique pour des tous petits projets pas chers et j'ai des projets qui s'en servent, pinout et empreinte exactes compris.  
Le seul truc vraiment obsolète c'est le connecteur miniusb.  
-> Il y a une nouvelle carte sensée reprendre le même format ou c'est cuit ? Je vais en racheter quelques unes tant qu'on la trouve encore :o.
Merci :jap:


Il part à la retraite par le producteur officielle mais les versions alternatives et notamment les copies chinoises seront encore dispo, non ?
A ta place, je m'en prendrai une cargaison. :D


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°139076
Natopsi
☄️Just end it already!☄️
Posté le 14-07-2016 à 23:53:34  profilanswer
 

Copies effectivement, sinon t'as la micro qui reste proche.


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°139082
Electrocut
Posté le 15-07-2016 à 09:25:14  profilanswer
 

Au pire, il devrait toujours rester des clones compatibles ;)

 

Edit :  [:grilled]


Message édité par Electrocut le 15-07-2016 à 09:26:24
n°139098
malouk1984
Posté le 15-07-2016 à 14:49:52  profilanswer
 

Natopsi a écrit :

Copies effectivement, sinon t'as la micro qui reste proche.


 
1€ plus cher la micro que la nano, mais surement plus pratique avec le micro usb :)

n°139099
Natopsi
☄️Just end it already!☄️
Posté le 15-07-2016 à 14:51:42  profilanswer
 

Et support direct de l'USB donc ça laisse le port série dispo  :jap:


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°139138
TotalRecal​l
Posté le 16-07-2016 à 12:10:09  profilanswer
 

La micro est celle que je cherchais, merci. A mon avis c'est le meilleur successeur naturel au nano.  
Pour les clones effectivement on en trouve encore tout plein, aucun souci de ce côté là.


---------------
Topic .Net - C# @ Prog
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  119  120  121  ..  278  279  280  281  282  283

Aller à :
Ajouter une réponse
 

Sujets relatifs
* Réparations de vos appareils électroniques & electromenager * 
Plus de sujets relatifs à : [arduino] Topic Unique blabla @ Arduino


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)