Show Posts
Pages: 1 ... 42 43 [44] 45 46 ... 94
646  International / Français / Re: [arduino] PWM, harmonique et afficheur LCD. une histoire de compatibilité on: September 24, 2013, 05:21:14 am
Pour ton tableau de boolean, tu peux regrouper 8 bool dans un octet, il deviendra donc

byte Tab_Sens[125];  //tableau de mesure de sens  --> première optimisation... 125 octets au lieu de 1000.

Ensuite, pour Tab_Mes[] qui prend déjà 2000 octets, as-tu vraiment besoin d'int? est-ce que des valeurs sur 8 bits ne te suffiraient pas?

Je ne saisis pas trop pourquoi tu fais des tableaux à deux dimensions, car la seconde dimension est inutile (n'a qu'une valeur possible...)


Sinon, j'ai trouvé ce qui cloche.

Tu as mis une capa directement sur la pin 10, et tu utilises le régulateur de la carte pour alimenter ton système, donc quand tu mets la pin 10 à 1, ça fait un balaise d'appel de courant, le régulateur s'écrase, et tu fais tomber ton alim suffisamment pour faire des choses zarbis.

Pareil pour ton potar entre les pins 3 et 5 et la masse, c'est pas du tout une bonne idée si ces pins sont des sorties...

Je pense que tu as fais une erreur de schéma, car ton LCD ne peut pas marcher branché comme ça (et je ne vois pas de 5V arriver dessus...)
647  International / Français / Re: [RESOLU] besoin d'aide des physicos-musiciens on: September 23, 2013, 07:20:04 pm
le temps d'intégrer une "table de mixage", et je vous donne tout...
648  International / Français / Re: Bogue avec la bibliothèque Servo, comment corriger ce problème ??? on: September 23, 2013, 07:16:33 pm
Là, tu m'en demandes beaucoup... J'ai déjà du boulot avec mes codes, alors les codes des autres, c'est une toute autre histoire (en plus, chacun a sa façon d'écrire, et ça demande un certain temps à comprendre).

Tu devrais repartir à 0, en incluant les choses une par une, dès que ça bug, c'est le dernier truc que tu as rajouté qui déconne. c'est le meilleur moyen d'avancer... Une fois que toutes tes fonctions marchent, le loop() est un jeu d'enfant!
649  International / Français / Re: calcule deux mosfet on: September 23, 2013, 07:04:58 pm
pourquoi 2 mosfet? parce que tu as 1m de fil? mets du gros fil et un petit mosfet...

ton ruban s'alimente en 12V et ne consomme rien du tout.
650  International / Français / Re: [arduino] PWM, harmonique et afficheur LCD. une histoire de compatibilité on: September 23, 2013, 07:01:50 pm
dans mode_manu() :

Code:
analogWrite(Var,val/4);

est-ce que justement  tu n'écris pas sur une pin du LCD?

sinon, tu n'optimises pas trop tes variables. Tu n'es pas sur un PC, tu m'as pas 2Go de RAM + 10Go d'échange... à mon avis, il y a peut-être un pb de ce côté-là, à voir...

L'autre cause de ton souci : comment alimentes-tu ton montage? (papier crayon photo!)
651  International / Français / Re: 4 servos, 4 boutons, une carte arduino uno R3 on: September 23, 2013, 05:25:39 am
et hop, un 20/20!  smiley-zipper
652  International / Français / Re: [RESOLU] besoin d'aide des physicos-musiciens on: September 23, 2013, 05:24:37 am
tout de suite les grands mots... autant en acheter un tout fait alors...  smiley-mr-green

Bon, j'ai pas pu résister, je l'ai fait... Merci excel pour le calcul des valeurs des timers...

J'arrive donc à partir de mon UNO à jouer 62 notes (soit 5 octaves quand même). un poussoir fait note_on / note_off et un potar fait la hauteur de la note. Le son généré sort des 6 pin PWM : la fondamentale + 5 harmoniques (H0, H1, H2, H3, H4 et H6). avec des résistances au pif, j'ai réussi à faire un son d'accordéon... Mais je pense mettre un petit circuit en plus et des potars pour mixer les signaux (avec un facteur de -1 à +1 pour chaque signal). A voir, mais ça pourrait être rigolo... d'ailleurs, il me reste un potar numérique qui permettrait d'avoir des configs toutes faites...

Pas de midi bien sûr, mais pourquoi pas plus tard? smiley-lol
653  International / Français / Re: [RESOLU] besoin d'aide des physicos-musiciens on: September 23, 2013, 01:07:52 am
Un petit déterrage... puisque tu en parlais...

