Autres arduino et programmation rc

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

cedreatlas

Ouvrier
bonjour
ce matin, j'ai ces valeurs:
upload_2017-6-3_10-8-38.png


upload_2017-6-3_10-9-48.png


upload_2017-6-3_10-10-27.png


cordialement
Ph
 
J

jpbbricole

Compagnon
Donc ton émetteur est "vivant".
Fait le même test sur le récepteur.
 
J

jpbbricole

Compagnon
C'est super!
on se prépare un bon samedi!

Je te prépare la suite.
 
J

jpbbricole

Compagnon
Salut @cedreatlas
L'Arduino n'est pas une science exacte! J'ai dû un peu lutter avec les bibliothèques,les sketches que tu utilises (spécialement la réception), ne sont pas compatibles avec la nouvelle version de la bibliothèque RF24, cela génère une erreur. J'ai pas trouvé comment contourner le problème, sans presque tout réécrire.
Voici ce qu'il faut télécharger du côté de l'émetteur:

et du côté du récepteur:
et tu dois voire dans le moniteur, coté émission:
Tx: 132-130-128-127-135-135-0
Tx: 133-130-129-127-134-135-0
Tx: 133-131-129-127-135-135-0
Tx: 132-129-128-127-135-135-0
Tx: 132-128-127-126-135-135-0
Tx: 132-128-126-125-135-135-0
Tx: 132-129-128-126-135-135-0
Tx: 133-131-129-128-135-135-0
Tx: 132-129-127-126-135-135-0
Tx: 132-130-128-126-135-134-0

et côté réception:
Rx: 132-127-125-124-135-135-0
Rx: 132-127-124-123-135-135-0
Rx: 133-127-125-124-135-135-0
Rx: 133-128-126-125-135-135-0
Rx: 132-127-125-124-135-135-0

le dernier chiffre, ....-0 est l'état des TOR, actifs à 0.

J'ai eu de nettements meilleurs résultats avec un UNO en réception, à la place d'un Nano. (allez savoir :7grat:)

Je te mets, en fichier joint, l'ancienne version de la bibliothèque RF24

Cordialement
jpbbricole
 

Fichiers joints

  • RF24-masterOld.zip
    204.5 KB · Affichages: 84
C

cedreatlas

Ouvrier
Merci, c'est super de trouver un programme après une bonne sieste, mais bon, avec des erreurs..
que faire??, j'aimerAis bien les corriger tout seul mais y a t'il un recensement des erreurs?

Arduino : 1.8.2 (Windows 10), Carte : "Arduino Nano, ATmega328"

C:\Users\cedreatlas\Documents\Arduino\sketch_jun03f\sketch_jun03f.ino: In function 'void setup()':

sketch_jun03f:7: error: 'i' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++) { pinMode(led, OUTPUT);}

^

sketch_jun03f:7: error: 'led' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++) { pinMode(led, OUTPUT);}

^

sketch_jun03f:7: error: 'NB_ELTS_DANS_TABLE' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++) { pinMode(led, OUTPUT);}

^

sketch_jun03f:8: error: 'servo0' was not declared in this scope

servo0.attach(14); servo1.attach(15); servo2.attach(16);

^

sketch_jun03f:8: error: 'servo1' was not declared in this scope

servo0.attach(14); servo1.attach(15); servo2.attach(16);

^

sketch_jun03f:8: error: 'servo2' was not declared in this scope

servo0.attach(14); servo1.attach(15); servo2.attach(16);

^

sketch_jun03f:9: error: 'servo3' was not declared in this scope

servo3.attach(17); servo4.attach(18); servo5.attach(19);

^

sketch_jun03f:9: error: 'servo4' was not declared in this scope

servo3.attach(17); servo4.attach(18); servo5.attach(19);

^

sketch_jun03f:9: error: 'servo5' was not declared in this scope

servo3.attach(17); servo4.attach(18); servo5.attach(19);

^

sketch_jun03f:10: error: 'radio' was not declared in this scope

radio.begin();

^

sketch_jun03f:11: error: 'pipe' was not declared in this scope

radio.openReadingPipe(1,pipe);

^

C:\Users\cedreatlas\Documents\Arduino\sketch_jun03f\sketch_jun03f.ino: In function 'void loop()':

sketch_jun03f:17: error: 'radio' was not declared in this scope

if (radio.available())

^

sketch_jun03f:19: error: 'erreur_reception' was not declared in this scope

