Show Posts
Pages: [1] 2 3 ... 22
1  International / Français / Re: Emplacement de la déclation des variables on: September 25, 2014, 03:12:57 pm
Intéressant, et instructif.
Ca me rappelle ma jeunesse quand je faisais de l'assembleur Z80 en rentrant du collège (j'étais en 4ieme à l'époque).  smiley-grin
2  International / Français / Re: Arduino et calcul on: September 25, 2014, 03:48:52 am
essaie de déclarer:
long a = 0L;

et
a = 10L *3600L;

La représentation binaire des deux résultats que tu obtiens est la même: FFFF8CA0 alors que tu devrais avoir 8CA0.
C'est probablement un problème d'initialisation de tous les bits du long.
Normalement j'imagine que les littéraux int sont convertis en long quand ils sont affectés à une variable de type long mais je n'en suis pas sûr et il est plus prudent de déclarer les littéraux comme étant des long.
3  International / Français / Re: PWM, fréquence et contrôle on: September 23, 2014, 08:21:59 am
Au niveau des pourcentages ce n'est pas déterminé encore cela dépendra de l'étude. Mais pour cela il faut un système qui puisse alterner des phases de plusieurs heures d'une certaine intensité puis enchaîner avec une autre intensité etc.

Mais du coup je ne comprends toujours pas ton tableau car tu m'a présenté cette solution avant que le  RTC soit évoqué dans la conversation donc j'imagine que c'est une solution qui ne nécessite pas de RTC ?