moi, j'aurais pris un manche à balais, sur lequel j'aurais mis des boutons poussoirs en guise de trous. demande à ta nièce les combinaisons de "trous à boucher" pour chaque note. Tu devrais alors en avoir 11 (de DO à SI, en passant par tous les # ou b). le capteur de pression en tête pour déterminer l'octave, et c'est joué.

en gros, les boutons te donnent le numéro de la note de 1 à 11 auquel tu rajoutes 12 si on souffle plus fort. Pour le midi, c'est tout ce que tu as à faire, tu n'as besoin que d'envoyer un numéro de note + noteON ou noteOFF.

Si tu veux faire encore mieux, tu peux rajouter une sortie sonore à l'aide d'un tone() ou en direct sur un timer, la formule de la fréquence est une suite arithmétique très simple (mais moins simple à programmer) :

Fn+1 = Fn x racine_douzième(2).
Fn+2 = Fn x racine_douzième(2) x racine_douzième(2).
Fn-1 = Fn / racine_douzième(2).

exemple :
Fn+12 = Fn x racine_douzième(2)12, soit Fn+12 = Fn x 2, c'est bien une octave.

Pour jouer directement sur un timer, la période sera :

Tn+1 = Tn / racine_douzième(2). (T = 1/F)

Tu pars d'une référence : un LA440 : F = 440Hz... donc LA# = LA x racine12(2) = 440 x 1,0594630943592952645618252949461 = 446,1637Hz...

tu es prêt à ressortir ta flûte? moi, ça me donne envie d'essayer tiens...
654  International / Français / Re: Bogue avec la bibliothèque Servo, comment corriger ce problème ??? on: September 23, 2013, 12:37:27 am
Bonjour Super_Cinci,

As-tu une préférence comme nom de bibliothèque entre « Servo_Super_Cinci » ou « ServoCinci » ?

L'ami René
servoCini, car l'autre, ça fait vraiment trop long... Puis cinci, ça veut dire 5 en roumain, donc les libs de la "série 5" ? ...

pour ce qui est du passage en libs, là, je suis gros débutant. il y a une question de C / C++ je crois.

Il faut regarder du côté de la nano, si par tout zazar elle ne tournerait pas en 8MHz, dans ce cas, le valeur de ICR1 est à revoir (ICR1 = T pour 8MHz). tu peux rajouter un #if F_CPU == 8000000 pour compiler en fonction de l'horloge CPU.

Je regarde tes fichiers et te tiens au courant. j'ai testé mon .ino sur la toute dernière version de l'IDE (1.5 je crois)

Ca compile, mais je n'ai pas encore testé...
655  International / Le bar / Re: [CDG] tout peut s'optimiser! on: September 22, 2013, 05:17:55 pm
On est bien d'accord, la team a du mérite d'avoir su monter la mayo arduino, mais avec tous les développeurs qu'ils ont maintenant sous la main, ils pourraient gagner à faire bosser les gens qui savent. Tout est une affaire de $$$$.

Il faudra que j'essaie ton int main(), ça m'intrigue... C'est fait. 316 octets contre 682 avant. Reste que sur les 316, il doit y en avoir encore de trop, non? et s'il a reconnu mon DDRF, c'est donc qu'il y a des #include cachés qui trainent encore.
Ha ba tient, voila un exemple parfait de mon commentaire sur les optimisations LTO.
Avec un AVR-GCC à jour j'obtiens 458 octets de base et 148 octets en mode éditeur de texte.
Comme quoi il serait bon que la team arduino se bouge un peu pour ça.
J'ai créé mon cinciduino. J'ai copié le UNO dans boards.txt en changeant le répertoire build.core avec un nouveau dans lequel j'ai mis main.cpp, arduino.h, io.h, sfr_defs.h, iom328p.h, inttypes.h et stdint.h, tous repris en virant un max de trucs (surtout les #include). Normalement, il ne me reste que les defs des types, registres et interruptions, soit que des #define.

compilation du même code avec la carte UNO habituelle : 476 octets en 5 secondes
avec la carte cinciduino UNO : 194 octets en... ben ça a été tellement rapide, j'ai pas eu le temps de compter...

Je suis en bonne voie... C'est donc depuis le main.cpp que tout se joue, et j'ai réussi (enfin je crois)...
656  International / Le bar / Re: [CDG] tout peut s'optimiser! on: September 22, 2013, 08:40:32 am
Nous sommes d'accord, Sky.

Un coup de gueule, c'est une râlerie qui a pour but d'extérioriser un peu. Oui je tenterai d'écrire un core, mais il ne faudra pas y chercher de digitalWrite ou analogRead... il n'y aura rien dedans, que de la définition de registres. il y aura une fonction delay(), mais je l'imagine déjà comme étant un simple timer qui au bout d'un certain temps mettra un boolean à true

Code:
  instruction1();  // on fait un truc,
  cinciDelay(100);  // il faut attendre 100 ms avant de faire l'instruction2,
  mais_là_on_a_d_autres_trucs_à_faire();  // en attendant, peut-être que?
  while(delay);  // on attend que le timer de cinciDelay mette la variable delay à 1 si ce n'est déjà fait...
  instruction2();

je vois déjà le même principe pour un analogWrite() etc etc. Mais je le fais pour ma gueule, pas pour les autres, je n'ai pas envie de passer ma vie à répondre à des emails de gugusses qui n'arriveraient pas à s'en servir... (encore merci pour l'info sur boards.txt dans le topic du 644...)

