nouveau en arduinomodélisme à besoin d'aide...

Bonjour,

Je viens vers vous afin de trouver un peu d'aide...
Je m'intéresse depuis peu à Arduino! Génial système que voilà!!!

Je l'utilise uniquement pour le plaisir d'apprendre quelque chose de nouveau, mais aussi pour le modélisme.
Je fais beaucoup d'aéromodélisme et je voudrais pourquoi pas installer un de ces systèmes dans mes avions.

Mes premiers codes sont tout simples, mais il faut bien débuter...
Pour l'instant, j'arrive à faire clignoter des led, faire un va-et-viens de servo etc...

Mais j'aimerais pousser plus loin et rendre mon arduino "autonome", enfin, pourvoir le contrôler depuis ma spektrum DX8 (télécommande 8 voies de modélisme).

En gros, pour essayer, je voudrais tenter d'avoir sur un switch 3 positions de ma DX8, 3 cycles de clignotement de led différents...

par exemple,

Position 0 = led éteinte
position 1 = 1 clignotement /s
position 2 = les allumée.

Nayant jamais utilisé ma nano autrement que connectée au PC, quelqu'un aurait-il des explications claires, précises et si possible avec des exemples ou liens, sans partir dans les choses trop complexes comme les signaux pwm etcetc...

merci d'avance pour vos réponses.

Bonne journée.

Nathan

Bonjour, ton post est marrant ^^ enfin surtout les dernières lignes qui dise :

Nayant jamais utilisé ma nano autrement que connectée au PC, quelqu'un aurait-il des explications claires, précises et si possible avec des exemples ou liens, sans partir dans les choses trop complexes comme les signaux pwm etcetc...

malheureusement tu commence à vouloir des chose un peut trop compliquer pour que nos explication reste basic xD

Alors pour ton projet tu aura forcément besoin d'une batterie pour que ton nono fonctionne dans l'avion.
Après tu aura besoin d'un système de communication distant ( radio je suppose ) de préférence le même que celui de ta télécommande sinon tu la dans le baba :expressionless:
Après essayer de comprendre les messages de ta télécommande pour les interpréter
Puis après tu sera bon pour bidouiller normalement :slight_smile:

Skizo !

Sujet très proche en cours : Arduino et les récepteurs RC, PWM - Français - Arduino Forum

Hey !

Çà ne traine pas sur ce forum!!

Alors pour te répondre,