erreur_reception = 0;

^

sketch_jun03f:20: error: 'MonMessage' was not declared in this scope

while(!radio.read(&MonMessage, sizeof(MonMessage)));

^

sketch_jun03f:21: error: 'val_0' was not declared in this scope

val_0= MonMessage.Msg0; val_1= MonMessage.Msg1; val_2= MonMessage.Msg2;

^

sketch_jun03f:21: error: 'MonMessage' was not declared in this scope

val_0= MonMessage.Msg0; val_1= MonMessage.Msg1; val_2= MonMessage.Msg2;

^

sketch_jun03f:21: error: 'val_1' was not declared in this scope

val_0= MonMessage.Msg0; val_1= MonMessage.Msg1; val_2= MonMessage.Msg2;

^

sketch_jun03f:21: error: 'val_2' was not declared in this scope

val_0= MonMessage.Msg0; val_1= MonMessage.Msg1; val_2= MonMessage.Msg2;

^

sketch_jun03f:22: error: 'val_3' was not declared in this scope

val_3= MonMessage.Msg3; val_4= MonMessage.Msg4; val_5= MonMessage.Msg5;

^

sketch_jun03f:22: error: 'val_4' was not declared in this scope

val_3= MonMessage.Msg3; val_4= MonMessage.Msg4; val_5= MonMessage.Msg5;

^

sketch_jun03f:22: error: 'val_5' was not declared in this scope

val_3= MonMessage.Msg3; val_4= MonMessage.Msg4; val_5= MonMessage.Msg5;

^

sketch_jun03f:23: error: 'm' was not declared in this scope

m = MonMessage.MsgBt;

^

sketch_jun03f:35: error: 'erreur_reception' was not declared in this scope

if (erreur_reception > 20)

^

sketch_jun03f:37: error: 'val_0' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:37: error: 'val_1' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:37: error: 'val_2' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:37: error: 'val_3' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:37: error: 'val_4' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:37: error: 'val_5' was not declared in this scope

val_0 = 90; val_1 = 90; val_2 = 90; val_3 = 90;val_4 = 90; val_5 = 90;

^

sketch_jun03f:38: error: 'm' was not declared in this scope

erreur_reception = 1; m=0; action();

^

C:\Users\cedreatlas\Documents\Arduino\sketch_jun03f\sketch_jun03f.ino: In function 'void action()':

sketch_jun03f:44: error: 'servo0' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:44: error: 'val_0' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:44: error: 'servo1' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:44: error: 'val_1' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:44: error: 'servo2' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:44: error: 'val_2' was not declared in this scope

servo0.write(val_0); servo1.write(val_1); servo2.write(val_2);

^

sketch_jun03f:45: error: 'servo3' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:45: error: 'val_3' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:45: error: 'servo4' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:45: error: 'val_4' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:45: error: 'servo5' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:45: error: 'val_5' was not declared in this scope

servo3.write(val_3); servo4.write(val_4); servo5.write(val_5);

^

sketch_jun03f:46: error: 'i' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++)

^

sketch_jun03f:46: error: 'led' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++)

^

sketch_jun03f:46: error: 'NB_ELTS_DANS_TABLE' was not declared in this scope

for (i = 0; i < NB_ELTS_DANS_TABLE(led); i ++)

^

sketch_jun03f:48: error: 'b' was not declared in this scope

b = bitRead(m,i);

^

In file included from sketch\sketch_jun03f.ino.cpp:1:0:

sketch_jun03f:48: error: 'm' was not declared in this scope

b = bitRead(m,i);

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:111:32: note: in definition of macro 'bitRead'

#define bitRead(value, bit) (((value) >> (bit)) & 0x01)

^

exit status 1
'i' was not declared in this scope

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
 
J

jpbbricole

Compagnon
Salut cedreatlas
Mon diagnostique est: sieste trop longue, pas les 2 yeux ouverts :smt015

Plus sérieusement, je pense que le copier-coller a mal fonctionné et qu'il manque des bouts, spécialement dans le début.
Je te joins un zip avec les 2 programmes.

Cordialement
jpbbricole
 

Fichiers joints

  • RF24TestEmetteurRecepteur.zip
    2.6 KB · Affichages: 68
C

cedreatlas

Ouvrier
Voici ce que ça raconte..

Arduino : 1.8.2 (Windows 10), Carte : "Arduino Nano, ATmega328"

