Arduino - pour les nuls et débutants ( progressons ensemble)

Toutes les discussions sur l'Arduino !

Modérateur : MOD

Répondre
Avatar du membre
Léo Dehurlevent
Fécond
Messages : 609
Enregistré le : mer. 01 févr. 2012, 15:08

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Léo Dehurlevent » mer. 30 déc. 2015, 11:22

Arduino a écrit :Un peu bizarre un livre en français dont le titre est... en anglais ! :lol:

C'est cher, mais il y a beaucoup de composants et les composants électroniques, ça cube très vite ! Et comme dit Léo Dehurlevent, si cela peut rassurer d'avoir sous la main tout ce qu'il faut et un guide français, alors pourquoi pas ?

Quelques oreilles indiscrètes devaient traîner car j'ai trouvé ce kit au pied du sapin. Comme dit plus haut c'est bien un kit "françisé", le manuel est correctement traduit et assez digest à comprendre.
Image
Malgré moi me voilà au pied du mur ... Y'a plus qu'à ! :noel:
Fichiers joints
Sans-titre---1.gif

Avatar du membre
Arduino
Prolixe
Messages : 1701
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Arduino » mer. 30 déc. 2015, 11:35

Bonjour Léo,

Je t'attends dans mon nouveau cours "Démarrer en électronique programmable".

Justement, je parlais de ce kit à Dudule sans me rappeler qui en avait parlé. Je pense qu'il viendra sans doute faire un tour ici et qu'il découvrira ce que tu y as mis.

D'après l'image, le kit a l'air très bien équipé et maintenant on est certain que le livret est bien en français (c'est quand même un gros plus pour nous Gaullois !) :lol:

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mer. 30 déc. 2015, 14:34

Alain17 a écrit :Un petit conseil : si tu souhaites t'y retrouver dans ton programme et surtout si tu souhaites que les autres puissent s'y retrouver, donne des noms de variables explicites, non ambiguës et adaptées au contexte.

D'après ton code, il y a 3 sorties que tu pilotes :
  • train
  • pastrain
  • pastrain1
Toujours d'après ton code, je suppose que les 2 solénoïdes de l'aiguille sont connectées sur les sorties "pastrain" et "pastrain1". Est ce exact ?
Mais alors à quoi sert la sortie "train" ?
hello
effectivement j'aurais dû…y penser…
la sortie "train" était une sortie LED pour controle du fonctionnement

j'écris :oops: version plus claire j'espère et fonctionnant avec détection IR (que j'ai reçu de chine il y a qq jours…tout petits modules et pas chers….quand je pense au temps passé à essayer de monter ça…et à la quantité de matos qui me restera quand cela marchera…)

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mer. 30 déc. 2015, 15:55

const int IRD = 7; // détecteur renvoie 0 si objet; sinon renvoie 1
const int LED_INDIC = 13; //témoin led sur arduino
byte train = 3 ; // présence train - fermeture - branchement sur sortie 3
byte pastrain = 2 ; // pas de train - ouverture- branchement sur sortie 2 vers ULN2803
long traindevant; // compteurs pour n'agir qu'une fois sur les barrieres
long pastraindevant;

void setup()
{
Serial.begin(9600);
pinMode(IRD, INPUT);
pinMode(LED_INDIC, OUTPUT);
digitalWrite(train,LOW); //pas d'alim au démarrage
digitalWrite(pastrain,LOW); //idem
pinMode (pastrain, OUTPUT);//en sortie pour commander aiguille
pinMode (train, OUTPUT);
traindevant = 0;
pastraindevant = 0;
digitalWrite(LED_INDIC, LOW);
}

void loop()
{
boolean detected = digitalRead(IRD);
if (detected == 0)
{
if (traindevant == 0) // on ne bouge barrieres qu'une fois
{
traindevant = 1;
pastraindevant = 0;
digitalWrite(LED_INDIC, HIGH); //témoin
digitalWrite(train,HIGH); //impulsion fermeture
delay(600); //durée 500ms
digitalWrite(train,LOW); //fin impulsion
}
}
if (detected == 1)
{
if (pastraindevant == 0) // on ne bouge barrieres qu'une fois
{
pastraindevant = 1;
traindevant = 0;
digitalWrite(LED_INDIC, LOW);
digitalWrite(pastrain,HIGH); //impulsion ouverture
delay(600); //durée 50ms
digitalWrite(pastrain,LOW); //fin impulsion
}
}
}

et voili !!!
plus simple.
et en test avec aiguille CA MARCHE !

reste à peaufiner tout ça (entre autres réduire la durée d'impulsion) et à implanter sur la maquette…ça va pas être de la tarte…mais enfin je vais avoir des PNs fonctionnels
et à voir si j'ai pris les bons branchements…2,3,7….totalement au hasard…???
merci de me dire s'il vaut mieux utiliser d'autres...

reste aussi à voir si j'arrive à brancher 2 PNS sur le même arduino-uln2803.


zavez bien fait de me laisser plancher …. :mdr2:

Alain17
Démonstratif
Messages : 1430
Enregistré le : ven. 21 juil. 2006, 16:36
Localisation : Entre Cognac, Ré et Oléron

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Alain17 » mer. 30 déc. 2015, 17:56

jepi54 a écrit :...zavez bien fait de me laisser plancher …. :mdr2:
Difficile de faire autrement...
Comme quoi, en remettant les choses à plat, ça tombe en marche !

Maintenant que tu as trouvé une solution qui fonctionne, reste à améliorer la lisibilité du code par exemple comme ça :

Code : Tout sélectionner

// 30/12/2015
// Essai de pilotage d'un PN

// détecteur IR sur pin 7 
const byte IRD = 7; // renvoie 0 si objet; sinon renvoie 1
const byte LED_INDIC = 13; // témoin led sur pin 13
const byte train = 3 ; // présence train - fermeture - sur pin 3 vers ULN2803
const byte pastrain = 2 ; // pas de train - ouverture- sur pin 2 vers ULN2803
boolean traindevant; // Booléen pour n'agir que la première fois sur les barrieres
boolean detected; 	 // Détection ou pas (false si détection)

// Initialisations
void setup()
{
//Serial.begin(9600);
pinMode(IRD, INPUT);		// Entrée détecteur IR
pinMode(LED_INDIC, OUTPUT);	// Sortie led 
pinMode (pastrain, OUTPUT); //en sortie pour commander le PN (aiguille)
pinMode (train, OUTPUT);	//en sortie pour commander le PN (aiguille)

digitalWrite(train,LOW); 	//pas d'alim au démarrage
digitalWrite(pastrain,LOW); //idem

traindevant = false;		 		// Pas de train détecté au démarrage
digitalWrite(LED_INDIC, LOW);	// Led témoin éteinte au démarrage
}

// Boucle principale
void loop()
{
// Lecture du détecteur IR
detected = digitalRead(IRD);
if (detected == false)	// Détection
	{
	if (traindevant == false) // on ne descend les barrieres qu'à la première détection
		{
		traindevant = true;
		digitalWrite(LED_INDIC, HIGH); // Allumer la led témoin
		digitalWrite(train,HIGH); //impulsion de fermeture du PN
		delay(600); //durée 600ms
		digitalWrite(train,LOW); //fin impulsion
		}
	}
else	// Pas de détection
	{
	if (traindevant == true) // on ne remonte les  barrieres qu'à la première non-détection
		{
		traindevant = false;
		digitalWrite(LED_INDIC, LOW);	// Eteindre la led témoin
		digitalWrite(pastrain,HIGH); //impulsion d'ouverture du PN
		delay(600); //durée 600ms
		digitalWrite(pastrain,LOW); //fin impulsion
		}
	}
}
Tu remarqueras que j'ai supprimé la variable 'pastraindevant' qui faisait doublon (inversé) avec 'traindevant'.

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » jeu. 31 déc. 2015, 10:37

super…avant implantation j'oubliais qu'il faut programmer aussi pour le second détecteur IR (de l'autre côté du pn)…et là cela se complique avec la gestion… voir les questions posées plus haut…
je peaufine branchements et impulsions avec les 2 détecteurs…et verrai après le fonctionnement correct… :geek:

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » sam. 02 janv. 2016, 11:28

:moi:
super bonne année 2016 à tous les modélistes…et à celles et ceux qu'ils aiment…
en 1er LA SANTE. :mort:

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » sam. 02 janv. 2016, 23:46

Alain17 a écrit :
jepi54 a écrit ::geek: :roll: ouais mais dur dur à comprendre ce qu'on pioche avec la simple recherche gogol
Et est ce que ça c'est plus clair ?
Image
Est ce que ça correspond à ce que tu souhaites faire ?
Il reste une contrainte : le PN étant ouvert, un train ne doit pas arriver sur un détecteur (A ou B) et s'arrêter sur celui-ci pour repartir dans le sens opposé.
bon je reviens sur ce schéma de fonctionnement… le traduire en arduino n'est pas aisé.. :moi:

Avatar du membre
Dudule
Communicatif
Messages : 762
Enregistré le : lun. 23 juil. 2007, 08:37
Echelle pratiquée : H0
Prénom : Gérard
Localisation : Fourques 30300 France
Âge : 67

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Dudule » dim. 03 janv. 2016, 09:15

Arduino a écrit :Bonjour Léo,

Je t'attends dans mon nouveau cours "Démarrer en électronique programmable".

Justement, je parlais de ce kit à Dudule sans me rappeler qui en avait parlé. Je pense qu'il viendra sans doute faire un tour ici et qu'il découvrira ce que tu y as mis.

D'après l'image, le kit a l'air très bien équipé et maintenant on est certain que le livret est bien en français (c'est quand même un gros plus pour nous Gaullois !) :lol:
ben oui je suis venu mais un peu tard mais bon j'ai quand même pu acheter ce qu'il fallait je reçois tout cela lundi (c'est la poste qui me l 'a écrit)et je vais pouvoir venir en classe écouter Christian :lol:
dieu existe ! donc je suis

Alain17
Démonstratif
Messages : 1430
Enregistré le : ven. 21 juil. 2006, 16:36
Localisation : Entre Cognac, Ré et Oléron

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Alain17 » dim. 03 janv. 2016, 17:45

Chaque "bulle" représente un état du système. Numérote ces états et utilise une variable du type byte pour différencier ces différents états.
Dans un premier temps, tu peux simplifier le problème en laissant de côté la bulle "Train long sur A et B" et tout ce qui s'y rattache. Quand ça fonctionnera sans cette bulle, il sera facile de la rajouter.

Pour gérer tout cela, je te conseille d'utiliser la structure de contrôle switch...case qui est particulièrement bien adaptée à la gestion d'un automate d'états comme celui-ci.

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mer. 06 janv. 2016, 18:32

:siffle: je planche, je planche…j'ai dû mal avec les deux flèches retour vers train long sur A et B.

tout d'abord vu le peu d'espace qu'il va y avoir entre les détecteurs…je serai la plupart du temps dans le cas de train long… avec les deux détecteurs en détection positive…

si j'ai un convoi qui arrive par B et passe sur A et s'arrête. les deux détecteurs sont donc occupés. ensuite qu'il poursuive sa voie ou rebrousse chemin le schéma me parait aller sans ces deux flèches de retour.

me trompe je ?? :shock:

Alain17
Démonstratif
Messages : 1430
Enregistré le : ven. 21 juil. 2006, 16:36
Localisation : Entre Cognac, Ré et Oléron

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par Alain17 » mer. 06 janv. 2016, 21:48

jepi54 a écrit :…si j'ai un convoi qui arrive par B et passe sur A et s'arrête. les deux détecteurs sont donc occupés. ensuite qu'il poursuive sa voie ou rebrousse chemin le schéma me parait aller sans ces deux flèches de retour.
me trompe je ?? :shock:
Cela correspond à un train long qui fait mine de partir d'un côté mais qui s'arrête et repart dans l'autre sens !

La flèche "A activé (train long uniquement)" correspond par exemple à un train long qui aurait le comportement suivant :
  • Le train arrive via A...
  • poursuit sur B (Train long sur A et B)...
  • continue en faisant mine de partir via B...
  • puis s'arrête...
  • et repart vers A et revient donc dans l'état "Train long sur A et B"
Est ce plus clair ?

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mer. 06 janv. 2016, 22:38

oui…mais il ressortira par A ou par B peu importe. je crois que ça marche :gne:

enfin j'essaie…pour le moment l'aiguillage ne bouge pas d'un pouce... :geek:

merdum…je crois que mon second uln2803 est mort aussi….. comment je peux le tester ??

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mar. 12 janv. 2016, 23:19

:applause: :applause:
ça y est !!! ça marche !! les tests sont OK. sauf le cas tordu cité plus haut (la machine arrive, s'arrête devant le détecteur et repart dans l'autre sens…)..mais je flaire une solution….
je me penche maintenant sur l'installation sur le réseau des détecteurs…
après il va falloir que je voies comment je fais mon montage !!! car là il est sur plaque d'essai… ça va encore être autre chose…
mais ça avance !!! :siffle:

jepi54
Papotier
Messages : 192
Enregistré le : mer. 13 janv. 2010, 13:40

Re: Arduino - pour les nuls et débutants ( progressons ensem

Message par jepi54 » mer. 27 janv. 2016, 18:22

:moi: bon ben j suis tout seul sur ce post…mais j'écris quand même…
ça y est l'installation est faite…je n'ai fait aucun montage électronique…j'ai posé la plaque de test telle que…
sur le réseau j'ai remplacé un détecteur IR par un détecteur ultrasons dans un tunnel… restent les réglages qui sont en cours…mais ça fonctionne assez bien !!!
MAIS
1/ ça marche bien avec le branchement et donc l'alim via l'usb d'un portable
MAIS si je branche le transfo que j'ai RIEN ne fonctionne plus….les infrarouges restent positionnés en détection… le courant testé en sortie de l'arduino est quasi égal…aussi je ne comprends pas …
4,30 v à la sortie arduino (5v) quand l'alim se fait via l'usb
4,40 v quand l'alim se fait via le transfo (9,4V)

???

Répondre