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...
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
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
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 "
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:
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 ?
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à
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()
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
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.
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...
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
je resume pour "que l'on soit bien d'accord"
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 ?
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...
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.