Tu mélanges un peu tout.
L'horloge RTC sert à avoir une base de temps fiable. Pour ton besoin, le circuit qui t'as été indiqué convient largement en termes de précision, en plus il intègre un capteur de température ( http://www.emartee.com/product/42059/ )
A partir de l'heure courante, si ton unité de temps est les heures, tu peux avoir un tableau de la forme:
long horaires [3][2] = {{0,255},{8,127},{12,0}}; // {heure début, consigne}

Ainsi, de 0h à 8h du matin, tu as la led allumée à 100%
de 8h à 12h, tu as la led allumée à 50%
et à partir de 12h, la led et éteinte.

Il te faut bien sûr gérer une variable, index sur les colonnes du tableau qui est incrémentée à chaque fois que tu atteins une heure de consigne:
idx=0 au démarrage (premier élément du tableau)
tu regardes l'heure de prochain changement de consigne et tant que tu n'atteinds pas cette heure-là ,tu n'incrémentes pas ta variable (attention il ne faut l'incrémenter qu'une seule fois, et pour cela généralement on mémorise la valeur précédente de l'index et on ne l'incrémente que si la condition vue ci-avant est remplie ET la valeur précédente est différente de la valeur courante.

Si je puis me permettre je te conseillerais aussi de lire quelques tutoriaux de base sur le langage C, les structures de contrôle, les boucles et les tableaux. Une fois armé de ces connaissance de base, tout s'éclaire :-)
4  International / Français / Re: PWM, fréquence et contrôle on: September 23, 2014, 07:32:14 am
La consigne c'est la valeur de PWM de la led.
Si tu utilises une horloge RTC, alors l'heure peut être le nb de secondes après minuit en effet.
A voir si tu as besoin d'une heure de début et de fin ou si les consignes s'enchainent directement (heure d'application de la consigne)
5  International / Français / Re: aide pour connecter Bouton 1 touche souple on: September 23, 2014, 06:12:51 am
bonjour à tous alors  j'ai testé  avec mon multimètre ce dit bouton  sa donne  quand on n'appuis pas dessus il ne sonne pas  et quand ont appuis sa sonne bien ^^  smiley-grin
et vous me conseiller quelle  résistance et condensateur à utiliser ?
Pas de résistance, inutile avec le mode INPUT_PULLUP. Sinon un pullup de 10KOhms, ou pulldown, ça dépend de ce dont tu as besoin.
Pour l'anti-rebond, j'ai toujours fait ça de façon logicielle alors je passe smiley
6  International / Français / Re: PWM, fréquence et contrôle on: September 23, 2014, 06:10:29 am
Et quel est le problème de simplement utiliser la fonction delay() ?

Quelque chose du genre :
Code:
void loop(){
analogwrite(sortieLED,255);  //allumer LED
delay(3600000); // attendre une heure
analogwrite(sortieLED,0); //eteindre LED
delay(3600000); //attendre une heure avant de rallumer

}

Delay bloque l'exécution du programme.
Si ton Arduino ne doit rien faire d'autre, c'est faisable.
Mais le besoin n'était pas clairement exprimé. Utiliser delay() pour une temporisation est généralement une mauvaise pratique, sauf dans des cas triviaux.
7  International / Français / Re: aide pour connecter Bouton 1 touche souple on: September 23, 2014, 01:35:07 am
Le plus simple et d'utiliser le pinmode INPUT_PULLUP qui active les résistances de pull-up intégrées à l'Arduino (20 KOhms) et de brancher les inters entre une entrée de l'Arduino et la masse.

Reste après en effet à gérer l'anti-rebond, et il y a plusieurs techniques pour cela.
8  International / Français / Re: PWM, fréquence et contrôle on: September 22, 2014, 02:13:01 pm
On peut faire plus simple en ne stockant que "l'heure" (nb de secondes)  du changement de consigne, et la consigne associée. A moins de considérer que si une heure de fin et la prochaine heure de début ne sont pas la même, la consigne doit être 0 entre ces deux heures.

Si le sketch doit tourner en permanence il faut aussi tenir compte du fait que  le compteur de millis() repasse à zéro tous les 49j et 17h environ.
9  International / Français / Re: PWM, fréquence et contrôle on: September 22, 2014, 01:24:39 pm

Mais comment enchainer ensuite sans devoir saisir autant de if que l'on veut de période ?

tu stock dans un tableau les point qui t'intérése (horraire) et tu ne fait qu'une boucle if qui prend comme parametre les valeur de ton tableau par exemple.

Oui, un tableau à 2 dimensions: une colonne par "pas" et 2 lignes: l'heure (nb de secondes) et la valeur PWM associée.
10  International / Français / Re: boutons de la bredboard enfichable on: September 22, 2014, 09:56:30 am
C'est un bouton à usage général, non branché.  Faut juste suivre les pistes pour savoir où elles mènent.
J'ai pas mon breadboard shield sous la main pour vérifier exactement où arrivent les pistes du bouton.
11  International / Français / Re: PWM, fréquence et contrôle on: September 22, 2014, 09:07:03 am
Non pas vraiment.
Plutôt un truc du genre (non testé mais c'est l'idée):

Code:
int origine=0;
void setup(){
  origine = millis();                   //donc origine == 0 ??
}

void loop(){

if((millis()-origine) <3 600 000){
analogwrite(sortieLED,255);  //allumée la première heure
}else{
analogwrite(sortieLED,0);  //eteinte la seconde heure
}

if((millis()-origine)>7 200 000){
 origine = millis(); // au bout de 2h, on boucle -> on rallume la led
  }
}
12  International / Français / Re: PWM, fréquence et contrôle on: September 22, 2014, 08:32:14 am
La valeur écrite le reste tant qu'on n'en écrit pas une nouvelle.
Donc pour éteindre la led 1s après l'avoir allumée par ex, il faut stocker la valeur de millis() dans une variable dans  la fonction setup().
Dans loop(), si millis()-valeur d'origine > 1000 alors éteindre la led, sinon l'allumer.

Concernant la fréquence du PWM, ça dépend des usages qu'on veut en faire mais pour piloter une LED j'ai toujours laissé la fréquence par défaut.
13  International / Français / Re: Séquenceur à "mémoire de mouvements" on: September 19, 2014, 12:20:59 pm
Oui d'accord, j'aurais souhaité ne pas passer par des cartes préfaites, j'aime bien tout faire par moi-même (je préfère dans la mesure du possible me servir d'un AtMega328 standalone plutôt qu'une carte Uno), mais soit... je rajoute ça sur la liste du matériel , merci beaucoup smiley

Par contre pour ce qui est du câblage, si je veux faire 6 sorties (pour 6 entrées), il me faut donc 6 MCP4725 Breakout Board, ok.
Le SDL et SDL seront branchés en série ?

Qu'en est-il au niveau code ?
Tu ne peux chaîner que 2 de ces cartes mais il doit en exister d'autres avec plus de lignes d'adresse accessibles.
Je te laisse regarder les exemples de codes fournis sur la page indiquée.... smiley-wink
Les sda et scl sont branchées en parallèle. La broche a0 détermine l'adresse i2c
14  International / Français / Re: Séquenceur à "mémoire de mouvements" on: September 19, 2014, 12:10:06 pm
Ah je n'avais pas pensé à ça... C'est vrai que le PWM sont des impulsions plus ou moins rapides...  J'avais essayé d'amplifier un signal PWM avec un transistor un jour pensant faire une sorte de VCO sin ou tri mais ça n'avais pas fonctionné, c'est peut-être à cause de ça ?

Bref, donc oui du coup... je n'ai jamais utilisé de convertisseur numérique > analogique et je n'ai donc aucune idée de comment ça fonctionne  smiley-sad
Pour toi le plus simple serait d'utiliser ça:  http://www.adafruit.com/products/935
Il t'en faut un par canal.
L.'avantage par rapport au filtrage RC d.une sortie pwm c'est que tu contrôles parfaitement la tension de sortie.
15  International / Français / Re: Séquenceur à "mémoire de mouvements" on: September 19, 2014, 10:20:36 am
Attention, l'Arduino n'a pas de sortie analogique!
Ca va te poser problème si c'est pour piloter des VCA.VCO ou filtres d'un synthé.

Il y a bien une astuce qui permet en gros d'avoir une sortie analogique à partie d'une sortie PWM à condition que l'entrée soit à haute impédance mais je doute que ça puisse être applicable à ton besoin.

Si tu veux commander ça vaudrait mieux des convertisseurs numérique->analogique sur I2C en sortie par exemple.

Pages: [1] 2 3 ... 22