Auteur Sujet: Un BV animé par ATtiny 85  (Lu 8218 fois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2490
  • 100% Arduino et N
    • Voir le profil
Re : Un BV animé par ATtiny 85
« Réponse #15 le: avril 15, 2021, 10:01:17 pm »
On a écrit un article exprès sur cette programmation des Digispark :

https://www.locoduino.org/spip.php?article285
Cordialement,
Dominique

Pierre34

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Un BV animé par ATtiny 85
« Réponse #16 le: avril 23, 2021, 02:07:45 pm »
Merci beaucoup pour la réponse et le lien.

Votre site contient tellement d'informations que le plus difficile est de trouver les bons mots pour une recherche.
J'avoue  que je passe du temps à ouvrir tous les fils de conversation et si je ne note pas le nom du fil je ne retrouve que très difficilement l'information.

Je cherchais ATtiny 85 je ne risquais pas de trouver effectivement.

Bravo pour votre site
Bien cordialement

Pierre

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2490
  • 100% Arduino et N
    • Voir le profil
Re : Un BV animé par ATtiny 85
« Réponse #17 le: avril 23, 2021, 08:30:32 pm »
Bravo, vous avez trouvé ce qu’il vous faut.

Si vous voulez faire un guide de recherches dans le site, vous serez le bienvenu  ;D
Cordialement,
Dominique

Fantasio

  • Newbie
  • *
  • Messages: 31
    • Voir le profil
Re : Re : Re : Un BV animé par ATtiny 85
« Réponse #18 le: mai 09, 2021, 11:47:55 am »
Avec WS2812 + Attiny85, il est possible d’augmenter le nombre de pièces éclairées tout en utilisant que 3 pattes (5v, gnd, 0).
Bibliothèque NeoPixel
Je suis convaincu que c'est comme ça qu'il faut faire. L'intérêt est qu'avec une seule sortie on pilote un nombre dingue de LED et comme elles sont multicouleurs, tu peux avoir des effets soit de couleur et même des émulations de feu de cheminée ou de TV en fonctionnement.
La WE2812 est une solution d'avenir pour nos modules et surtout tellement simple.
...

Bonjour à tous

Je partage cette conviction. Dans le monde réel l'éclairage des pièces des bâtiments n'est pas uniforme. Les Leds WS2812 sont en effet une solution que je voulais essayé depuis quelques années.
Je vous propose ma petite contribution à base d'un ATtiny85 pour les commander. (La mise au point s'est faite avec un Nano).

Quelques précisions:
Mon code a pour base celui développé par Dominique et le maximum de pièces est fixé à 8.
Le principe retenu: 1 pièce 1 couleur (facilement modifiable en jouant sur les valeurs de rouge de vert et de bleu).

D'autre part n'ayant de ruban Neopixel j'ai utilisé un module de 8 Leds WS2812 RGB.
/* attiny anim batiment neopixel1
   08/05/2021
   Fantasio
   Couleur personnalisée pour chacune des 8 pièces max
   Après une temporisation de 10 ou 20 secondes l'état des leds change
   D'après Version 1.01 du 15 juin 2017 Dominique (Locoduino)
     lien:  http://forum.locoduino.org/index.php?topic=336.0
     lien:  https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use
   Attiny85 8MHz
   Testé avec Module ruban de 8 LED WS2812 5050 RVB
     lien:  https://www.vs-elec.fr/fr/leds/2051-module-ruban-de-led-ws2812-5050-rvb-pour-arduino-3665662013330.html
   Utilisation de la bibliothèque Adafruit_NeoPixel
     lien:  https://github.com/adafruit/Adafruit_NeoPixel
     lien:  https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use

       Brochage Attiny85
          =|1  U  8|= +5V
          =|2     7|= 2 PIN--=|DIN Module 8 Leds|
          =|3     6|=       
      GND =|4     5|=             
                             
*/

// constantes
const int tempo1 = 10000; // 10s
const int tempo2 = 20000; // 20s

// variables
byte etatPixels = 0B11111111;       // état des leds donc au démarrage tout est allumé
unsigned long tempsActuel;
byte bitAleatoire;                  // le bit est choisi de manière aléatoire
byte octetAleatoire;
int tempo;                          // prend alternativement la valeur de 10 ou 20S

#include <Adafruit_NeoPixel.h>
#define PIN 2          // pin de l'Attiny85 connectée au DIN du module NeoPixel
#define NOMBREPIXELS 8 // nombre de Leds sur le module

