LOCODUINO
Parlons Arduino => Trucs & astuces => Discussion démarrée par: brice45 le octobre 10, 2024, 02:41:22 pm
-
Bonjour à tous,
Je m'intéresse actuellement sur la rétrosignalisation avec un bus S88 et mon arduino Uno.
J'ai téléchargé la bibliothèque UNO_S88.
J'ai copier le code de l'article138 dans l'IDE, quand je le compile une erreur de compilation pour la carte Arduino Uno.
J'ai dû raté quelque chose, alors si quelqu'un peut m'aider ça me permettrai d'avancer sur le sujet.
Je vous remercie, et vous souhaite une bonne journée.
Cordialement Brice45
-
Peut-être faudrait-il recopier le texte de l’erreur (on ne peut pas deviner), quelle version d’IDE et si vous avez bien les bonnes bibliothèques et leurs versions.
C’est sûrement la que ça se passe !
Plus un schéma de votre installation
-
Merci pour votre réponse, je vais regardé, ça va m'aider.
Cordialement
-
le code erreur est : erreur de compilation pour la carte Arduino Uno.
pour l'instant je n'ai pas de circuit de test, je souhaite simplement compiler le programme.
Merci
-
Chez moi, ça compile correctement !
#include <UNO_S88.h> // la librairie S88 pour les UNO/Nano
void setup() {
S88_Setup(16); // on donne le nombre capteur 8 ou 16
}
void loop() {
S88_Loop(); // boucle sur les capteurs
}
Le croquis utilise 1614 octets (5%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 27 octets (1%) de mémoire dynamique, ce qui laisse 2021 octets pour les variables locales. Le maximum est de 2048 octets.
-
Bonjour,
peut-être la librairie doit encore être installée ?
-
Installer une bibliothèque
https://www.locoduino.org/spip.php?article71
-
Bonjour,
Je vous remercie de vos réponses, j'ai un peu de temps aujourd'hui donc je me penche dessus mais avec votre aide le problème va être réglé.
Cordialement
brice45
-
Rebonjour,
Pour faire cours, j'utilise Arduino IDE 2.3.3 je copie le code du site Locoduino de l'article 138 dont voici le code que je je voudrais vérifier :
#include <UNO_S88.h> // la librairie S88 pour les UNO/Nano
void setup() {
S88_Setup(16); // on donne le nombre capteur 8 ou 16
}
void loop() {
S88_Loop(); // boucle sur les capteurs
}
#include <Arduino.h>
void S88_Setup(int nb_sensors);
void S88_Loop();
#include "UNO_S88.h"
#include <Arduino.h>
const byte clockS88 = 2; // clock S88 pin = 2
int clockCounter=0; // 16 tops
const byte PSS88 = 3; // PS S88 pin = 3
long loopCounter=0; //for reset from ECOS
const byte dataIn=0; //data input from next Arduino in S88 chain pin = 0
const byte dataOut=1; //data output pin=1
unsigned int sensors=0; // sensor 8/16 bits
unsigned int data=0xffff; // buffer
int nbsensors; // nb sensors 8 or 16
int beginPin = 4; // first pin
int endPin8 = 12; // last pin for 8 sensors
int endPin16 = 21; // last pin for 16 sensors
int endPin;
void PS() {
clockCounter=0;
data=sensors;
sensors=0;
loopCounter++;
}
void clock() {
digitalWrite(dataOut,bitRead(data,clockCounter)); // shift to next
delayMicroseconds(16);
bitWrite(data,clockCounter,digitalRead(dataIn)); // shift from previous
clockCounter =(clockCounter +1) % nbsensors; // modulo nb sensors
}
void S88_Setup(int nb_sensors) {
nbsensors = nb_sensors;
if (nbsensors == 8) {endPin = endPin8;} else {endPin = endPin16;}
pinMode(clockS88, INPUT_PULLUP);
attachInterrupt(0,clock,RISING); //pin 2 = clock interrupt 0
pinMode(PSS88, INPUT_PULLUP);
attachInterrupt(1,PS,RISING); //pin 3 = PS interrupt 1
pinMode(dataIn,INPUT_PULLUP); //pin 0 = data in from next Arduino S88 in chain
pinMode(dataOut, OUTPUT); //pin 1 = data out to ECoS or to previous Arduino in S88 chain
for (int i = beginPin; i< endPin;i++) {pinMode(i,INPUT_PULLUP);} // init sensors
}
void S88_Loop() {
if (loopCounter==20){bitSet(sensors,0);} // reset management
for (int i = 4; i<endPin;i++) {if (!digitalRead(i)){bitSet(sensors,i-4);}} // update sensors
}
donc je ne vois pas d'où vient le problème.
Je serais ravi d'avoir quelques explications et je vous en remercie et vous souhaite une bonne journée.
Cordialement
Brice45
-
donc je ne vois pas d'où vient le problème.
le code erreur est : erreur de compilation pour la carte Arduino Uno.
Nous non plus !
Commencez par recopier la totalité du message d'erreur en dessous l'éditeur de l'IDE, pas seulement la dernière ligne >:(
-
Il ne faut pas recopier le code de la librairie dans le .ino !
-
Bonjour, voilà une réponse simple et efficace, il est vrai que j'aurais dû examiner le code plus sérieusement.
Merci lebelge2.
Bonne journée à tous.
brice45
-
Bonjour,
Il faut installer la librairie, pas la copier colller.
Elle est fournie en bas de page sous forme de fichier zip à télécharger.
https://www.locoduino.org/spip.php?article138
Relisez si vous ne l'avez déjà fait l'article https://www.locoduino.org/spip.php?article71
Où vous verrez que c'est la Méthode facile 2 qui est recommandée pour l'installer.
le programme qui fait 7 lignes lui est copié collé dans l'éditeur
#include <UNO_S88.h> // la librairie S88 pour les UNO/Nano
void setup() {
S88_Setup(16); // on donne le nombre capteur 8 ou 16
}
void loop() {
S88_Loop(); // boucle sur les capteurs
}
il fait appel à la librairie par sa première ligne:
#include <UNO_S88.h> // la librairie S88 pour les UNO/Nano
le compilateur lorsqu'il lit cette ligne, va automatiquement faire appel à la librairie
pour autant qu'elle ait été préalablement convenablement installée.
Pour insérer du code de façon lisible dans le forum, il faut se servir de l'icone # et coller le code entre les 2 balises
-
Bonjour,
Bien évidement j'ai installé la bibliothèque en suivant les explications.
qu'est ce que je fais de UNO_S88.cpp ?
Pas très claire tout ça!! :-\
Bonne journée
-
Bonjour,
UNO_S88.cpp fait partie de la librairie.
Une fois la librairie installée, on ne s'en occupe pas.
Les librairies comportent généralement un fichier "en tête" xxx.h et un fichier xxx.cpp
Si la librairie est installée, la compilation du programme devrait s'effectuer normalement.
-
Bien, merci.
En fait le fichier "UNO_S88.cpp" fait partie de la librairie "UNO_S88.h".
je vais faire un test.
Cordialement
brice45
-
Bonsoir,
Après avoir réalisé les raccordements de l'arduino vers mon dernier RM-GB-8-N LDT
et inséré un nouveau canton sur mon réseau, ce test fonctionne bien. ;D
Je vous remercie pour votre aide et vous souhaite une bonne soirée.
Cordialement
Brice45
-
Bonsoir,
Je suis content que tout fonctionne bien. :)
Bonne soirée.
-
bonjour à tous,
Suite de mon post du 17 octobre où je n'avais créé qu'un canton et cela fonctionnait bien, mais sans me rendre compte que les 8 adresses du module que j'avais rajouté dans ma config passent en occupation dès lors que j'occupe le canton 1 qui est le seul de câblé pour le moment. D'ailleurs quand je teste les autres adresses elles ne fonctionnent pas.
Pour le circuit j'ai câblé un pont de diodes et un LTV844.
Pouvez vous m'aider à résoudre ce problème?
Merci et bonne journée.
cordialement
-
Bonjour,
peux-tu :
- nous communiquer ton code actuel
- nous dire comment son câblées , le cas échéant , le 15 entrées libres ?
-
Bonjour trimarco,
Merci de me répondre,
en fait j'ai téléversé le code de l'article 138 dans mon Uno et installé la bibliothèque UNO_S88.
J'ai réalisé le petit circuit sur une bread board avec un pont redresseur et un LTV844 où je n'ai câblé
qu'un circuit pour faire l'essai avec un seul canton.
J'ai modifié ma config DCC dans le logiciel Wdp2021 pour ajouter le module de l'arduino avec 8 capteurs
et j'ai fais l'essai, ça marche, sauf que en regardant le module arduino dans ma config DCC tous les capteurs
libres passent également en occupation et si je déplace le fil du capteur de la pin 4 aux autres pins (de 5 à 11)
ça ne fonctionne pas.
Voilà le souci. Faudrait-il apporter quelques modifs au code sachant que j'ai raccordé l'arduino avec un câble
sur le connecteur S88 de mon dernier RM-GB-8-N?
Bonne journée.
-
cela doit fonctionner , alors on va tâtonner un peu , pour cerner le bug
peux-tu raccorder l'arduino à la place du dernier module S88 , pour voir ce que ça donne (laisser le dernier module de côté , pour l'instant) ?
-
Alors, j'ai raccordé l'arduino à la place du dernier module et lorsque je pose un wagon
sur le canton (pin 4) les 8 capteurs de l'arduino passent en occupation ainsi que les 8 derniers
du module précédent c'est à dire de 9 à 16.
-
en complément du message précédent, l'arduino étant toujours branché mais le canton cette fois est libre
les capteurs 9 à 16 ne fonctionnent plus sur le module S88 précédent.
-
au fait , qu'entends-tu par module précédent , c'est celui qui est + près de la centrale , ou celui qui est + près de la fin de chaîne ?
-
Celui qui est le dernier de la chaine.
Maintenant j'ai modifié la config et j'ai
connecté l'arduino sur un autre canal
de mon hsi 88 usb et ça fait la même
chose.
-
amha , je ne pense pas que l'on puisse panacher des arduinos et des modules classiques sur le même port S88 , l'intérêt du projet est de tout remplacer par des arduinos ...
pour commencer , il faudrait raccorder l'arduino seul sur la centrale , tu l'avais fait ?
-
oui et ça ne change rien :(
maintenant je vais essayer une autre méthode de détection que j'avais testé
pour allumer une led.
-
ça ne change rien également, je pense que le problème est dû par le fait
que mon bus s88 est raccordé sur un HSI-88-USB puis à l'ordinateur.
peut-être faudrait-il que je déclare un nouveau système de détection?
ou bien apporter des modifs au code?
-
si l'interface usb fonctionne avec les modules classiques , elle doit aussi fonctionner avec les arduino
le problème provient très vraisemblablement de ton programme ou de ton raccordement , il serait bien qu'à présent tu nous les montres
-
J'ai installé la bibliothèque UNO_S88 sans problème dans le dossier librairies et téléchargé le code de 7 lignes dans le uno.
je ne parviens pas à mettre la photo du montage ici
-
merci (manque encore le code)
je ne connais pas ces breadboard , est-ce qu'on a les continuités au niveau des lignes de bus , telles que je les ai ajouté en rouge et en noir ?
-
Bonjour Trimarco,
Après avoir regardé la qualité de la photo de mon câblage pour la poster
je me suis aperçu que j'avais inversé le fil vert et le jaune (broche 2 et 3) :-[
J'étais dans la certitude que mon câblage était bon, donc je n'ai plus vérifié.
Maintenant tout fonctionne.
quel neuneu!!!! >:( , je t'ai fais perdre du temps je m'en excuse et te remercie
pour ta collaboration.
Je te souhaite une bonne journée.
Cordialement
-
oui j'ai eu ça avec le coffret Arduino ;)
-
bien , peux-tu nous dire si cela fonctionne en panachant avec les modules S88 du commerce ?
-
Alors, en raccordant l'arduino sur le bus s88 derrière le dernier module rm-gb-8-n ainsi
qu'en premier sur une autre branche du HSI 88 USB ça fonctionne.
Maintenant est-ce utile de panacher les modules?
Je suis maintenant en train de concevoir une carte de 8 capteurs pour continuer mes essais.
Encore merci pour ton aide.
Cordialement,
-
ceci (qui fonctionnerait selon toi) :
arduino3 -> arduino2 -> arduino1 -> rm-gb-8-n3 -> rm-gb-8-n2 -> rm-gb-8-n1-> HSI 88 USB
ou cela ?
rm-gb-8-n3 -> rm-gb-8-n2 -> rm-gb-8-n1-> arduino3 -> arduino2 -> arduino1 -> HSI 88 USB
panacher les modules , ce serait , si l'on ne dispose que d'un port S88 , pour ajouter des arduino tout en gardant ses rm-gb-8-n ... mais il serait en effet tout aussi bien de :
- revendre les rm-gb-8-n , et n'avoir que des arduino , c'est le but du projet
- si on dispose de 2 ports S88 , regrouper les rm-gb-8-n sur un port , et les arduinos sur l'autre port
-
alors pour ma config qui est arduino1 -> rm-gb-8-n4 -> rm-gb-8-n3 -> rm-gb-8-n2-> rm-gb-8-n1->HSI 88 USB ça fonctionne,
maintenant il faudrait faire un essai avec un 2eme arduino derrière l'arduino1.
Pour mon réseau il me manquait 4 capteurs pour 4 cantons, donc je voulais éviter d'acheter un dernier rm-gb-8-n de 8 capteurs.
je ferais peut-être l'essai mais là je voudrais continuer mon réseau.
Si quelqu'un veut le faire.......
-
merci , pas de souci , on a une info , l'autre n'est pas importante
-
Bon, un défi est un défi....
En fait je n'ai pas pût résister à l'expérimentation ;)
J'ai ajouté un autre arduino derrière l'arduino1 sur le bus existant et ça marche
donc: arduino2 -> arduino1 -> rm-gb-8-n4 -> rm-gb-8-n3 -> rm-gb-8-n2-> rm-gb-8-n1->HSI 88 USB ça fonctionne :D
Allez bonne journée.
-
allez merci pareillement ! :D
-
Bonjour à tous,
Meilleurs voeux pour cette nouvelle année et que nos réalisations continuent à nous émerveiller.
Bon, pour finir avec la retro et arduino, j'ai concrétisé le montage avec un circuit 8 entrées raccordées sur un arduino uno et branché sur mon bus S88.
Voilà, il me manquait 4 cantons pour mon dépôt je vais pouvoir continuer.