la batterie=> check! (j'utiliserais l'alimentation générale de mon avion. C'est un accus LiPo de 11,1V mais je lui rajouterais un régulateur de tension 5V pour alimenter la nano.
Com => Check (j'ai bien sur le récepteur dans mon avion. donc je voudrais utiliser une voie libre pour piloter mes led par exemple). Je peux assigner un interrupteur à n'importe quelle voie de mon récepteur.
Pour ce qui est du signal, je connais bien sur la méthode de "com" entre ma Tx et ma Rx ; PWM; mais ce qui me bloque c'est le câblage de ma voie libre sur la carte et de dire dans mon programme
" Si interrupteur position 0 faire cycle 0, si position 2 faire cycle 2 et si position 3 faire cycle 3 "

En espérant être un poil plus clair...

Nathan

Ouiiii bien plus ^^

Alors tu est déjà bien avancé finalement :slight_smile:

Si tu à une vois de libre sur le module de com de ton avion ( je suppose rx tx ) tu prend le rx de l'avion tu le mets sur le rx du nono ( regarde sur les plant en général tu à 2 port série ) après tu viens faire de la lecture série sur ton entré ( serial initialisé sur la bonne pin bien sur ):

data = Serial.read();

après tu affiche ton data sur un port série pour commencer tu regarde ce que dise tes boutons, tu note et tu retransmet:

switch (data) {

case "ordre1" :
allumer tel led
break;

case "ordre2" :
allumer tel led
break;
}

et le tour est joué :slight_smile:

Skizo !

Je ne veux pas croire une seule seconde que ce soit si simple que celà ?!?!?!
C'est tout??

Bon, une question tout de même...
Imaginons que je veuille utiliser la voie 3 de on récepteur.
Cette voies à trois fils

-Noir = masse
-Rouge = +5v
-Orange = signal

Où dois-je brancher (sur ma nano) ces trois fils?
Puis-je utiliser le +5V de mon récepteur afin d'alimenter la nano?

Je note de plus dans ton code la mention "break"

Est-ce elle qui permet de mettre le programme en "pause" jusqu'à avoir un ordre suivant?
Car en ce moment je programme tout en loop don ma led clignotte jusqu'à ce que je change de prog ou désalimente ma carte.
Si je souhaite faire clignoter 10X par exemple, j'incrémente une variable à chaque fin de programme et j'ajoute donc une condition "si variable x = 10 alors break ?

j'ai juste où je suis entrain de me perdre??

nathanmalo:
Je ne veux pas croire une seule seconde que ce soit si simple que celà ?!?!?!
C'est tout??

Bon, une question tout de même...
Imaginons que je veuille utiliser la voie 3 de on récepteur.
Cette voies à trois fils

-Noir = masse
-Rouge = +5v
-Orange = signal

Bonjour
je crois que là skyzoh est un peu trop enthousiaste là :grin:

dans ton cas il faut interpreter la sortie (3) servo de ton recepteur par l'arduino
ça ne consiste "qu'à" acquérir la durée des créneaux au standard modelisme (entre 1 et 2 ms neutre à 1.5 ms)
le plus simple dans un premier temps est d'utiliser la fonction pulsin()

surement une bonne base de depart ici
https://www.sparkfun.com/tutorials/348

Oui ,tu pourra utilisait ton recepteur comme d'une alimentation externe

Tu peux alimenter ton arduino en 2S-4S Lipo par les voies VIN = vcc de 6-20v

Ou en 5v grace a un ubec ,recepteur,et tout ce qui est en 5v sur la voie 5v

Merci pour toutes ces réponses.
d’après ce schéma, si je comprends bien je peux aussi brancher 6 servos par exemples en utilisant les 6 sorties PWM c'est bien ca?
(sorties 3.5.6.9.10.11)

Pour mon récepteur, je branche le fil rouge sur borne 27, le noir sur la borne 29 et le fil de signal sur TX c'est bien ca?

ahhhhh, excusez moi, je croyais qu'il avait un RX TX sur son engin du coup simple à récupéré ^^ et le break ne mets pas le programme en pause il sort juste du switch, mais ne cherche pas à mètre ton programme en pause il continuera de tourner à l'infini seulement, si il y à rien à faire, il ne fera rien d'autre que ce demander si il y de nouvelle chose à faire, ennuyeux? oui mais c'est son problème xD

oui c'est sa ,tu a tout compris ,mais pour ne pas utiliser les voies digital ,tu peux utilisé les voies analog pour ton recepteur

nathanmalo:
Merci pour toutes ces réponses.
d’après ce schéma, si je comprends bien je peux aussi brancher 6 servos par exemples en utilisant les 6 sorties PWM c'est bien ca?
(sorties 3.5.6.9.10.11)

Pour mon récepteur, je branche le fil rouge sur borne 27, le noir sur la borne 29 et le fil de signal sur TX c'est bien ca?

bonjour
je pense qu'il y a là besoin de recentrer/reexposer ton probleme
c'est peut etre aussi moi qui ai mal compris ton besoin

Ce que j'ai compris :
Tu veux utiliser l'arduino derriere le recepteur RC (une ou plusiurs voies) en lui faisant faire "des choses" (gestion led) comme si il s'agissait d'un servo ?
si c'est le cas et sauf a avoir loupé un truc, ce qu'il faut que tu "recupere" c'est le signal servo issue de la de voie(x) recepteur et ça ça n'a rien à voir avec le signal TX de l'arduino.
le but du jeu là c'est d'abord de recuperer la durée d'un/des creneaux "servo" : durée entre 1 et 2 ms (pour un taux de 0/100% ) avec une récurrence de 20 ms issue des voies recepteurs pour ensuite decider ce que l'arduino doit en faire.

Ok, je me ré-exprime...

Imaginons que j'ai cette liste d'éléments:

1 radiocommande 8 voies
1 récepteur 8 voies
1 carte arduino nano
2 servos

et qu'avec tout cela je souhaite faire ceci:

Utiliser un inter 3 position de la radio (Switch) avec (POS1 , POS2, POS3) afin de faire un cycle du genre:

si POS1 => servo 1 à gauche, servo 2 à gauche
Si POS2 => servo 1 gauche, servo 2 droite
Si POS3 => servo 1 et 2 à droite

Où j'en suis:

J'arrive à piloter un servo sur ma arduino en ayant pris sur les exemples du logiciel arduino
J'arrive aussi à piloter des led

Mais, je n'ai jamais utilisé ma nano autrement que connectée au PC

Et je voudrais donc savoir:
Comment brancher mon récepteur (une voie du récepteur) à la nano afin d'y récupérer le signal et de pouvoir gérer mes différents programmes suivant la position de l'inter.

Je pense avoir été plus clair cette fois ci.... mais sait-ons jamais, si il y a encore des choses pas claires, dites le moi...

en attendant, merci de votre aide!

nathanmalo:
Ok, je me ré-exprime...

Imaginons que j'ai cette liste d'éléments:

1 radiocommande 8 voies
1 récepteur 8 voies
1 carte arduino nano
2 servos

et qu'avec tout cela je souhaite faire ceci:

Utiliser un inter 3 position de la radio (Switch) avec (POS1 , POS2, POS3) afin de faire un cycle du genre:

si POS1 => servo 1 à gauche, servo 2 à gauche
Si POS2 => servo 1 gauche, servo 2 droite
Si POS3 => servo 1 et 2 à droite

Où j'en suis:

J'arrive à piloter un servo sur ma arduino en ayant pris sur les exemples du logiciel arduino
J'arrive aussi à piloter des led

Mais, je n'ai jamais utilisé ma nano autrement que connectée au PC

Et je voudrais donc savoir:
Comment brancher mon récepteur (une voie du récepteur) à la nano afin d'y récupérer le signal et de pouvoir gérer mes différents programmes suivant la position de l'inter.

Je pense avoir été plus clair cette fois ci.... mais sait-ons jamais, si il y a encore des choses pas claires, dites le moi...

hé bien voilà, là c'est déjà plus clair :grin:

je resume pour "que l'on soit bien d'accord" :grin:

tu veux assigner des mouvements/positions à 2 servos en fonction de la position d'un commutateur 3 positions de l'emetteur : ce qui In fine se resume à recuperer sur une voie radio les valeurs extrêmes et centre d'un signal servo ?

pour que l'on soit toujours et encore bien d'accord 8)
ces 2 servos seront toujours commandé par l'arduino et en aucun cas par le recepteur lui meme = en gros tu veux automatiser par une voie RC le comportement de ces 2 servos ?

si oui et rapidement ça se resume(rait) à ça ?

recepteur RC voie(X) signal servo RC ----> entrée arduino ----> analyse du signal RC (valeur 0/100% ) ------> [DECISION] ----> generation de 2 signaux RC -----> 2 sorties arduino sortant du signal compatible servo RC ?

Yep!! Je valide à 100% c'est exactement celà!

Je me suis amusé à faire deux petits codes, je les posteraient demain.

Le 1er me servirais à connaitre les valeurs des point 0 ; 50 ; 100% de mon inter
et l'autre à faire un semblant de prog.

J'aimerais bien que quelqu'un y jette un oeil pour me dire si je me plante complètement ou si ca pourrais marcher...

mais ce que tu à résumé est exactement ce que je veux!

Alors, comme promis, voilà les deux codes que j'ai fait hier soir.


/*

# NM55 #
Programme permettant de lire la valeur
d'une sortie PWM d'une voie de recepteur
branchée à une carte arduino

*/


// DECLARATION DE VARIABLES //
int CH1; // Déclaration de CH1 en tant que variable


// INITIALISATION //
void setup() {
pinMode(5, INPUT); // Déclare la broche n°5 en tant qu'entrée
Serial.begin(9600); // Ouvre le port série et fixe le debit de communication à 9600 bauds
}


// PROGRAMME //
void loop() {
CH1 = pulseIn(5, HIGH, 25000); // Met la durée de l'impulsion de niveau HAUT dans la variable CH1
Serial.print("Voie 1:"); // Affiche "Voie 1:" sur le moniteur serie
Serial.println(CH1); // Affiche la valeur de la variable CH1
delay(100); // Délai de 100ms avant prise de mesure suivante
}

/*

# NML55 #
Piloter deux servos depuis une télécommande
8 voies de modélisme, en utilisant un switch 
à 3 positions.

*/


// DECLARATION DE VARIABLES //
int CH1; // Déclaration de CH1 en tant que variable


// INITIALISATION //
void setup() {
pinMode(5, INPUT); // Déclare la broche n°5 en tant qu'entrée
Serial.begin(9600); // Ouvre le port série et fixe le debit de communication à 9600 bauds
}


// PROGRAMME //
void loop() {

CH1 = pulseIn(5, HIGH, 25000); // Met la durée de l'impulsion de niveau HAUT dans la variable CH1
if(CH1>1600){Action_1;} // Si valeur CH1 > 1600, lancer action 1 (à définire)
if(CH1<1400){Action_2;} // Si valeur CH1 < 1400, lancer action 2 (à définire)
if(CH1>=1400 || CH1<=1600){Action_3;} // Si valeur différente des deux autres cas, lancer action 3 (à définire)

delay(100);// Délai 100ms avant nouvelle vérification de condition
}

En compilant, je n'ai pas d'erreurs, sauf bien-sur, "Action_1 , 2 et 3 qui ne sont pas reconnues)
Mais j'aimerais bien avoir vos remarques, sur syntaxe, problèmes divers etc histoire de voire si je part sur un bon chemin...

Bonne journée
Nathan

Bonne soirée.

Nathan

Edite ton message et mets le entre les balises "code" avec le bouton # !

nathanmalo:
Alors, comme promis, voilà les deux codes que j'ai fait hier soir.

En compilant, je n'ai pas d'erreurs, sauf bien-sur, "Action_1 , 2 et 3 qui ne sont pas reconnues)
Mais j'aimerais bien avoir vos remarques, sur syntaxe, problèmes divers etc histoire de voire si je part sur un bon chemin...

bonjour
Comme signalé par JF mets ton code entre balise c'est plus lisible
sinon le premier code va te permettre déjà de voir si tu recupere bien des infos servo coherentes sur l'arduino,
ensuite le choix de la meilleure methode pour action n'est peut etre pas celle utilisant des instructions delay, mais ça aura au moins le merite de valider l'acquisition.

c'est fait ! XD

nathanmalo:
c'est fait ! XD

:grin:
c'est fait oui, mais c'est fait quoi ?
la mise entre balise du code ou en plus le code fonctionnel/oprationnel comme tu le souhaitais ? :grin: