Loading...
  Show Posts
Pages: [1] 2 3 ... 122
1  International / Français / Re: Remise à zéro de la fonction millis() on: April 09, 2013, 03:19:24 pm
[HS]
(Re)voir apparaitre Barbudor et JF sur le forum , qui plus est sur le même topic, ça... c'est "agréable"  smiley-mr-green

ça c'est gentil.... un peu débordé ces temps-ci  smiley-mr-green
Pareil smiley
2  International / Français / Re: Remise à zéro de la fonction millis() on: April 09, 2013, 01:29:32 pm
Il n'est pas souhaitable de remettre à zero la fonction millis().
D'autres librairies pourrais s'en servir et cela les perturberait.
Il vaut mieux apprendre à s'en servir correctement.

Le compteur utilisé par millis() est un unsigned long (entier non signé 32 bits).
Il suffit de mémoriser les valeurs de temps dans une variable du même type.
Ainsi les différences seront aussi effectuées sur 32 bits.

Contrairement aux maths où les nombres sont infinis, en informatique les nombres sont limités par la résolution.
Ainsi un entier non signé de 8 bit permet de compter de 0 à 255 et donc 255+1 = 0

Raisonnons sur 8 bits pour simplifier :

Code:
uint8_t t1, t2, diff; // prenons des entiers 8 bits non signés en considérant pour simplifié que millis() retourne ce type
t1 = millis();   // retourne par exemple 202
fonction_truc_qui_bouffe_du_temps();
t2 = millis();   // retourne pas exemple 4 (par ce que le compteur a rebouclé)
diff = t2 - t1;
Serial.print( diff );

Commbien de temps s'est-il écoulé ?
4 - 202 = ..... = 58

Car -198 n'existe pas en uint8_t.

Pour comprendre il faut revenir à la représentation binaire :
 
Code:
   4 :   0000 0100
- 202:   1100 1010
=          0011 1010 = 58

Une autre façon de le voir c'est comme une piste de course circulaire :
Tu as de balises : 0, 1, 2, 3 .... 254, 255 et tu revient à 0
La distance entre 2 coureurs est toujours Posution2 - Position1 Modulo 256

C'est le modulo qui est important

Donc appliqué à millis() avec des unsigned long, ca marche tout seul, la différence de 2 dates te retournera toujours le temps écoulé entre les 2 dates même s'il y a eu un rebouclage du compteur.

A+
3  International / Français / Re: Communication avec Raspberry Pi en PHP ou NodeJS on: March 22, 2013, 01:30:32 pm
Le problème a été discuté sur le site d'Alexandre Alapetite
IL dit de se référer à https://github.com/voodootikigod/node-serialport/issues/81
Mais je n'ai pas regardé moi même depuis
Trop débordé par d'autres choses
4  International / Français / Flash 4 on: March 01, 2013, 10:11:10 am
Les erreurs se produisent durant la compilation de ton sketch. Elles sont probablement dues a ton sketch et pas à Flash4.
Sans ton sketch, peut rien faire

Et puis ici c'est un sujet a propos de Web Serveur, pas de Flash4 smiley-wink
5  International / Français / Re: Charger un programme à partir d'une carte SD on: February 26, 2013, 03:24:09 pm
Je suis désolé, je t'ai un peu laisse tombé, mais pas aml débordé ces derniers temps. Ma UNO est au placard depuis les vacances de Noel...

Normalement le bootloader modifié, s'il trouve la carte SD et le bon fichier HEX va recopier ce fichier HEX dans la flash de l'ATmega puis lancer son exécution.
Si tu laisse la carte SD, a chaque reset la flash est remise à jour.

S'il n'y a pas de carte flash, il écoute le port série pour une téléchargement standard et si rien ne vient il enchaine sur le programme déjà en flash.

Sur un ATmega, le programme doit forcément être dans la flash pour être exécuté.

Il faudrait au moins que je teste en mode Uno si ca marche. Par contre je n'aurais pas de Mega pour tester la version Mega.
6  International / Français / Re: Arduino, WS2801, ULN2803, Bandes LED RGB et Dioder IKEA on: February 26, 2013, 03:17:10 pm
Je connaissais pas mais ca a l'air sympa
Penses a vérifier que c'est achetable

L'avantage de l'I2C c'est que chaque composant a une adresse donc si tu change l'ordre des modules ou si tu en enlève, chaque PCA répondra toujours à la même adresse.
Mais pour cela il faut pouvoir les niveaux des signaux d'adresse A0 à A5
En théorie il y a 128 adresses possibles mais lit bien le paragraphe 7.1.1 car:
- il y a 2 adresses réservées pour envoyer des commandes globales a tous les PCA
- des adresses I2C réservées
- si tu as d'autres composants I2C sur ton bus tu ne peut pas réutiliser ces adresses
Il est bien précisé qu'il n'y a pas de pullup ou pulldown interne. Il faut donc impérativement fixer chaque fil soit à GND (0) soit ) VCC (1) pour configurer l'adresse à laquelle le composant va répondre.

Contrairement au WS2801, la sortie n'est pas un générateur de courant mais configurable en drain ouvert (max 25mA) ou totem-pole.
Tu choisira le mode drain ouvert pour piloter 1 led vers le VCC (sans oublier la résistance de limitation de courant)
Pour plus de puissance et piloter un darlington (type ULN2xxx) ou un MOSFET de puissance, il faut choisir le mode tomtem-pole.
Pour piloter plusieurs LED en série, il faut impérativement passer par un transistor externe.

Ca m'a l'air un bon choix. Bien pour les systèmes en étoile. Le WS2801 est vraiment dédier aux systèmes série genre bandeau de led.
Va falloir que j'm'en procure 1 ou 2 pour essayer.

7  International / Français / Re: Arduino, WS2801, ULN2803, Bandes LED RGB et Dioder IKEA on: February 25, 2013, 04:14:12 pm
POL n'est pas nécessaire. C'est un contrôle de polarité. Si tu laisses en l'air alors la valeur 0 éteint la led et la valeur max allume au max. Si tu relie au GND alors la valeur 0 donne l'intensité max et vice-versa.

Avec un chaînage CKO/SDO -> CKI/SDI oui ca marche. Mais ce n'est pas très adapté a des modules enfichables:
- si tu enlève un module ou s'il tombe en panne, tu perds tout le reste.
- tu peux prévoir un "bouchon" pour assurer la continuité en cas d'absence de module mais dans ce cas chaque module n'aura pas une "adresse/position" fixe dans le soft en fonction de son connecteur.
Si cela est ok pour toi, tu peux continuer ainsi.
Sinon on peut envisager de mettre un peu d'électronique sur la carte multiled afin de piloter chaque module led indépendemment du fait que les autres soient là ou pas.
8  International / Français / Re: Arduino, WS2801, ULN2803, Bandes LED RGB et Dioder IKEA on: February 25, 2013, 02:56:49 pm
Pour ce qui est du schéma WS2801+ULN, je viens de voir le schéma dans le sujet que tu cite.
Ok, c'est une astuce, ca marche.
Mais tu as quand même fait une erreur de schéma.

Sinon, si le principe c'est de relier des "LED Module" et des "Ikea Dioder Module" a ton "MultiLED Module", je redis ce que j'ai dis plus haut :
Si tous tes modules sont en parallèle, alors ils recevront tous les mêmes commandes et feront tous la même chose.
Tu ne va pas pouvoir ainsi adresser chaque WS2801 individuellement. Il n'y a pas de notion d'adresse individuelle dans le WS2801.
Regarde mieux les schémas dans le sujet dont tu donne toi même le lien : les 2 WS2801 sont en série, pas en //.
Regarde aussi le schéma page 5 de la datasheet

Qu'est que Living Light ?
J'ai trouvé çà mais le logo n'est pas le même.