Il faudra que j'essaie ton int main(), ça m'intrigue... C'est fait. 316 octets contre 682 avant. Reste que sur les 316, il doit y en avoir encore de trop, non? et s'il a reconnu mon DDRF, c'est donc qu'il y a des #include cachés qui trainent encore.

En effet, l'arduino est fait pour les gros débutants (le prenez pas mal les gars, hein!), et quand on voit que même la team utilise des int 16bits signés pour de simples variables sur un proc 8bits, ça me fait vraiment peur...
657  International / Français / Re: µC compatible avec l'IDE arduino? on: September 22, 2013, 08:16:27 am
Bien vu Skywood, ça va aussi dans mon sens... comment rajouter une carte dan arduino :

http://code.google.com/p/arduino/wiki/Platforms C'est pas très à jour, mais on doit pouvoir s'en inspirer.
658  International / Français / Re: Erreur de compilation. on: September 22, 2013, 05:39:02 am
Bonjour smiley

Tu n'aurais pas installé un autre compilateur entre temps, ou un soft qui ne ferait pas bon ménage avec l'IDE et ses petites affaires?
659  International / Le bar / [CDG] tout peut s'optimiser! on: September 22, 2013, 05:35:47 am
Oui, encore une fois, je râle sur la façon dont nous utilisons nos pauvres arduinos...

Pour rigoler, j'ai fait ce sketch :

Code:
void setup() {
  // put your setup code here, to run once:
  DDRF = 0xAA;
}

void loop() {
  // put your main code here, to run repeatedly:
  DDRF = !DDRF;
}
Il ne fait rien du tout, mais l'idée était de voir comment l'IDE allait me traiter tout ça. alors je suis allé chercher le fichier Hex qu'il m'a pondu, et je l'ai décortiqué à l'aide de ReAVR, un petit soft qui transforme les .hex en assembleur. Je ne vous donne pas tout le coe asm, mais j'ai fini par retrouver mon setup() et loop() dedans.

J'y ai surtout vu ce que le core arduino rajoutait, comme l'interruption du timer0 pour le comptage de milliseconds(), et je peux vous dire que cette interruption, elle prend beaucoup de place, juste pour incrémenter une variable de type long (4 octets) en SRAM...

Puis j'ai aussi vu la façon dont le compilateur compilait, ben c'est bien loin d'être optimsé! Si on fait deux opérations à suivre sur un même registre, il va aller copier ce registre, faire l'opération, le remettre à sa place, puis le reprendre et faire la seconde opération et enfin le remettre à sa place. ce n'est qu'une des nombreuses bourdes que j'ai relevées... si j'ai le temps, je ferai la même chose avec un digitalWrite() pour voir...  smiley-mr-green

Je me suis amusé à réécrire le code asm sur une petite partie, et surprise : entre ce que le core arduino dit en C et l'assembleur que je ponds, il y a un rapport 2 (mon code est deux fois plus court, donc deux fois plus rapide). smiley-roll-blue

Bref, CDG = Coup De Gueule smiley-twist : d'une, le core est très mal écrit, et de deux, le compilateur n'optimise pas si bien que ça...

Ce qui me pousse de plus en plus à revoir entièrement les choses en créant mon propre core... et ça ne va pas tarder...
660  International / Français / Re: µC compatible avec l'IDE arduino? on: September 22, 2013, 02:24:33 am
Moi aussi j'ai eu à me poser la question de la taille du proc, car même le MEAG2560 devenait trop juste. J'ai acheté deux STM32, c'est tellement pas cher... Mais ça fait un an que je les ai, et elles sont encore dans leurs boîtes scellées. Je n'ose pas m'y mettre car niveau prog, c'est complètement différent de l'arduino, et c'est tout un nouvel et long apprentissage qui m'attend je pense (je suis autodidacte en prog...).

pour ce qui est de l'IDE-0018, il faut tester les nouvelles libs, il y a des chances que ça bug un peu...
Pages: 1 ... 42 43 [44] 45 46 ... 94