C:\Users\cedreatlas\Documents\Arduino\sketch_jun03h\sketch_jun03h.ino: In function 'void loop()':

sketch_jun03h:50: error: could not convert 'radio.RF24::read(((void*)(& MonMessage)), ((uint8_t)sizeof (MonMessage)))' from 'void' to 'bool'

while(!radio.read(&MonMessage, sizeof(MonMessage)));

^

sketch_jun03h:50: error: in argument to unary !

exit status 1
could not convert 'radio.RF24::read(((void*)(& MonMessage)), ((uint8_t)sizeof (MonMessage)))' from 'void' to 'bool'

Bibliothèque non valide trouvée dans C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld : C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld
Bibliothèque non valide trouvée dans C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld : C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld
Bibliothèque non valide trouvée dans C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld : C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld
Bibliothèque non valide trouvée dans C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld : C:\Users\cedreatlas\Documents\Arduino\libraries\RF24-masterOld

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
 
C

cedreatlas

Ouvrier
merci pour le conseil, j'ai ça maintenant:

Arduino : 1.8.2 (Windows 10), Carte : "Arduino Nano, ATmega328"

C:\Users\cedreatlas\Documents\Arduino\sketch_jun03h\sketch_jun03h.ino:2:20: fatal error: printf.h: No such file or directory

#include <printf.h>

^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino Nano

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
 
J

jpbbricole

Compagnon
#include <printf.h>
Oh là là! la sieste a été trop longue! cette instruction ne se trouve ni dans le sketch émetteur ni dans le sketch récepteur. Elle était dans le sketch de test des émetteurs, mais on en a plus besoin.
Reprends les 2 programmes que je t'ai mis en attachement dans le post #160.

Cordialement
jpbbricole
 
C

cedreatlas

Ouvrier
je n'ai pas réussi à ouvrir indépendamment les 2 programmes, (oui, je sais, je ne suis pas doué), mais j'ai repris tes 2 programmes du post 158, mais rien dans le sérial..
 
J

jpbbricole

Compagnon
Je te les mets séparément, tu enregistres les 2 fichiers et tu changes l'extension .txt en .ino

Cordialement
jpbbricole
 

Fichiers joints

  • Emetteur.txt
    3.7 KB · Affichages: 80
  • Recepteur.txt
    3.3 KB · Affichages: 73
C

cedreatlas

Ouvrier
Merci, j'ai mis INI, ca fonctionnait mieux que INO, mais toujours rien dans le serial
 
C

cedreatlas

Ouvrier
et en inverssant les cables usb, j'ai , comme valeurs:
50 , 88, 120
c'est mieux
 
C

cedreatlas

Ouvrier
Bonjour
Après, il faudrait que je transforme ces signaux en mouvements,
cordialement
Ph
 
C

cedreatlas

Ouvrier
tu vois, j'étais en train de me dire qu'il fallait que je fasse la peinture de ma machine, je touche au joystick et le servo mouve, c'est super!!!
Je n'ai pas tout compris dans l'arduino mais le principal c'est d'avancer, encore merci
 
C

cedreatlas

Ouvrier
je vais encore avoir des questions à poser..
pourquoi le joystick ne fait pas bouger les servos avec le 5 v usb et pourquoi bougent ils avec le transfo??
 
J

jpbbricole

Compagnon
Super que ça mouve !
Pour ce qui est de l'alimentation par L'USB, c'est pas suffisant pour des servo, car, après passage par le circuit d'entrée du 5v. il ne reste plus que environ 4,4v.
Pour avoir 5v.il faut alimenter par le jack (vin) avec un minimum de 7,5v. Idéal est 9v.

Cordialement
Jjbbricole
 
C

cedreatlas

Ouvrier
oui,mais mes servos étaient alimentés en 7.5v, le joystick alimenté par usb et ça ne fonctionnait pas, pourquoi?
Mes servos sont des servos de robot, il vont jusqu'à 180°, mais comment régler ces servos?, j'ai essayé de changer les valeurs dans le recepteur et (ou) emeteur mais ils ne dépassent pas le 90°
 
J

jpbbricole

Compagnon
Salut cedreatlas

