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 - Rob1

Pages: 1 2 [3] 4 5
31
Le logiciel DCC++ / DCC++ Exploitation des commandes de programmation
« le: juillet 29, 2018, 11:36:31 am »
Bonjour à tous et bonne baignade aux vacanciers

J'hésite à ouvrir ce sujet car la réponse est sans doute sur le site mais je cherche, je cherche et je passe à côté.

Je cherche comment coder les commandes à envoyer aux décodeurs
en complément des préfixe  "f", "z" ,"b", "w"  pour "t" j'ai trouvé ex: "t 1 5 0 1".

Un exemple de codage CV1 serait le bienvenu
Pour info je pilote un Arduino Mega depuis un PC via ethernet

Merci de votre aide
Amicalement Roland
www.locorob1.fr


32
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 11, 2018, 10:59:16 pm »
Merci
Je donnerai des nouvelles lorsque j'aurai réalisé mes test embarqués.
Pour le moment je suis en statique dans mon bureau.

Cordialement Roland

33
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 11, 2018, 06:05:54 pm »
Merci de tes conseils que je vais adapter.

Je ne peux pas filtrer autant car je veux détecter une suite d'impulsion de 1ms chacune.
Le problème de la lumière ne devrait pas se poser car le récepteur IR est à l'ombre de la motrice
qui porte l'émetteur.

34
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 11, 2018, 11:39:55 am »
Suite et sans doute fin.
Comme il n'était pas question de douter de l'Arduino et
que mon si petit programme ne semblait pas présenter de faille
je me suis résolu à changer mon capteur pour un autre type, voir Jpg.

Et miracle cela fonctionne correctement.
Je suppose qu'avec l'autre il y a un pulse que le scope ne voit pas.
Comme toujours les bons outils font les bons ouvriers et inversement.

Merci à Jean Luc pour ton aide

Rob1 le chef de gare.........

Je vais quand même refaire un test avec un autre capteur du premier type
pour voir si c'est un problème de modèle ou d'exemplaire.

35
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 10, 2018, 05:54:15 pm »
Non je ne vois rien. Pourtant je suppose que mon étage d'entrée est peut-être en cause.

Il est constitué d'un simple module reflex infrarouge identique au Jpg ci-dessous sur lequel j'ai coupé la diode émetteur.

Suite au test, numéro 1, sous interruption avec une fréquence de signal de 100Hz, la périodicité de la tâche est proche de 5ms au lieu de 10ms attendu.

Info complémentaire
J'ai fait un nouveau test, numéro 2,  en délaissant la tâche interruption au profit du Loop (voir code) .
et là j'obtient bien une périodicité de 10ms (9,8 précisément) .

  // déclaration de constantes
const int InputIR = 2;
int mem = 0;
volatile unsigned long CptIR2 = 0;
int IRState = 0;         // variable pour la lecture IR2

void setup() {
  Serial.begin(500000);
  Serial.println("Prog OK"); 
  pinMode(InputIR, INPUT); 
}

void loop() {
  IRState = digitalRead(InputIR);
  if (IRState==HIGH && mem==0){
    mem = 1;
    CptIR2 ++;
    if (CptIR2>99) {
      CptIR2=0;   
      Serial.println(micros());     
    }
  }
  if (IRState==LOW && mem==1){
    mem = 0;
  }
}


36
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 10, 2018, 11:30:47 am »
Je vais entreprendre le test suivant pour éviter l'instruction serial.print à chaque appel de fonction

Je vais faire produire à l'ATtiny un signal carré à 500Hz
Sur l' Arduino  je compterai les pulses et je ne "printerai" que toutes les 500 pulses
je verrai mieux la périodicité de la fonction interruption.

37
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 10, 2018, 11:19:47 am »
Oui j'ai déjà fait le test.
Il y a plus ou moins 600 µs d'écart entre les valeurs qui apparaissent identique en ms.

Je pourrait contourner le problème mais c'est toujours mieux de savoir pour progresser.

38
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 10, 2018, 10:15:29 am »
Bonjour Jean Luc

Il est branché sur la broche 2.
J'ai pris un deuxième cliché à 50 µs voir mieux voir le front.
A noté que l'oscilloscope est un simple DS202 je ne suis pas sûr des ses perf.

Merci de me consacrer un peu de ton temps
Amicalement Roland

39
Débuter / Re : Interruption petite énigme à résoudre
« le: juillet 09, 2018, 10:46:49 pm »
Complément d'info
J'ai ajouté un compteur dans la fonction d'interruption comme suit

void DecodeIR2() {
  CptIR2 ++;
  Serial.println(CptIR2);   
  Serial.println(millis());   
}

et j'obtient ceci sur la console

Prog OK
1
38
2
38
3
77
4
77
5
116
6
116

On constate que la fonction d'interruption est systématiquement visitée deux fois dans la même milliseconde !!!  ???

