Maintenant c'est plus clair pour moi.
Je vais tenter d'appliquer cela sur BOB.
Encore merci à vous deux.
Cordialement.
Maintenant c'est plus clair pour moi.
Je vais tenter d'appliquer cela sur BOB.
Encore merci à vous deux.
Cordialement.
CA avance, ca avance...
On est d'accord que sur le module MCP23017 il n'y à que 2 Pin GND et 2 Pin VCC
Pour éviter une bêtise, comment je connecte les autres GND. Est ce que je connecte tout sur la même pin à l'aide d'un connecteur style Wago par exemple ?
Ou est ce que je peux directement connecter sur l'alimentation générale 7V ou connecter sur la MEGA toujours à l'aide d'un Wago.
Bon weekend à tous
le composant nécessite une alimentation entre 2.7 et 5.5V donc ne pas lui envoyer les 7V sous risque de voir la fumée magique (si c'est de cela que vous parlez et pas de GND)est ce que je peux directement connecter sur l'alimentation générale 7V
Regrouper les fils dans un wago fera l'affaire. tous les GNDs doivent être reliés, donc que ce soit directement sur le GND de l'alimentation ou celui du composant ce n'est pas grave ( généralement on connecte les GND en étoile donc le mieux serait à la source)comment je connecte les autres GND
Désolé de poser des questions au fur et à mesure des connexions mais je préfère être conforme.
Les capteurs ultrasonique HC-SR04 sont branchés sur A1 A2 A3 etc... Il me semble que se sont des entrées analogiques.
Puis-je quand même les connecter sur le module MCP23017 ?
Merci pour vos réponses.
A0, A1 A2 peuvent être utilisée comme entrées analogiques parce qu'elles sont aussi connectées à l'ADC du microcontroller mais ce sont avant tout juste des pin standard et elles sont utilisées en tant que tel pour déclencher un train d'ondes ultrasons et recevoir l'écho.
Vous pouvez donc les brancher sans souci sur le MCP23017. Le challenge que vous allez avoir n'est pas dans le déclenchement du train d'ondes, mais dans la mesure fine qui suit comme expliqué dans mon message d'Hier à 14h39. la fonction pulseIn() ne sait pas traiter votre MCP23017. il va donc falloir coder l'écoute de la durée du signal "à la main". Ce n'est pas complètement trivial si on veut être précis (vu que le temps où la pin reste à HIGH est converti ensuite en distance).
voici à quoi ressemble le signal (image sur https://www.carnetdumaker.net/articl...duino-genuino/)
il faut mesurer la durée du signal sur la 3ème ligne après avoir envoyé l'impulsion
J'utilise Newping pour la mesure des distances, cela ne devrait pas poser de problèmes. A moins que je me trompe.
Par contre pour les servos oui.
Sinon cela m'oblige à revoir la programmation des capteurs ou de chercher d'autres solutions de connectiques.
Ca mérite réflexion.
Merci à vous, cordialement
Si j'ai bien compris ce MCP23017 ne me sert pas à grand chose, à part piloter 2 leds RGB.
Résultat des courses. Je me retrouve avec mon bébé le ventre ouvert et son système nerveux en rade. je suggère de lui implanter un deuxième cœur. C'est à dire de connecter un UNO esclave sur le MEGA maître.
Est-ce cohérent ? Je pourrais connecter les capteurs, le servo et les Leds sur l'UNO, le MEGA se chargerait d'envoyer et de chercher les information su l'UNO.
Merci
Faudrait peut être revenir à la discussion première
Une idée était d’avoir des arduinos distincts pilotants les différentes parties et installer ces arduinos sur un bus de communication (par exemple I2C ou juste série la mega ayant plusieurs ports) avec un petit protocole maison
Ainsi entre les étages on n’aurait que le bus et pas tous les fils
Justement. Je suis entrain de tester une communication entre une MEGA et une UNO avec un code trouvé sur le web.
Code MAITRE
Code ESCLAVE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 /********************************************** // Transfert de données d'une carte arduino à une autre // Ce sketch envoie le message Hello à une carte connectée // via le port série logiciel // Branchements : // * RX connecté sur pin 10 (connecté à TX sur l'autre carte) // * TX connecté sur pin 11 (connect à RX sur l'autre carte) // * Et ne pas oublier de relier les masses des 2 cartes (GND) // Remarque : // Sur la MEGA utilisez uniquement pour RX: // 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 // Sur la Leonardo utilisez uniquement pour RX: // 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). ****************************************/ #include <SoftwareSerial.h> SoftwareSerial mySerial(10,11 ); // RX, TX int led = 22; void setup() { //-- définition du port Série Logiciel mySerial.begin(115200); pinMode(led, OUTPUT); } void loop() //-- Toutes les 2 secondes envoi d'un message {if (mySerial.available()) {digitalWrite(led, HIGH); //-- Pendant l'envoi allume la LED mySerial.write("Hello"); } digitalWrite(led, LOW); delay(2000); //-- Attente de 2 secondes avant de recommencer }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 // Réception de données via le port Série Logiciel : // Testé avec une NANO 328 // Attention les câbles RX et TX doivent être croisés // Ne pas oublier de relier les masses des 2 cartes (GND) // entre la carte émetrice et la carte réceptrice ! ***************/ //-- Déclaration du port Série Logiciel #include <SoftwareSerial.h> SoftwareSerial mySerial(11,10); // RX, TX //-- Mise en fonction de la LED lorsqu'un message est reçu int led = 13; //-- Setup void setup() { //-- Initialisation de la LED pinMode(led, OUTPUT); //-- Ouverture du port Série de la carte pour le moniteur Serial.begin(115200); while (!Serial) {;} //-- Pour Leonaro nécessaire Serial.println("Attente réception !"); //-- Définition et ouverture du port logiciel mySerial.begin(57600); } //-- Affichage de la communication void loop() { //-- Si des données sont présentes if (mySerial.available()) {//-- Affichage sur la console des données Serial.write(mySerial.read());} }
L'Esclave attend bien la réception sur le scope (Attente réception) mais le Maitre apparemment n'envoi rien. (Pas de Hello sur le scope).
Plusieurs questions.
d'après les explications c'est l'Esclaves qui alimente le Maitre. Il y a bien des leds allumé sur les 2 modules.
Toujours d'après les explications ces code sont prévus pour une UNO et un Leonardo. J'ai branché les câbles d'après mon intuition sur les bornes qui me semblaient le plus adéquat.
Ce qui me parait les plus bizzare c'est le Maitre n'affiche pas le "Hello"
Je cherche.
Aucune importance. Il faut juste que les deux cartes partagent le même GND.
Les broches RX et TX utilisées sont celles spécifiées à la ligne suivante :
Il faut bien veiller à croiser les RX et les TX :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SoftwareSerial mySerial(10,11 ); // RX, TX
- La broche TX (transfert) du maitre envoi vers la broche RX (réception) de l’esclave.
- La broche RX (réception) du maitre reçoit depuis la broche TX (transfert) de l’esclave.
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
GRRRR !!!
Le MEGA ne veut rien envoyer apparemment et l'UNO affiche bien
15:02:04.185 -> Attente réception !
15:02:04.185 -> Attente réception !
MEGA n'affiche toujours rien.
Connexion :
PIN 11 MEGA sur PIN 10 UNO TX/RX
PIN 10 MEGA sur PIN 11 UNO TX/RX
SDA PIN 20 MEGA sur SDA UNO SENSOR SHIELD V5.0
SCL PIN 21 MEGA sur SCL UNO SENSOR SHIELD V5.0
GND PIN 21 MEGA sur PIN + IIC SENSOR SHIELD V5.0
VCC PIN 21 MEGA sur PIN - IIC SENSOR SHIELD V5.0
LED PIN 13 sur UNO, pas de led sur MEGA
11500 BAUD sur les 2 Moniteurs séries.
Du coup, je vais me payer une glace.
Comprends pas...
Fais-tu les essais sans les shields ?
Tu n'es pas obligé d'utiliser SoftwareSerial sur la MEGA, tu as plusieurs RX/TX disponibles.
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
il faut connecter les GND des 2 cartes
Salut Jérôme,
Fonctionne pas non plus sans les shields.
J'ai connecté 2 UNO, toujours pareil. Esclave est toujours en attente de réception. Apparemment toujours pas d'envoie du Maitre.
J'ai rajouté un serial.println dans le loop du Maitre, pas de résultat.
J'abandonne pour aujourd'hui.
Merci à vous tous.
Un dernier petit test peut-être pour aujourd'hui?
vous prenez 2 UNOs
pin 10 du UNO1 connecté à PIN 11 du UNO 2
pin 11 du UNO1 connecté à PIN 10 du UNO 2
GND du UNO1 connecté à GND du UNO 2 (très important)
chargez ce code des 2 côtés.
ouvrez 2 console série à 115200 bauds, une pour chaque UNO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 // pin 10 du UNO1 connecté à PIN 11 du UNO 2 // pin 11 du UNO1 connecté à PIN 10 du UNO 2 // GND du UNO1 connecté à GND du UNO 2 #include <SoftwareSerial.h> SoftwareSerial arduinoDistant(11, 10); // RX, TX void setup() { Serial.begin(115200); Serial.println(); arduinoDistant.begin(9600); } void loop() { //si on tape quelque chose dans le moniteur série (à 115200 bauds) on l'envoie à l'autre if (Serial.available()) arduinoDistant.write(Serial.read()); // si on reçoit quelque chose de l'autre arduino, on l'affiche if (arduinoDistant.available()) Serial.write(arduinoDistant.read()); }
ce que vous tapez d'un côté doit apparaître de l'autre.
Qand je connecte les 2 GND je n'arrive plus à télécharger le code. De plus, il y a plusieurs GND sur la Mega. A côté de AREF, près de la PIN 53 et dans la zone POWER. Tous essayé. J'ai même débranché les leds. RIEN
Tous les GND de votre mega sont connectés entre eux. Il suffit d’en choisir un
Pour le code posté ci dessous a tester - essayer avec rien de branché sur vos cartes
Ok, ça marche... dans un sens en tout cas. Faut préciser que pour ouvrir 2 consoles il faut ouvrir 2 IDE et connecter sur 2 USB les 2 ArduinoUn dernier petit test peut-être pour aujourd'hui?
J'ai monté sur 2 MEGA
Tu peux aussi utiliser un terminal série autre que celui de l'IDE Arduino. Mais dans tous les cas, il faudra souvent lancer un terminal par port série connecté.
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager