Tour eiffel lumineuse

=> A vos fer à souder ^^ :) ! Des questions en rapport avec un projet ou une de vos réalisation . Une réalisation/projet, à nous présenter au fur et à mesure de sa réalisation.
Rubrique spéciale "Réalisations finies".
MERCI DE NE PAS CRÉER UN DOUBLON DANS LA RUBRIQUE DE DESSOUS.
ythomas
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 48
Joined: 12 Mar 2009, 14:13

Re: Tour eiffel lumineuse

Unread post by ythomas »

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!!!
ced35
Rang "5 LEDs"
Rang "5 LEDs"
Posts: 438
Joined: 06 Sep 2008, 21:30

Re: Tour eiffel lumineuse

Unread post by ced35 »

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 ;)
freddy_krueger
Rang "2 LEDs"
Rang "2 LEDs"
Posts: 50
Joined: 07 Aug 2009, 18:33

Re: Tour eiffel lumineuse

Unread post by freddy_krueger »

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
jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 904
Joined: 10 Aug 2008, 09:45
Contact:

Re: Tour eiffel lumineuse

Unread post by jC_Omega »

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):

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
}
}
Mes projets perso :
Image
ythomas
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 48
Joined: 12 Mar 2009, 14:13

Re: Tour eiffel lumineuse

Unread post by ythomas »

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.
Termi87
Administrateur
Administrateur
Posts: 3630
Joined: 09 Jul 2006, 21:20
Location: Limousin

Re: Tour eiffel lumineuse

Unread post by Termi87 »

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" ^^
jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 904
Joined: 10 Aug 2008, 09:45
Contact:

Re: Tour eiffel lumineuse

Unread post by jC_Omega »

Termi87 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" ^^
Dans le cas contraire je suis prêt a te racheter ton PICKIT 2 'classe' héhé
Mes projets perso :
Image
Termi87
Administrateur
Administrateur
Posts: 3630
Joined: 09 Jul 2006, 21:20
Location: Limousin

Re: Tour eiffel lumineuse

Unread post by Termi87 »

^^, Attendons attendons ^^, j'ai même pas eu le temps de m'y pencher encore, sauf faire fonctionner 2 programmes intégrés...
ythomas
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 48
Joined: 12 Mar 2009, 14:13

Re: Tour eiffel lumineuse

Unread post by ythomas »

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!!!! : D
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

}
jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 904
Joined: 10 Aug 2008, 09:45
Contact:

Re: Tour eiffel lumineuse

Unread post by jC_Omega »

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
Mes projets perso :
Image
Post Reply