J'hésite à solliciter Hercule Poirot il est en route pour Saint-Pétersbourg pour voir les Belges et les Anglais  ;) :D ;D

40
Débuter / Interruption petite énigme à résoudre
« le: juillet 09, 2018, 08:59:33 pm »
Bonsoir à tous

Je dit petite énigme car je suis convaincu qu'elle ne résistera pas à la pertinence de certains d'entre vous.

Contexte un ATtiny85 pilote un émetteur Infrarouge (IR) dont le faisceau est détecté par un récepteur
raccordé à la broche 2 d'un Arduino Uno.
La trame, telle que visible sur l'image ci-dessous montre un bit de Start de 100ms suivit de 6 bits de 20 ms
chacun séparé par un LOW de 20ms.

Le programme ci-dessous est volontairement simplifié pour mes test, particulièrement la fonction ISR
void DecodeIR2() {
  Serial.println(millis());   
}

Le tableau excel suivant liste dans
la première colonne contient le résultat du Serial.println(millis());
la seconde est le calcul de la période correspondante
Vous pouvez constater que l'instruction Serial.println(millis()); semble être exécutée deux fois consécutivement.

Merci de votre aide
Amicalement Roland

  // déclaration de constantes
const int InputIR = 2;
const int ledPin12 =  12;
volatile unsigned long TimeIR2 = 0;
volatile unsigned long TimeIR2mem = 0;
volatile unsigned long CptIR2 = 0;

int IRState = 0;         // variable pour la lecture IR2

void setup() {
  Serial.begin(500000);
  Serial.println("Prog OK"); 
  // initialisation de la broche 2 en Input
//  pinMode(InputIR, INPUT);   
//  initialisation de la broche 12 en Output
  pinMode(ledPin12, OUTPUT);
  attachInterrupt(0, DecodeIR2, RISING);

}

void loop() {
  // copie de l'entrée IR dans la sortie 12
//  IRState = digitalRead(InputIR);
//  digitalWrite(ledPin12, IRState);
}
void DecodeIR2() {
  Serial.println(millis());   
}



41
Discussions ouvertes / Re : Sujet éphémère mais important les voeux
« le: juillet 06, 2018, 12:56:04 am »
Bonjour à tous.
J’use de mon fil de présentation pour vous donnez des nouvelles de mon projet.
La gestation d’un réseau ferroviaire est souvent éléphantesque c’est bien sûr mon cas.
Toutefois je ne résiste pas à la tentation de partager avec vous mes premiers pas.
Les grands choix techniques sont bien engagés.
Je me fait la main en commençant par la réalisation d’un transbordeur qui intègre un pilotage DCCpp pour les mouvements des motrices.
Détails et illustrations sur mon site www.locorob1.fr
Merci de vos remarques et suggestions
Amicalement Roland

42
Bus DCC / Re : Gare cachée en DCC
« le: juillet 05, 2018, 09:36:12 pm »
Je me suis livré à quelques essais, les problèmes des autres augurent souvent de nos solutions de demain.
Mon test Arduino DCC commandé depuis un PC W7 via ethernet, un booster avec sa propre alimentation.
1)   Alim sous tension ordre Avant la loco avance, je coupe l’alim la loco stoppe, je remet l’alim elle redémarre.
2)   Alim sous tension ordre Avant la loco avance, je coupe l’alim elle stoppe, je sens le sens de marche depuis PC,  je remet l’alim elle redémarre en sens arrière
Précision mon programme sur PC ne réitère pas les ordres mais il me semble que DCC le fait.
Si tu souhaites que je teste une séquence particulière décrit nous la.
Amicalement Roland

43
En tant que fidèle lecteur et très modeste contributeur de ce site je souhaite apporter mon soutien à Dominique.
Je n’ai pas le sentiment que ce forum se veuille élitiste, chacun peut y trouver de quoi progresser suivant son niveau.
Certes un vrai débutant devra sans doute trouver par ailleurs (les sites ne manquent pas) les éléments nécessaires à accroitre sa maîtrise des technologies et Arduino en particulier afin de pouvoir intégrer les nombreuses solutions que Locoduino lui propose.
Ce qui semble faire défaut à certains, me semble-t-il, c’est la conscience de la différence entre des logiciels d’automatisation et des logiciels informatique.
Les premiers, appelés machine à états sur Locoduino ou Grafcet chez d’autres, sont plus rarement documentés pour les débutants. On en trouve sur Locoduino, doit-on les rendre plus progressifs ?
En tout cas un grand merci à tous les rédacteurs de ce site. Amicalement Roland

44
Pour abonder dans le sens de Thierry et faire un peu d'humour.

Ce n'est pas par hasard que GoTo se traduit en français par " aléas "  ::) :( :D ;D

Amicalement Roland

45
Composants / Re : Interruption récalcitrante
« le: mai 11, 2018, 08:55:11 pm »
Ne faut-il pas déclarer la variable comme volatil pour l'utiliser sous interruption ?

Roland

Pages: 1 2 [3] 4 5