J'ai essayé le montage, avec un servo de type MD260 et un potentiomètre de 10k, la valeur lue
val_0 = (analogRead(potpin_0))
est entre 0 et 1024
après fonction map(
val_0 = map(val_0, 0, 1023, posmin, posmax); // int posmin = 45; int posmax = 135
entre 45 et 135
et à la réception, le servo tourne bien de 180°.

Le problème vient de ton joystick qui, lui dans ses débattements extrêmes, n'utilise pas toute la rotation possible du potentiomètre.
Donc la fonction analogread ne donne pas de 0 à 1024 mais des valeurs comme 250 à 780 par exemple.
C'est pourquoi, à la réception, tu as seulement 90°.
Si tu me dis, côté émetteur, sur quel position est connecté ton joystick, je te donnerai le programme qui affichera la position Min et Max de ton (tes) joystick et ainsi corriger la ligne map(val_0.....

Cordialement
jpbbricole
 
C

cedreatlas

Ouvrier
salut
Mon 1er joystick est branché sur A0, je pense que si tu me fais un model, je pourrais le reproduire pour les autres , j'ai des potentomètres "barrettes" pour l'inclinaison du moteur..mais c'est le même principe, je pense..
Par contre coté reception, mon servo est branché sur "sortie", ça fonctionne comme ça..
upload_2017-6-5_0-22-55.png
 
R

Rebus

Compagnon
Bonjour à vous,

J'ai lu vos derniers posts, et je vois que ça a bien progressé.
A propos des problèmes de compatibilité des librairies, j'avais indiqué que vue le nombre d'erreurs générées par mes premières compilations, j'étais revenu à la version Arduino IDE 1.6.5 et comme tout se passait bien, j'y suis resté.

Pour utiliser au mieux la course des potentiomètres, dans l'article l'auteur a fournit un petit sketch bien utile :

/*================== MESURE D'UN POTENTIOMETRE ======================
Affiche les valeurs d’un potentiomètre sur le moniteur série.
Ce sketch ne fonctionne qu’avec une carte Arduino.
========================================================================*/
int signal = A0; // Signal recepteur
int Val1; //Valeur du signal recepteur

void setup() {
Serial.begin(9600); // Vitesse de transmission
pinMode(signal, INPUT); // Signal entrée
}
void loop()
{
Val1 = analogRead(signal); //Alors stocker la valeur du potard dans Val1
Serial.print("Valeur = "); // Ecrit sur l’écran "Valeur = "
Serial.println(Val1); // Ecrit sur l’écran le contenu de Val1
delay (1000); // Attente 1 seconde
}
//================== FIN DE PROGRAMME ======================================


De mon coté je n'ai pas trop avancé sur les erreurs réception. J'aimerai bien comprendre et surtout avoir une indication sur la qualité de la liaison mais coté émetteur.


bonne journée.
 
J

jpbbricole

Compagnon
Salut @Rebus
j'étais revenu à la version Arduino IDE 1.6.5
Oui, j'ai aussi eu un cas "pointu" du fait de la version de l'IDE. Comme quoi, c'est pas une science exacte, l'embêtant, dans notre cas, c'est que avec la dernière version de la librairie RF24 le programme génère une erreur que je suis bien incapable de contourner.
avoir une indication sur la qualité de la liaison mais coté émetteur
J'ai recherché, un peu, côté émetteur, rien trouvé, côté récepteur, il y a 1 bit dans un registre, donc assez pauvre, vu le prix on peut pas se plaindre!
Si tu as trop d'erreurs, essaye de changer de pipe
const uint64_t pipe = 0xE8E8F0F0E1LL;
des 2 côté, sais pas trop, je ne suis pas spécialiste.

Salut @cedreatlas
ajoutes cette ligne:
}
val_0 = (analogRead(potpin_0)); val_0 = map(val_0, 0, 1023, posmin, posmax);
Serial.println("Pot: " + String(val_0));
val_1 = (analogRead(potpin_1)); val_1 = map(val_1, 0, 1023, posmin, posmax);

Déplaces ton joystick au minimum et au maximum, relèves ces 2 valeurs et mets le minimum et le maximum
dans cette ligne
val_0 = (analogRead(potpin_0)); val_0 = map(val_0, minimum, maximum, posmin, posmax);

Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
Salut cedreatlas
Vu la quantité d'erreurs, il te faut mettre l'entier du programme (le fichier INO) sous forme de fichier attaché.
 

Sujets similaires

A
Réponses
5
Affichages
2 216
jpbbricole
J
J
Réponses
18
Affichages
4 478
jpbbricole
J
V
Réponses
56
Affichages
11 016
vibram
V
Haut