Adafruit_NeoPixel bande(NOMBREPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// pour chaque couleur: (rouge , vert , bleu ) de 0 à 255
uint32_t eteint = bande.Color( 0, 0, 0 );// on définit la couleur eteint
uint32_t blanc = bande.Color( 255, 255, 255 ); // on définit les différentes couleurs
uint32_t couleur1 = bande.Color( 255, 255, 100 );
uint32_t couleur2 = bande.Color( 125, 100 , 50 );
uint32_t couleur3 = bande.Color( 80, 90, 150 );
uint32_t couleur4 = bande.Color( 90, 140, 70 );

// attribution d'une couleur pour chaque pièce
uint32_t couleurPiece[NOMBREPIXELS] = {blanc, couleur1, couleur2, couleur3, couleur4, couleur1, couleur2, couleur3};

void setup() {
  bande.begin(); // pour préparer la broche de données pour la sortie NeoPixel
  bande.show();  // aucune couleur n'a encore été définie,tous les NeoPixels à un état initial «off»
  tempsActuel = millis();
  tempo = tempo1;
  randomSeed(analogRead(0));
//  bande.setBrightness (20); // (option) réglage luminosité globale (255 max)
}

void loop() {
  for (int i = 0; i < NOMBREPIXELS; i++) {    // pour chaque pixel si etat pixel = 1 alors la led s'allume
    if ((bitRead(etatPixels, i)) == 1) {
      bande.setPixelColor(i, couleurPiece[i]);// avec sa couleur pralablement choisie
    }
    else {                                   
      bande.setPixelColor(i, eteint);         // sinon la led s'éteint
    }
  }
  bande.show();                             // allumage des leds fct des états et des couleurs
  if (millis() > tempsActuel + tempo) {     // alternance de tempo 10S et 20S
    tempsActuel = millis();
    if (tempo == tempo1) {
      tempo = tempo2;
    }
    else {
      tempo = tempo1;
    }

    bitAleatoire = random(0, NOMBREPIXELS + 1);            // affiche un nombre aléatoire entre 0 et 8
    octetAleatoire = 0;                                    // remise à 0 de l'octet
    octetAleatoire = bitSet(octetAleatoire, bitAleatoire); // octetAleatoire = 00000001;00000010;00000100;00001000;00010000;00100000;01000000;10000000
    etatPixels = etatPixels ^ octetAleatoire;              // ou exclusif. le bit dans etatPixels est à 0 si concordance et à 1 si différence
  }
}

Bonne continuation à vous tous


Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Un BV animé par ATtiny 85
« Réponse #19 le: mai 12, 2021, 02:42:55 pm »
Bonjour Fantasio,
pourriez-vous partager le plan de branchement et voir même photos et/ou vidéos de votre réalisation?

msport

  • Hero Member
  • *****
  • Messages: 1560
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : Un BV animé par ATtiny 85
« Réponse #20 le: mai 12, 2021, 09:05:30 pm »
... le plan de branchement ...
bonjour,
moi je l'ai trouvé dans le sketch ...

       Brochage Attiny85
              =|1  U  8|= +5V
              =|2     7|= 2 PIN--=|DIN Module 8 Leds|
              =|3     6|=       
      GND =|4     5|=       

Et le branchement du module 8 LED sur internet.
Cordialement

msport

  • Hero Member
  • *****
  • Messages: 1560
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : Un BV animé par ATtiny 85
« Réponse #21 le: mai 12, 2021, 09:21:14 pm »
... photos et/ou vidéos ...

pour quelques euros, quelques jours de patience et un minimum d'efforts, rien de tel que se rendre compte par soi-même du résultat en réalisant le montage !

Et bien sur de le partager sur Locoduino  :)
Cordialement

msport

  • Hero Member
  • *****
  • Messages: 1560
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : Un BV animé par ATtiny 85
« Réponse #22 le: mai 12, 2021, 09:24:01 pm »
Bonjour Fantasio,

Et on peut même remercier Fantasio pour sa contribution.
Cordialement

Fantasio

  • Newbie
  • *
  • Messages: 31
    • Voir le profil
Re : Un BV animé par ATtiny 85
« Réponse #23 le: mai 12, 2021, 09:45:34 pm »
J'essaye en principe d'être précis dans mon code concernant le raccordement des pins de l'Attiny85. et msport l'a effectivement trouvé. ;)

Je n'ai pas mis de résistance entre la pin2 et la Din du module, mais c'est une précaution qui peut s'avérer utile quand le nombre de Leds est important comme sur les bandes de plusieurs mètres. Ce qui n'est pas le cas de mon montage
Un point important est la consommation du module. Chaque Led peut consommer jusqu'à 60mA donc pour un module comme celui que j'utilise, on pourrait arriver à environ 500mA.

Si des photos sont nécessaires pour une meilleure compréhension, pas de problème., mais soyez patients. Je profite comme beaucoup d'entre nous de la liberté de circuler et de ce fait je ne suis pas actuellement dans mon domicile
Pour les vidéos, rien n'est impossible mais soyez vraiment très patients...