Go Down

Topic: Exemple de communication sans fil nRF24L01+ (Read 11454 times) previous topic - next topic

caape

#15
Jun 17, 2017, 10:38 pm Last Edit: Jun 17, 2017, 10:39 pm by caape
Bonjour

Quote
- Si vous n'avez qu'un seul ordinateur l'IDE Arduino ne sait pas ouvrir 2 moniteurs Série donc j'utilise une appli tierce (sur PC prenez Putty, sur Mac CoolTerm par exemple)
Pour programmer 2 arduinos sur le même ordinateur, il suffit d'ouvrir plusieurs fois l'IDE en passant par le menu démarrer, ce qui permettra de configurer deux cartes différentes sur des port différents et donc, de pouvoir tout faire en double  sans devoir changer le port à chaque fois.
NE PAS UTILISER le menu ouvrir de l'IDE sinon, ça ne fonctionne pas.

Truc que j'utilise tout le temps

A+
StandAlone domotique<br />Volet roulant, Capteur T° sur p iles, (Eclairage Salon SAM en cour)(Pilotage via WEB + Mobile (base ok))(Sonnette)(Alarme)...

J-M-L

Ce n'est pas forcément une bonne idée d'avoir deux process  accédant les mêmes fichiers de préférences ...

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

caape

Je n'ai jamais eu le moindre problème à faire comme ça.
Je n'avais pas non plus le même fichier source à envoyer sur 2 arduinos où la je changerais effectivement le port. Mais i j'avais a le faire pour programmer ET debugguer en même temps. Je passerais en mode "editeur externe" type notepad++ et j'utiliserais la technique du double lancement pour avoir les deux debugger em même temps.
Utiliser un logiciel externe type Putty me forcerais a toujours devoir aller déconnecter le port série avant chaque reprogrammation puis le reconnecter pour faire le debug. Des deux solutions, je préfère la mienne, mais a chacun de choisir.
A+
StandAlone domotique<br />Volet roulant, Capteur T° sur p iles, (Eclairage Salon SAM en cour)(Pilotage via WEB + Mobile (base ok))(Sonnette)(Alarme)...

J-M-L

Quote
Utiliser un logiciel externe type Putty me forcerais a toujours devoir aller déconnecter le port série avant chaque reprogrammation puis le reconnecter pour faire le debug. Des deux solutions, je préfère la mienne, mais a chacun de choisir.
oui effectivement pour cela c'est un bon point - mais vous allez avoir 2 process qui écrivent dans le fichier des préférences éventuellement, c'est là où ça peut "coincer"
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

caape

Si on ne modifie pas les préférences, ça ne sauvegarde que le port COM de la dernière IDE quittée ainsi que le type de carte. Cela ne m'a jamais posé de problème. 
A si, ça m'ouvre aussi toutes les fenetres des sources qui étaient ouvertes dans des IDE différentes et ceci pour chaque instance de l'ide si quand j'ai quitté, il y  avait plusieurs sources d'ouverts.

StandAlone domotique<br />Volet roulant, Capteur T° sur p iles, (Eclairage Salon SAM en cour)(Pilotage via WEB + Mobile (base ok))(Sonnette)(Alarme)...

DD91

Bonjour

Je ressort le topic car  j'ai  une question ou deux même....

Le montage m'intéresse bien mais est il possible de ne pas utiliser la pin A0? Et d'atribuer des roles deja prevu?

Est il possible de crée une étape de validation? Exemple j'appuie sur le bouton 1 j'ai un allumage des led et il faut que j'appuie  de nouveau sur le meme bp pour les eteindres?
Éventuellement est il possible d'avoir  un message particulier qui sur l'émetteur demande une validation?

Merci a tous

J-M-L

#21
Apr 07, 2019, 03:13 pm Last Edit: Apr 07, 2019, 03:14 pm by J-M-L
Tout est possible - l'usage de A0 c'est pour avoir qu'un seul code pour les 2 côtés  -> J'utilise cela pour définir le rôle de l'arduino - ces rôles ne servent qu'à définir sur quel canal de communication l'arduino va écouter et parler. il faut que l'un parle sur un canal et que l'autre écoute sur ce canal et inversement. Cette variable role me permet donc de différencier les 2 arduinos (le code est identique dans cet exemple sur les 2 arduinos puisque les rôles sont symétriques).
Vous pouvez charger 2 codes différents et coder en dur chaque rôle

Ensuite en fonction des messages transmis vous pouvez décider ce qu'il se passe, c'est « juste » de la programmation (j'ai un autre petit tuto d'échange de structures qui pourrait vous intéresser)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

DD91

Salut

 merci de ta reponse j'ai  tenter de modifier le prog en mettant 1 ou 0 avec retrait de A0 et ca met toujour "role1"

En fait j'essaye  de faire un montage mais suis tres nul en prog C

Et je n'arrive pas à  me dépatouiller de ca...

DD91

Comment coder en dur?

Meme si je dois avoir deux programmes pas de soucis pour moi

Pour la validation j'ai  tenter de mettre au centre du programme un "case1" mais ca me donne un doublon...

Sur un autre forum j'ai  expliqué ma recherche  mais je n'ai pas le droit de poster le lieb ici?

J'ai  modifié deux pin du nrf pas d'autre  ca ne pose pas de soucis?

Si tu peux m'aider ca me retirerai une sacrée epine du pied

J-M-L

#24
Apr 07, 2019, 08:09 pm Last Edit: Apr 07, 2019, 08:11 pm by J-M-L
Vous faites 2 codes différents et vous changez
Code: [Select]
role = (digitalRead(configurationPin) == LOW) ? 0 : 1 ; en
Code: [Select]
role = 0; dans le premier programme et
Code: [Select]
role = 1; dans le second. Vous pouvez aussi virer le pinMode sur A0 (qui ne servait pas vraiment car un analogRead est toujours en entrée de toutes facons)

Si vous voulez allez plus dans le détail vous pouvez carrément virer la variable role et ne conserver dans un code que tout ce qui s'exécute quand la variable valait 0 et dans l'autre quand elle valait 1
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

DD91

Bonjour

Super ça fonctionne j'avais modifié la ou était inscrit A0.

Sauriez vous m'aider pour mon ajout d'une validation par le même bouton poussoir pendant le programme (ex j'appuie sur 1 la led s'allume sur le récepteur et envoie un message qui s'affiche sur l'émetteur en demandant un nouvel appuie sur le 1 pour l'éteindre). je n'y arrive pas

j'essayerai de séparer le programme et je le reposerai ensuite si ça peut servir

merci par avance pour ton aide

J-M-L

#26
Apr 09, 2019, 05:22 pm Last Edit: Apr 09, 2019, 05:23 pm by J-M-L
Sauriez vous m'aider pour mon ajout d'une validation par le même bouton poussoir pendant le programme (ex j'appuie sur 1 la led s'allume sur le récepteur et envoie un message qui s'affiche sur l'émetteur en demandant un nouvel appuie sur le 1 pour l'éteindre).
OUI, mais.... pas le faire pour vous.

Structurez votre code comme il faut éventuellement en programmation par machine à états (cf mon tuto éventuellement) et proposez quelque chose en ouvrant un nouveau fil dans le forum principal (car ce genre de discussion "pollue" le tuto), en respectant les règles du forum pour poster.

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up