Autres arduino et programmation rc

  • Auteur de la discussion cedreatlas
  • Date de début
C

cedreatlas

Ouvrier
tu n'as pas une photo de tes branchements ?
Je n'ai aucun signal dans le moniteur serie quand je bouge la manette, je ne vois pas trop d'ou ça viens
 
R

Rebus

Compagnon
Je ne suis pas sûr que ça t'aide car la carte régulateur de tension que j'utilise est différente de la tienne
 
Dernière édition par un modérateur:
C

cedreatlas

Ouvrier
il n'y a aucune valeur qui s'affiche dans le serial, surement un probléme dans le programme
 
C

cedreatlas

Ouvrier
j'ai tout revu et re programmé, les servos claquent par manque de jus, mais toujours aucune valeur des les serials et aucune connection entre emeteur recepteur, je cale un peu
 
J

jpbbricole

Compagnon
Salut cedreatlas

Est-ce-que le programme téléchargé dans le Nano est identique à celui d'origine. Si non, mets la nouvelleversion en ligne.

Cordialement
jpbbricole
 
C

cedreatlas

Ouvrier
salut
oui, je n'ai rien changé au programme. une chose curieuse, quand je télécharge le programme sur l'emeteur sur com 9, le recepteur se met sur com 9, ils ont le même port , normal??
J'ai vu , sur cette page qu'il y avait des problemes avec les joysticks, donc, j'ai remplacé par un potentiometre
http://bateaux.trucs.free.fr/rf24l01+loin.html
 
J

jpbbricole

Compagnon
Boin, pour débuter, tu ne connectes que le Nano de l'émetteur.
mais toujours aucune valeur des les serials
Dans le programme que tu as téléchargé, les sérials ne sont pas utilisés!!!
Alors on va les initialiser, ajoute ce qui est en gras à l'endroit comme indiqué:

