Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Fantasio

Pages: 1 [2] 3 4
16
Discussions ouvertes / Re : Fabrication d'un décodeur DCC pour locomotive
« le: novembre 20, 2021, 12:57:06 am »
Merci pour vos réponses.

Effectivement le PicKit2 serait une bonne option :)

17
Discussions ouvertes / Re : Fabrication d'un décodeur DCC pour locomotive
« le: novembre 19, 2021, 06:05:28 pm »
A votre connaissance serait il possible de convertir une carte Arduino en programmateur de PIC?
Mes 12F629 et 12F675 sèchent dans un coin et c'est vraiment dommage...

18
Vos projets / Re : Digitaliser vieilles motrices N
« le: novembre 05, 2021, 01:24:13 am »
Pour tout ce qui concerne la digitalisation des machines échelle N je te conseille plutôt de poser ces questions sur un forum spécialisé dans cette échelle:
https://le-forum-du-n.1fr1.net/

 

19
La solution de Tony04 est bonne.

Dans ta loop ,effectivement tu positionnes ton texte sur la 2ème ligne en colonne 0.
Donc pour effacer à coup sûr le texte précédent envoie systématiquement 16 caractères (texte suivi d'espace).
exemple:
case 0xFFA25D: // bouton Power pas d action
        Serial.println("POWER");
        lcd.print ("POWER      "); // 5 caractères suivi de 11 espaces
        break;
 

20
Vos projets / Re : Comment brancher correctement ce haut parleur ?
« le: août 14, 2021, 11:24:44 am »
Bonjour Jive34

les bornes de raccordement à prendre en compte sur ton haut-parleur sont ce que tu appelles les "oreilles".
Le carré central ne sert uniquement qu'à maintenir la plaque isolante et ne participe en aucune façon aux liaisons électriques.

Vu que tu utilises 2 HP le branchement correct est le suivant:
les 2 bornes - des HP sont à reliées à la pin GND du DFPlayer Mini MP3 Player
la borne + d'un HP à la pin DAC_R
la borne + de l'autre HP à la pin DAC_L

Bon montage et bonne continuation


21
Vos projets / Re : Passage à niveau avec capteurs IR
« le: mai 28, 2021, 12:35:36 pm »
Je pense que BJ17 utilise un capteur IR FC-51.

je joins également le schéma.

Bonne journée

22
Vos projets / Re : Un BV animé par ATtiny 85
« 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...

23
Vos projets / Re : Re : Re : Un BV animé par ATtiny 85
« 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


24
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 10, 2020, 11:17:01 pm »
... Je serais curieux de voir un code qui se compile bien avec ça.

Essaye celui ci testé sur UNO avec l'IDE 1.8.10:
int x = 1;
int y = 2;


void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
 if (x == 1 and y == 2)
  {
    digitalWrite(LED_BUILTIN, HIGH);
    delay (1000);

La LED clignote bien ;D

25
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 09, 2020, 05:21:18 pm »
@Antoine

Suite à ta réponse:
  if (etatMonostable and (millis() - debut_tempo >= tempo))
 ...
Tu utilises "and" et pas "&&" pour l'instruction "et logique" (comme le précise le langage Arduino), et cela ne provoque aucune erreur retournée par l'IDE. Donc "and" est valide.

Ma question est la suivante: D'autres instructions de ce type seraient elles alors compatibles avec le langage de l'Arduino?

26
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 09, 2020, 03:23:39 pm »
...et à Thierry également :)

27
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 09, 2020, 03:21:54 pm »
Merci Antoine pour ton aide.

Je suis honteux de n'avoir pas pensé à cela. Comme quoi, moi aussi, j'ai encore beaucoup à apprendre!
C'est aussi tout le bénéfice d'être inscrit sur ce forum...

Bonne continuation à toi

28
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 09, 2020, 02:26:38 pm »
Bonjour Yann

Content que ce programme te convienne.

Travaillant souvent sur les Attiny85, effectivement pour les constantes, en particulier pour les pins, je préfère utiliser byte pour économiser de la mémoire.

Pour "if(etatmonostable) c'est exactement ça!

Concernant la simplification, étant encore débutant, je pense que quelqu'un de plus expérimenté pourrait te faire...

Bonne continuation

29
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 08, 2020, 05:30:13 pm »
Bonjour Yann

J'ai repris ton programme et modifié en insérant la partie monostable.
Il fonctionne sur Arduino et compatible avec un Attiny85.
Quelques points importants:
-la commande se fait par l'arrivée d'une masse sur la pin3
-la durée de l'état haut de la sortie en pin2 peut être modifiée si besoin.  (int dureePulse = 2000; )

const byte TRIMMER = A2;                 // Potentiometer connected to ADC2
const byte LED = 2;                      // LED connected to I/O pin 2
const byte BUTTON = 3;                   // pushbutton connected to I/O pin 3
 
unsigned long tempo ;                 // This value is set by the trimer
unsigned long debut_tempo;
int dureePulse = 2000;                // durée allumage LED a modifier si besoin
byte dernier_appui;
byte etatMonostable;
                 

void setup()
{
  pinMode(LED, OUTPUT);                 // Sets the digital pin as output
  pinMode(BUTTON, INPUT_PULLUP);        // Sets the digital pin as input
  byte dernier_appui = digitalRead(BUTTON); // au démarrage =1
}
void loop()
{
  byte appui = digitalRead(BUTTON);         // au démarrage =1
  tempo = analogRead(TRIMMER) * 5;        // (5V=1024) * 5 -> 5V=5120ms
   
  if (!appui)                               // si il est appuyé alors appui = 0 et !appui =1
  {             
   
    if (appui != dernier_appui)         //
    { 
      etatMonostable = 1;   
      debut_tempo = millis();
    }
  }
  dernier_appui = appui;
  if (etatMonostable)
  {
    if (millis() - debut_tempo >= tempo)
    {
      digitalWrite(LED, HIGH);
      delay (dureePulse);
      digitalWrite(LED, LOW);
      etatMonostable = 0;     
    }
  }
}

Bonne continuation
 

30
Vos projets / Re : Impulsion temporisée avec Attiny 85
« le: octobre 07, 2020, 09:18:33 pm »
La code du monostable était destiné à un Arduino Uno. Je le présentais juste à titre d'exemple et il doit être adapté pour un Attiny85. ;)

Pages: 1 [2] 3 4