Est-ce que tu essaye de faire quelque chose de compatible ou quelque chose de similaire à un produit du commerce ?
9  International / Français / Re: Arduino, WS2801, ULN2803 et LEDs (et surement d'autres choses intéressantes .. on: February 25, 2013, 12:35:49 pm
Bonsoir a tous!

Je ne sais pas si il y a poste de présentation, si oui j'irais me présenter ^^

Si, si, tu peux t'épancher sur ta vie ici : arduino.cc/forum/index.php/topic,98983.0.html
On veut tout savoir

Quote
Pour vous faire une petite idée et me demander plus d'info. Voila quelques schéma et une petit illustration:

Perso j'ai pas tout compris tes schémas. Leur but ne semble pas tout a fait évident.

Qu'est-ce que c'est qu'un module Multi-LED qui n'est qu'une succession de connecteurs en parallèles ? Qu'est-ce que c'est sensé faire ?

Si c'est pour connecté des WS2801, ca ne marche pas comme cela. Si tu les mets tous en // ils vont faire la même chose.
Il faut :
- Soit les mettre en série avec passage de DATA et SCK de l'un à l'autre.
- Soit les mettre en // sur Data mais avec un SCK différent

Le WS2081 n'a pas d'adresse comme un composant I2C. Tu ne peux pas dire auquel tu parles si tu les mets tous en //
Par contre en série, c'est fait pour : les premières données vont dans le 1er WS2801 de la chaine, ensuite il devient transparent et laisse passer les données vers le 2eme qui prend les 3 ou 4 octets suivants et ainsi de suite. C'est un composant destiné à piloter des bandeaux de LEDS


Le 2eme schéma avec WS2801 et ULN2803 est faux. Le WS2801 est un driver de courant. Il n'est pas fait pour piloter un darlington.
Et je ne vois pas le but des 3 résistances en //

On s'arrache les yeux sur tes schémas trop petits (surtout vu les gens d'un age respectable qui traine sur le forum, et encore moi je n'ai pas passé la 50aine)
Je te suggère de les faire un plus gros voir en PDF mais de les attacher comme des pièces jointes plutôt que de les insérer dans le texte.
(Voir sous le texte que tu tapes "Additional Options...")

Sinon, bienvenue sur le forum  smiley-grin

A+

10  International / Le bar / Karma c'est pas un prénom.... on: February 25, 2013, 12:15:59 pm
Y a t'il quelqu'un pour modérer le modérateur s'il vous plait ? Ca dégénère ici  smiley-mr-green

=>[]
11  International / Français / Re: Interruption + Serial.write () --> Problème on: February 23, 2013, 10:41:17 am
Comment est branché le poussoir à l'Arduino ?

Poussoir entre GND et pin 3 ?
Tu as oublié le pullup :
pinMode( 3, INPUT_PULLUP ); ou pinMode( BP, INPUT_PULLUP );

Il y a aussi le fait que le poussoir génère certainement des rebonds ce qui rend la méthode pas forcément très pratique.
12  International / Français / Re: Interruption + Serial.write () --> Problème on: February 23, 2013, 10:11:44 am
Evite de modifier le code préalablement publié, les commentaires que l'on a fait perdent leur sens et ceux qui relisent derrière n'y comprennent rien.

1erement, en oubliant que c'est bouton poussoir qui déclenche l'interruption, le code suivant fait la même chose :

Code:
void loop () {
  digitalWrite (LED, state_BP);
  Serial1.write (state_BP);
}

void interrupt () {
  // switch on/off
  reading_BP = digitalRead (BP);
  if (reading_BP == LOW && previous_BP == HIGH) {
    state_BP = !state_BP;
  }
  previous_BP = reading_BP;
}

2emement, tu as choisit une interruption sur niveau bas
Code:
attachInterrupt (2, interrupt, LOW);
Donc le CPU part en continu en interruption tant que le bouton est en bas.
Ca ne sert à rien.
Utilise plutot FALLING et ta routine d'interruption devient :

Code:
void interrupt () {
  state_BP = !state_BP;
}
Tu n'a plus besoin de détecter le front descendant puis que le mode FALLING le fait pour toi.

Donc il est fort probable que ton interruption ne marche pas bien a cause de cela
13  International / Français / Re: Interruption + Serial.write () --> Problème on: February 23, 2013, 09:45:48 am
Beaucoup de code inutile qui pourrait être simplifié.

Si je comprend bien tu échantillonnes la valeur du bouton poussoir à chaque interruption.
Quand tu détectes un front descendant, tu inverses l'état de la variable state_BP.

Il est préférable de ne pas oublier les pinMode( ); c'est plus fiable.

Pour l'instant je ne vois aucune raison pour laquelle le Serial1.write() devrait changer le fonctionnement du code.

Mega ou Leonardo ?

Qu'est-ce qui génère l'interruption ?


14  International / Français / Re: Interruption + Serial.write () --> Problème on: February 23, 2013, 09:23:32 am
Code ?
15  International / Français / Re: Server web, besoin d'aide on: February 20, 2013, 03:41:45 pm
Que disent les Serial.print() dans le moniteur série ?
Pages: [1] 2 3 ... 122