void setup(void)
Serial.begin(9600);
{for(i =0; i < NB_ELTS_DANS_TABLE(b_t); i ++)

void loop()
{
.
.
.
val_6 =(analogRead(potpin_6)); val_6 =map(val_6,335,665, posmin, posmax); val_6 =constrain(val_6, posmin, posmax);
val_7 =(analogRead(potpin_7)); val_7 =map(val_7,335,665, posmin, posmax); val_7 =constrain(val_7, posmin, posmax);//-------------------------------- --------------------------------------------if(digitalRead(poussoir)==LOW){
Serial.println(val_0);
val_1x = val_1;// Donne à la variable (val_1x) la valeur de (signal) lue sur le pin2

Avec ça, tu dois voire, dans le moniteur de l'IDE Arduino (réglé à 9600) les variations du manche 0.

Aprés, on verra pour la suite.

Cordialement
jpbbricole
 
C

cedreatlas

Ouvrier
par contre, sur la nano emeteur, la led TX varie avec le joystick
 
J

jpbbricole

Compagnon
par contre, sur la nano emeteur, la led TX varie avec le joystick
Ce qui veut dire que les lignes que je t'ai fait ajouter fonctionnent. Mais où se perdent les données qui devraient s'afficher?

Qu'utilises-tu pour programmer les Nano?
As-tu ouvert la fenêtre du moniteur?
Est-ce-que la vitesse du moniteur est à 9600

Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
je ne comprends pas ta question, quel programme?
Pour télécharger le programme dans l'Arduino et éventuellement le modifier, il faut un programme comme l'IDE Arduino ou Programino par exemple.

C'est étrange que la l'ex Tx clignote et que rien ne s'affiche dans moniteur!

Cordialement
jpbbricole
 
C

cedreatlas

Ouvrier
LTX ne clignotte pas il s'allume quand j'actionne la manette;
voici le programme:
#include <Wire.h>
#define adress1 0x20
#define adress2 0x39
#include <SPI.h>
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;

typedef struct { uint8_t Msg0; uint8_t Msg1; uint8_t Msg2; uint8_t Msg3;
uint8_t Msg4; uint8_t Msg5; uint8_t Msg6; uint8_t Msg7; uint8_t MsgTOR; }MsgSt_t;
MsgSt_t MonMessage;

#define NB_ELTS_DANS_TABLE(Table) (sizeof(Table) / sizeof(Table[0]))
int potpin_0 = A0; int potpin_1 = A1; int potpin_2 = A2; int potpin_3 = A3; int potpin_4 = A4; int potpin_5 = A5; int potpin_6 = A6; int potpin_7 = A7;
#define poussoir 0
int val_0; int val_1; int val_2; int val_3; int val_4; int val_5; int val_6; int val_7;
int i;
int m; // Message
// int nbi =8; // Nombre de boutons (ici 8)
int b_t[] = {1,2,3,4,5,6,7}; // tableau des Boutons
int b[] = {1,2,3,4,5,6,7}; // Tableau bite de message
int val_1x; int val_2x; int diff;
int neutre = 90;
int posmin = 45;
int posmax = 135; // Ligne à valider pour une rotation de 90° des servos ou Ligne à supprimer pour 180°
//int posmin = 0; int posmax = 180; // Ligne à valider pour une rotation de 180° des servos ou Ligne à supprimer pour 90°
//----------------------------------------------------------------
void setup(void)

{
Serial.begin(9600);
for (i = 0; i < NB_ELTS_DANS_TABLE(b_t); i ++)
{ pinMode(b_t, INPUT); digitalWrite(b_t, HIGH);}
pinMode(poussoir,INPUT);
Wire.begin(); radio.begin(); radio.openWritingPipe(pipe);
}
//----------------------------------------------------------------
void loop()
{
for (i = 0; i < NB_ELTS_DANS_TABLE(b_t); i ++) {
if (digitalRead(b_t)) { b = bitClear(m,i); }
else { b = b = bitSet(m,i); }
}
val_0 = (analogRead(potpin_0)); val_0 = map(val_0, 335, 665, posmin, posmax); val_0 = constrain(val_0, posmin, posmax);
val_1 = (analogRead(potpin_1)); val_1 = map(val_1, 335, 665, posmin, posmax); val_1 = constrain(val_1, posmin, posmax);
val_2 = (analogRead(potpin_2)); val_2 = map(val_2, 335, 665, posmin, posmax); val_2 = constrain(val_2, posmin, posmax);
val_3 = (analogRead(potpin_3)); val_3 = map(val_3, 335, 665, posmin, posmax); val_3 = constrain(val_3, posmin, posmax);
val_4 = (analogRead(potpin_4)); val_4 = map(val_4, 335, 665, posmin, posmax); val_4 = constrain(val_4, posmin, posmax);
val_5 = (analogRead(potpin_5)); val_5 = map(val_5, 335, 665, posmin, posmax); val_5 = constrain(val_5, posmin, posmax);
val_6 = (analogRead(potpin_6)); val_6 = map(val_6, 335, 665, posmin, posmax); val_6 = constrain(val_6, posmin, posmax);
val_7 = (analogRead(potpin_7)); val_7 = map(val_7, 335, 665, posmin, posmax); val_7 = constrain(val_7, posmin, posmax);
//----------------------------------------------------------------------------
if (digitalRead(poussoir)== LOW ) {
Serial.println(val_0);
val_1x = val_1; // Donne à la variable (val_1x) la valeur de (signal) lue sur le pin2
val_2x = val_2; // Donne à la variable (val_2x) la valeur de (signal) lue sur le pin2

diff = (val_2x - neutre); // Calcule l'ecart entre les deux servos
val_1 = val_1x - diff;
val_2 = val_1x + diff; // Calcule la position des servos
val_1=constrain(val_1, posmin, posmax); // Calibre les valeurs pour le servo1 dans la plage acceptée
val_2=constrain(val_2, posmin, posmax);
}
MonMessage.MsgTOR = m;
MonMessage.Msg0 = val_0; MonMessage.Msg1 = val_1; MonMessage.Msg2 = val_2; MonMessage.Msg3 = val_3; MonMessage.Msg4 = val_4;
MonMessage.Msg5 = val_5; MonMessage.Msg6 = val_6; MonMessage.Msg7 = val_7; radio.write(&MonMessage, sizeof(MonMessage));
}

bonne soirée
 
J

jpbbricole

Compagnon
Oupssss! J'avais pas vu la c......e que j'ai faite!

if (digitalRead(poussoir)== LOW ) {
Serial.println(val_0);

Doit être
Serial.println(val_0);
if (digitalRead(poussoir)== LOW ) {


Essayes ça! Et tu devrai avoir quelque chose sur le moniteur.

Bonne nuit
jpbbricole

 
C

cedreatlas

Ouvrier
oui, le bouger ne change rien;
c'est normal 5 V? non
 
C

cedreatlas

Ouvrier
j'avais branché en ligne sur TX1, j'ai branché sur A0, c'est pareil, 135
 
J

jpbbricole

Compagnon
Oh là là, je comprends de moins en moins, dessines moi le câblage du joystick.
 
C

cedreatlas

Ouvrier
une bonne picture , c'est mieux

IMG_20170521_001753[1].jpg
 
J

jpbbricole

Compagnon
Mesures au voltmètre sur A0, la tension doit varier quand tu bouges le joystick, si pas, c'est mal câblé.

Bonne nuit.
jpbbricole
 
C

cedreatlas

Ouvrier
Bonjour
je ne comprends rien, après 4h de sommeil, je me lève, j'allume l'arduino, je re télécharge et les valeurs s'affichent dans le sérial, j'avais mis un potentiomètre hier soir, j'ai de 45 à 135
 
C

cedreatlas

Ouvrier
merci, mais toujours pas de communication entres le emeteurs-recepteurs, je ne vois pas pourquoi
 
J

jpbbricole

Compagnon
mais toujours pas de communication entres le emeteurs-recepteurs
L'émission ne se fait qu'à cette condition

if (digitalRead(poussoir)== LOW ) {

C'est à dire qu'il faut mettre GND sir la pin 0.
Ce GND sur la pin 0 doit être assez court et surtout à ne pas oublier car c'est aussi le pin Rx de téléchargements des programmes, l'application d'un GND sur cette pin peut aussi influencer l'affichage dans le moniteur.
upload_2017-5-21_9-18-14.png

une bonne picture , c'est mieux
Un peu plus nette serait la cerise sur le gateau!

Cordialement
jpbbricole
 
R

Rebus

Compagnon
Bonjour à vous !

Je vois qu'on a attaqué tôt ce matin, hélas toujours pas de liaison Radio....
Question : est-ce que tu as commandé plusieurs modules Nrf24L01 ?
Moi j'en avais commandé 6, dont 4 avec antenne extérieure et deux avec antenne intégrée.
Je les ai intervertis et j'en ai 1 qui ne fonctionne pas du tout.

Tu devrais essayer tes sorties TOR d'abord car le risque d'erreur de câblage est minime, une led+résistance coté récepteur et un simple strap coté émetteur.

Comme tous les montages électroniques, si la led s'allume ... c'est bon.
 
Haut