Tour eiffel lumineuse
-
- Rang "1 LEDs"
- Posts: 48
- Joined: 12 Mar 2009, 14:13
Re: Tour eiffel lumineuse
Maintenant je sais : faire clignoter plusieurs leds, controler les leds avec un bouton poussoir ou avec un potentiomètre.....
Bref tout se passe pas mal.
Tous ces progrès sont réalisés à partir du site d'Arduino qui propose des tutoriels très complets.http://arduino.cc/en/Tutorial/HomePage
On dispose du schéma du montage ainsi que du code du programme. Il reste plus qu'à envoyer le programme ds le µC et le tour est joué!! Seul l'anglais peut consister un problème...
Une fois que l'on a compris le fonctionnement du programme, il devient très facile de l'adapter à ses besoins. Voici donc le programme que j'ai adapté pour ma tour eiffel :
/*
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
int etage1a = 0; // LED connected to digital pin 0
int etage1b = 1; // LED connected to digital pin 1
int etage3a = 2; // LED connected to digital pin 2
int etage3b = 3; // LED connected to digital pin 3
int etage5a = 4; // LED connected to digital pin 4
int etage5b = 5; // LED connected to digital pin 5
int etage7a = 6; // LED connected to digital pin 6
int etage7b = 7; // LED connected to digital pin 7
int etage9a = 8; // LED connected to digital pin 8
int etage9b = 9; // LED connected to digital pin 9
void setup() // run once, when the sketch starts
{
pinMode(etage1a, OUTPUT); // sets the digital pin as output
pinMode(etage1b, OUTPUT); // sets the digital pin as output
pinMode(etage3a, OUTPUT); // sets the digital pin as output
pinMode(etage3b, OUTPUT); // sets the digital pin as output
pinMode(etage5a, OUTPUT); // sets the digital pin as output
pinMode(etage5b, OUTPUT); // sets the digital pin as output
pinMode(etage7a, OUTPUT); // sets the digital pin as output
pinMode(etage7b, OUTPUT); // sets the digital pin as output
pinMode(etage9a, OUTPUT); // sets the digital pin as output
pinMode(etage9b, OUTPUT); // sets the digital pin as output
}
void loop() // run over and over again
{
digitalWrite(etage1a, HIGH); // sets the LEDs on/off
digitalWrite(etage1b, LOW);
digitalWrite(etage3a, HIGH);
digitalWrite(etage3b, LOW);
digitalWrite(etage5a, LOW);
digitalWrite(etage5b, HIGH);
digitalWrite(etage7a, HIGH);
digitalWrite(etage7b, LOW);
digitalWrite(etage9a, LOW);
digitalWrite(etage9b, HIGH);
delay(100); // waits for a 100 Millisecond
digitalWrite(etage1a, LOW); // sets the LEDs on/off
digitalWrite(etage1b, HIGH);
digitalWrite(etage3a, LOW);
digitalWrite(etage3b, HIGH);
digitalWrite(etage5a, HIGH);
digitalWrite(etage5b, LOW);
digitalWrite(etage7a, LOW);
digitalWrite(etage7b, HIGH);
digitalWrite(etage9a, HIGH);
digitalWrite(etage9b, LOW);
delay(100); // waits for a second
}
Je me suis basé sur un programme existant. Il se décompose en Trois parties :
La déclaration des entrées sorties utilisées (ici les sorties 0 à 9) que j'ai renommé.
La déclaration des pattes 0à9 come étant des sorties.
Le programme de fonctionnement détaillant l'état de chaque pattes.....
Voici le programme original :
/*
* Blink
*
* The basic Arduino example. Turns on an LED on for one second,
* then off for one second, and so on... We use pin 13 because,
* depending on your Arduino board, it has either a built-in LED
* or a built-in resistor so that you need only an LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
int ledPin = 13; // LED connected to digital pin 13
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop() // run over and over again
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
Il y a moyen d'optimiser ce programme, mais celui ci marche très bien et je l'ai réalisé en moins de 3 heures d'utilisation.
Je continue les tutoriels et commence à intégrer des potentiomètres etc....
Bref, le système est très facile d'accès et permet d'envisager beaucoup de projets!!!
Bref tout se passe pas mal.
Tous ces progrès sont réalisés à partir du site d'Arduino qui propose des tutoriels très complets.http://arduino.cc/en/Tutorial/HomePage
On dispose du schéma du montage ainsi que du code du programme. Il reste plus qu'à envoyer le programme ds le µC et le tour est joué!! Seul l'anglais peut consister un problème...
Une fois que l'on a compris le fonctionnement du programme, il devient très facile de l'adapter à ses besoins. Voici donc le programme que j'ai adapté pour ma tour eiffel :
/*
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
int etage1a = 0; // LED connected to digital pin 0
int etage1b = 1; // LED connected to digital pin 1
int etage3a = 2; // LED connected to digital pin 2
int etage3b = 3; // LED connected to digital pin 3
int etage5a = 4; // LED connected to digital pin 4
int etage5b = 5; // LED connected to digital pin 5
int etage7a = 6; // LED connected to digital pin 6
int etage7b = 7; // LED connected to digital pin 7
int etage9a = 8; // LED connected to digital pin 8
int etage9b = 9; // LED connected to digital pin 9
void setup() // run once, when the sketch starts
{
pinMode(etage1a, OUTPUT); // sets the digital pin as output
pinMode(etage1b, OUTPUT); // sets the digital pin as output
pinMode(etage3a, OUTPUT); // sets the digital pin as output
pinMode(etage3b, OUTPUT); // sets the digital pin as output
pinMode(etage5a, OUTPUT); // sets the digital pin as output
pinMode(etage5b, OUTPUT); // sets the digital pin as output
pinMode(etage7a, OUTPUT); // sets the digital pin as output
pinMode(etage7b, OUTPUT); // sets the digital pin as output
pinMode(etage9a, OUTPUT); // sets the digital pin as output
pinMode(etage9b, OUTPUT); // sets the digital pin as output
}
void loop() // run over and over again
{
digitalWrite(etage1a, HIGH); // sets the LEDs on/off
digitalWrite(etage1b, LOW);
digitalWrite(etage3a, HIGH);
digitalWrite(etage3b, LOW);
digitalWrite(etage5a, LOW);
digitalWrite(etage5b, HIGH);
digitalWrite(etage7a, HIGH);
digitalWrite(etage7b, LOW);
digitalWrite(etage9a, LOW);
digitalWrite(etage9b, HIGH);
delay(100); // waits for a 100 Millisecond
digitalWrite(etage1a, LOW); // sets the LEDs on/off
digitalWrite(etage1b, HIGH);
digitalWrite(etage3a, LOW);
digitalWrite(etage3b, HIGH);
digitalWrite(etage5a, HIGH);
digitalWrite(etage5b, LOW);
digitalWrite(etage7a, LOW);
digitalWrite(etage7b, HIGH);
digitalWrite(etage9a, HIGH);
digitalWrite(etage9b, LOW);
delay(100); // waits for a second
}
Je me suis basé sur un programme existant. Il se décompose en Trois parties :
La déclaration des entrées sorties utilisées (ici les sorties 0 à 9) que j'ai renommé.
La déclaration des pattes 0à9 come étant des sorties.
Le programme de fonctionnement détaillant l'état de chaque pattes.....
Voici le programme original :
/*
* Blink
*
* The basic Arduino example. Turns on an LED on for one second,
* then off for one second, and so on... We use pin 13 because,
* depending on your Arduino board, it has either a built-in LED
* or a built-in resistor so that you need only an LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
int ledPin = 13; // LED connected to digital pin 13
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop() // run over and over again
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
Il y a moyen d'optimiser ce programme, mais celui ci marche très bien et je l'ai réalisé en moins de 3 heures d'utilisation.
Je continue les tutoriels et commence à intégrer des potentiomètres etc....
Bref, le système est très facile d'accès et permet d'envisager beaucoup de projets!!!
-
- Rang "5 LEDs"
- Posts: 438
- Joined: 06 Sep 2008, 21:30
Re: Tour eiffel lumineuse
niquel tous sa
sa a l'air super simple a faire
est ce que tu avait des base déjà en électronique ou programmation ou pas du tout?
sa me tente de plus en plus
sa a l'air super simple a faire
est ce que tu avait des base déjà en électronique ou programmation ou pas du tout?
sa me tente de plus en plus

-
- Rang "2 LEDs"
- Posts: 50
- Joined: 07 Aug 2009, 18:33
Re: Tour eiffel lumineuse
bonsoir , je me posais la question suivante : n'auait il pas été plus judicieux de faire le scintillement de cette tour eiffel à partir d'une led et d'un "bouquet" de fibre optique ?
la fibre est tout meme beaucoup plus facile à installer dans les "recoins" , pratiquement invisible .
De plus avec une led clignotant rapidement , l'effet aurait pu etre saisissant non ?
à part çà , bravo pour ton travail , c'est tres beau
la fibre est tout meme beaucoup plus facile à installer dans les "recoins" , pratiquement invisible .
De plus avec une led clignotant rapidement , l'effet aurait pu etre saisissant non ?
à part çà , bravo pour ton travail , c'est tres beau
-
- Rang "6 LEDs"
- Posts: 904
- Joined: 10 Aug 2008, 09:45
- Contact:
Re: Tour eiffel lumineuse
oo c'est a la fois simple et bizarre pour un habituer au vrai language de programmation, il y a pas de fonction "main" pour la boucle pas de "while" ?
en C, ca ressemblerais plutôt à ça (juste pour faire clignoté une LED sur la patte RB0) (sur un PIC):
en C, ca ressemblerais plutôt à ça (juste pour faire clignoté une LED sur la patte RB0) (sur un PIC):
Code: Select all
void main()
{
TRISB = 0; // configure le PORTB en sortie
while(1)
{
PORTBbits.RB0 = 1; // allume la led qui est sur la patte RB0
DelayMS(1000); // tempo 1s
PORTBbits.RB0 = 1; // éteint la led qui est sur la patte RB0
DelayMS(1000); // tempo 1s
}
}
-
- Rang "1 LEDs"
- Posts: 48
- Joined: 12 Mar 2009, 14:13
Re: Tour eiffel lumineuse
Pour répondre à Ced35 :
J'ai effectivement des notions en électricité, électronique, programmation, mais cela reste vraiment des notions. J'ai eu qqs cours de programmation en Java mais pas de quoi réaliser un programe. J'ai eu des cours d'électronique numérique et analogique. Bref, j'ai de bonnes bases.
Pour freddy_krueger :
C'est vrai que c'est plus simple d'avoir des leds qui clignotent déja ou alors utiliser de la fibre optique. L'utilisation du µC me permets par contre de faire vraiment ce que je veux avec mes leds (créer des animations etc...). Et puis ç'est un projet raisonnable qui me permet de me familiariser avec les µC.
J'ai effectivement des notions en électricité, électronique, programmation, mais cela reste vraiment des notions. J'ai eu qqs cours de programmation en Java mais pas de quoi réaliser un programe. J'ai eu des cours d'électronique numérique et analogique. Bref, j'ai de bonnes bases.
Pour freddy_krueger :
C'est vrai que c'est plus simple d'avoir des leds qui clignotent déja ou alors utiliser de la fibre optique. L'utilisation du µC me permets par contre de faire vraiment ce que je veux avec mes leds (créer des animations etc...). Et puis ç'est un projet raisonnable qui me permet de me familiariser avec les µC.
-
- Administrateur
- Posts: 3630
- Joined: 09 Jul 2006, 21:20
- Location: Limousin
Re: Tour eiffel lumineuse
Beau boulot, continu ainsi. Moi toujours pas attaqué ma programmation de PIC ^^, pas le temps
. Mais un jour
. Il est vrai que le language est "bizarre" ^^


-
- Rang "6 LEDs"
- Posts: 904
- Joined: 10 Aug 2008, 09:45
- Contact:
Re: Tour eiffel lumineuse
Dans le cas contraire je suis prêt a te racheter ton PICKIT 2Termi87 wrote:Beau boulot, continu ainsi. Moi toujours pas attaqué ma programmation de PIC ^^, pas le temps. Mais un jour
. Il est vrai que le language est "bizarre" ^^

-
- Administrateur
- Posts: 3630
- Joined: 09 Jul 2006, 21:20
- Location: Limousin
Re: Tour eiffel lumineuse
^^, Attendons attendons ^^, j'ai même pas eu le temps de m'y pencher encore, sauf faire fonctionner 2 programmes intégrés...
-
- Rang "1 LEDs"
- Posts: 48
- Joined: 12 Mar 2009, 14:13
Re: Tour eiffel lumineuse
Je continue à ma familiariser avec le module arduino. Après avoir compris comment utiliser une cellule photoélectrique ainsi qu'un potentiomètre, je me suis recadré vers mon projet. (autre tutoriel : http://www.ladyada.net/learn/arduino/index.html )
Je veux faire clignoter des leds sur une tour eiffel. Il y aura plusieurs modes :
Le premier : Toutes les leds allumés (OK)
Le second : Faire clignoter aléatoirement les leds (OK voir programme posté précédemment)
Le troisième : Faire clignoter les leds par étage de façon à donner une impression de mouvement. C'est à cette partie que j'ai consacré un peu de mon temps.
En effet, j'ai programmé SEUL cette animation en intégrant tout ce que j'ai pu voir dans les différents tutoriels. Et ça marche!!!!!
J'arrive à faire clignoter 4 Leds en suivant montant puis en descendant. Tout ça en un minimum de programme.
Tout ça pour dire que c'est encore plus accessible que je ne le pensais. Dans tous les langages de programmation que j'ai pu tester, je n'ai jamais réussi à créer qqc qui marche. Arduino me permet donc d'écrire des programmes qui fonctionnent!!!!
J'aurais tendance à dire que le langage est très basique et pour programmer de l'allumage extinction de leds, c'est génial. Pour aller plus loin...Je ne sais pas!
Je poste le programme pour ceux que ça intéresse :
int etage[] = { 0, 1, 2, 3 }; // Désignation des sorties
int nombredesortie = 4; // Nombre total de sortie ou leds car il y a autant de sortie que de leds
int timer1 = 0; // un timer
int timer2 = 1000; // un autre
int bornebasse = 0; //valeur utilisée dans mes boucles
int bornehaute = 1;
void setup() {
int sortie; // Variable
for (int sortie = 0; sortie < nombredesortie; sortie++) {
pinMode(etage[sortie], OUTPUT); // Facon rapide de désigner les pins comme des sorties
}
}
void loop() { //Il y a deux boucles while. Une pour la montée et une autre pour la descente
while (bornebasse != 4) { // Boucle qui allume une à une les leds afin de gravir ma tour eiffel...
for (int sortie = 0; sortie < nombredesortie; sortie++) { // J'éteins à chaque fois toutes les leds
digitalWrite(etage[sortie], LOW);
delay(timer1); } // Voici le timer de 10ms qui n'est pas indispensable mais qui pourra être réutiliser à l'avenir avec un capteur ou autre...
for (int sortie = bornebasse; sortie < bornehaute; sortie++) { // Je demande d'allumer les sorties comprises entre les bornes hautes et basses
digitalWrite(etage[sortie], HIGH);
delay(timer2);} // Un délai plus long permet de donner un meilleur rendu
bornebasse++ ; // Incrémentation des bornes
bornehaute++;}
delay(timer1);
while (bornehaute != 0) {
for (int sortie = 0; sortie < nombredesortie; sortie++) {
digitalWrite(etage[sortie], LOW);
delay(timer1); }
for (int sortie = bornebasse; sortie < bornehaute; sortie++) {
digitalWrite(etage[sortie], HIGH);
delay(timer2);}
bornebasse--;
bornehaute--;}
//J'utilise cette programmation car chaque étage de ma tour eiffel comporte 2 sorties. L'idée d'intervalle est alors un peu plus justifiée
//Cette version sert à vérifier que ça marche sur ma plaque d'essai
}
Je veux faire clignoter des leds sur une tour eiffel. Il y aura plusieurs modes :
Le premier : Toutes les leds allumés (OK)
Le second : Faire clignoter aléatoirement les leds (OK voir programme posté précédemment)
Le troisième : Faire clignoter les leds par étage de façon à donner une impression de mouvement. C'est à cette partie que j'ai consacré un peu de mon temps.
En effet, j'ai programmé SEUL cette animation en intégrant tout ce que j'ai pu voir dans les différents tutoriels. Et ça marche!!!!!
J'arrive à faire clignoter 4 Leds en suivant montant puis en descendant. Tout ça en un minimum de programme.
Tout ça pour dire que c'est encore plus accessible que je ne le pensais. Dans tous les langages de programmation que j'ai pu tester, je n'ai jamais réussi à créer qqc qui marche. Arduino me permet donc d'écrire des programmes qui fonctionnent!!!!

J'aurais tendance à dire que le langage est très basique et pour programmer de l'allumage extinction de leds, c'est génial. Pour aller plus loin...Je ne sais pas!
Je poste le programme pour ceux que ça intéresse :
int etage[] = { 0, 1, 2, 3 }; // Désignation des sorties
int nombredesortie = 4; // Nombre total de sortie ou leds car il y a autant de sortie que de leds
int timer1 = 0; // un timer
int timer2 = 1000; // un autre
int bornebasse = 0; //valeur utilisée dans mes boucles
int bornehaute = 1;
void setup() {
int sortie; // Variable
for (int sortie = 0; sortie < nombredesortie; sortie++) {
pinMode(etage[sortie], OUTPUT); // Facon rapide de désigner les pins comme des sorties
}
}
void loop() { //Il y a deux boucles while. Une pour la montée et une autre pour la descente
while (bornebasse != 4) { // Boucle qui allume une à une les leds afin de gravir ma tour eiffel...
for (int sortie = 0; sortie < nombredesortie; sortie++) { // J'éteins à chaque fois toutes les leds
digitalWrite(etage[sortie], LOW);
delay(timer1); } // Voici le timer de 10ms qui n'est pas indispensable mais qui pourra être réutiliser à l'avenir avec un capteur ou autre...
for (int sortie = bornebasse; sortie < bornehaute; sortie++) { // Je demande d'allumer les sorties comprises entre les bornes hautes et basses
digitalWrite(etage[sortie], HIGH);
delay(timer2);} // Un délai plus long permet de donner un meilleur rendu
bornebasse++ ; // Incrémentation des bornes
bornehaute++;}
delay(timer1);
while (bornehaute != 0) {
for (int sortie = 0; sortie < nombredesortie; sortie++) {
digitalWrite(etage[sortie], LOW);
delay(timer1); }
for (int sortie = bornebasse; sortie < bornehaute; sortie++) {
digitalWrite(etage[sortie], HIGH);
delay(timer2);}
bornebasse--;
bornehaute--;}
//J'utilise cette programmation car chaque étage de ma tour eiffel comporte 2 sorties. L'idée d'intervalle est alors un peu plus justifiée
//Cette version sert à vérifier que ça marche sur ma plaque d'essai
}
-
- Rang "6 LEDs"
- Posts: 904
- Joined: 10 Aug 2008, 09:45
- Contact:
Re: Tour eiffel lumineuse
ca prend forme 
attention par contre de ne pas mettre plus de 2 led de brancher sur une sortie du µC... après ca crame... faut regarder les limite dans la donc du ATMEGA

attention par contre de ne pas mettre plus de 2 led de brancher sur une sortie du µC... après ca crame... faut regarder les limite dans la donc du ATMEGA