Parlons Arduino > Vos projets

Un BV animé par ATtiny 85

(1/5) > >>

Dominique:
Bonjour à tous,

Je viens de finir (presque) la réalisation de ma gare sur la base du BV 3 portes "Saint Désert" d'Architecture et Passion.

C'est très agréable à construire, vu que les pièces sont prédécoupées au laser. J'ai voulu le faire aussi bien que possible.

Comme il y a les cloisons à l'intérieur, j'ai décidé d'intégrer un ATtiny85 pour gérer les éclairages des pièces avec un peu d'aléatoire.



Pour cela j'ai récupéré les leds cms d'un ruban et je les ai insérées dans le plafond du rez de chaussée :



Et j'ai installé un Digispark à l'étage supérieur :



Evidemment j'ai gardé la structure intérieure amovible pour reprogrammer l'ATtiny éventuellement.

Mon programme ne casse pas des briques, mais je me suis bien amusé :


--- Code: ---/*
 * animation lumineuse de la gare de La Roche
 * basée sur un ATtiny85
 * 5 pins utilisées : 0 à 4
 * pin 0 = entrée clients, toujours allumée
 * pin 1 = bureau de vente, avec employé
 * pin 2 = salle d'attente, parfois éteinte
 * pin 3 = bureau, parfois allumé
 * pin 4 = etage, parfois allumé
 * pin 5 = entrée analogique pour faire de l'aléatoire
 * une temporisation de 10 secondes change l'état des leds
 *
 * Version 1.00 du 11 juin 2017 Dominique (Locoduino)
 */

 // constantes
 const int tempo1 = 5000;
 const int tempo2 = 10000;

 // variables
 byte leds = 0B00011111; // état des leds - - - 4 3 2 1 0
 unsigned long temps;
 byte randNumber;
 int tempo;
 
 
 void setup() {
  pinMode(0,OUTPUT); // entrée clients
  pinMode(1,OUTPUT); // bureau de vente
  pinMode(2,OUTPUT); // salle d'attente
  pinMode(3,OUTPUT); // bureau
  pinMode(4,OUTPUT); // etage
  temps = millis();
  tempo = tempo1;
  randomSeed(analogRead(5));
}
 
 
 void loop() {
  for (int i=0; i<5; i++) {
    digitalWrite(i, bitRead(leds, i));
  }

  if (millis() > temps+tempo) {
    temps = millis();
    if (tempo == tempo1) {
      tempo = tempo2;
    } else {
      tempo = tempo1;
    }
    randNumber = random(32);
    leds = randNumber | 0B00000011;
  }
}

--- Fin du code ---

Voici une petite video :



Amicalement
Dominique

Thierry:
Très sympathique projet !

DDEFF:
Simple et efficace.
Préparation FFMF ? Bonne idée !

TF53:
Tout simplement excellent!

Puis-je te faire une petite suggestion? Il serait peut être intéressant de rajouter un petit délais de transition entre l'extinction d'une pièce et l'allumage d'une autre (on fait rarement les deux exactement au même moment ;) )

Je vois 2 possibilités pour ce délais :

* la première pièce s’éteint, le délais s'écoule, puis une autre pièce s'allume
* la première pièce est toujours allumée. Une autre pièce s'allume, le délais s'écoule, puis la première pièce s'éteint

bobyAndCo:
Sympathique animation qui met de la vie et participe à la magie d'un réseau miniature.

Et merci pour le partage  8)

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique