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.


Sujets - Fantasio

Pages: [1]
1
Vos projets / décodeur accessoires avec attiny85
« le: décembre 16, 2019, 08:06:08 pm »
Bonsoir à tous
Afin de créer de nouvelles animations sur les réseaux de mon club, je souhaiterai utiliser un attiny85 en tant que décodeur d'acessoires.
Je me suis inspiré de ce lien:
https://rudysarduinoprojects.wordpress.com/2019/05/06/fun-with-arduino-29-dcc-accessory-decoder/

Rudy Boer utilise la biblothèque DCC_Decoder.h et son programme tourne sur un arduino Uno. je l'ai testé avec cette carte et il fonctionne parfaitement :)
Je souhaite le faire tourner sur un attiny85. J'ai donc modifier le code pour l'adapter à cette puce, mais rien n'y fait >:(

voici mon code:
/*attiny-decodeur accessoires
 * lien: https://rudysarduinoprojects.wordpress.com/2019/05/06/fun-with-arduino-29-dcc-accessory-decoder/
            Brochage Attiny85
*
*          5 =|1  U  8|= VCC
*       A3 3 =|2     7|= 2 entrée signal DCC
*       A2 4 =|3     6|= 1 sortie pour adresse 11
*        GND =|4     5|= 0 sortie pour adresse 10
*
 */


#define NUMACCESSORIES 2 // Entrez ici le nombre d'accessoires (max 4)

// ALLER AU setup() POUR CONFIGURER DCC ADDRESSES AND PIN NUMBERS

#include <DCC_Decoder.h>
#define kDCC_INTERRUPT 0

typedef struct DCCAccessoryData {
  int   address;   // Adresse DCC configurable par l'utilisateur
  byte  outputpin; // Pin Attiny configurable par l'utilisateur
  byte  dccstate;  // Utilisation interne Etat DCC de l'accessoire, 1 = ON, 0 = OFF
};
DCCAccessoryData accessory[NUMACCESSORIES];

// La bibliothèque DCC appelle cette fonction pour activer/désactiver les accessoires.
void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data) {
  address -= 1;
  address *= 4;
  address += 1;
  address += (data & 0x06) >> 1;
  //address = address - 4; // !!! uncomment cette ligne pour les multi maus Roco ou z21
  boolean enable = (data & 0x01) ? 1 : 0;
  for (byte i=0; i<NUMACCESSORIES; i++) {
    if (address == accessory[i].address) {
      if (enable) accessory[i].dccstate = 1;
      else accessory[i].dccstate = 0;
    }
  }
}

void setup() {
// CONFIGURATION DES ACCESSOIRES
// Copier et coller autant de fois que vous avez d'accessoires
// la quantité doit être la même que celle définie dans NUMACCESSORIES
// ne pas oublier d'incrémenter l'index du tableau
  accessory[0].address   =  10; // adresse DCC
  accessory[0].outputpin = 0;  // pin Attiny

  accessory[1].address   =  11; // adresse DCC
  accessory[1].outputpin = 1;  // pin Attiny
// FIN DE LA CONFIGURATION DES ACCESSOIRES

  DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handler, true);
  DCC.SetupDecoder( 0x00, 0x00, 0 );
// les pins sont définiées en sortie et au niveau 0
  for(byte i=0; i<NUMACCESSORIES; i++) {
    pinMode     (accessory[i].outputpin, OUTPUT);
    digitalWrite(accessory[i].outputpin, LOW);
  }
}

void loop() {
  DCC.loop(); // Appel de la fonction de bibliothèque qui lit les données DCC


  for(byte i=0; i<NUMACCESSORIES; i++) {
    if (accessory[i].dccstate)
      digitalWrite(accessory[i].outputpin, HIGH);
    else
      digitalWrite(accessory[i].outputpin, LOW);
  }
}
bien évidemment si quelqu'un a une idée, je suis preneur.
Merci par avance

2
Présentez vous ! / Un nouvel inscrit sur le Forum
« le: novembre 21, 2019, 07:02:24 pm »
Bonjour à tous.

Le modélisme ferroviaire est un un de mes loisirs favoris et je le pratique au sein d'un club. Pour rendre plus vivant nos différents réseaux, je mets en place des petites animations principalement à base d'Attiny85. La consultation régulière de votre site m'a vraiment aidé pour les réaliser...

Avant l'Arduino, j'utilisais le Basic Stamp puis le Picaxe . A ce jour je me considère encore comme débutant, mais étant jeune retraité j'espère progresser... :)

Fantasio

Pages: [1]