Show Posts
Pages: 1 ... 3 4 [5] 6 7 ... 242
61  International / Français / Re: Arduino DUE et librairie DmxSimple on: September 02, 2014, 10:08:38 am
Il existe déjà une librairie qui s'appuie sur l'UART matérielle des ATmega: http://www.mathertel.de/Arduino/DMXSerial.aspx
62  International / Français / Re: Arduino DUE et librairie DmxSimple on: September 02, 2014, 09:25:50 am
J'ai regardé vite fait la librairie DMX et si j'ai bien compris le principe du DMX, pour moi cette librairie est inutile en l'état pour la DUE.
Elle utilise un timer parce qu'elle fait une UART soft. La DUE possédant 4 ports série il n'y a aucun intérêt à utiliser une UART soft. Il suffirait d'utiliser l'un des ports série en le configurant à 250kbauds, 8bits, 2 bits de stop, pas de parité pour établir une communication sur le bus DMX. Le seul truc à faire "à la main" serait la gestion du début de trame DMX soit un break + un petit délai.

S'il y a des pro du DMX pour me corriger ?
63  International / Français / 3 broches, 3 boutons, 3 LEDs on: September 02, 2014, 07:46:12 am
Un petit montage qui pourrait intéresser ceux qui se trouvent à court de broches sur leur Arduino.
Le montage utilise la technique du charlieplexing à une combinaison de LED et de poussoirs.
http://edn.com/design/systems-design/4433477/3-pins--3-LEDs--3-buttons
64  International / Français / Re: Utilisation d'un capteur inductif NPN on: September 02, 2014, 05:33:17 am
Quel capteur, comment il est monté et dans quel contexte parce que là on a quelques difficultés à comprendre.
65  International / Français / Re: LIBRAIRIE GLCD on: September 02, 2014, 04:09:11 am
Quelle version de la librairie utilises-tu (numéro de version défini dans glcd.h et dans glcd_Buildinfo.h)?

Quote
#define GLCD_VERSION 3 // software version of this library
#define GLCD_GLCDLIB_DATESTR   "Mon Dec  5 01:50:07 CST 2011"
#define GLCD_GLCDLIB_BUILDSTR   "442"
Je viens de recharger la librairie et j'ai trouvé des différences avec celle que j'ai chez moi. Il me semble que les fichiers de configuration sont organisés différemment.

Dans la doc il est suggéré de lancer le sketch GLCDDiags qui affiche dans le terminal des informations sur la configuration de la librairie et qui peut aider à trouver les problèmes.

A noter, le développement de GLCD est abandonné. Cette librairie est remplacée par openLCD du même développeur.
66  International / Français / Re: Problèmes d'encodeur EC11 on: September 02, 2014, 02:16:44 am
J'en déduis que le montage Fritzing du circuit sur la planche d'expérimentation correspond bien au schéma électrique de mon second message ?
Pour le montage je ne peux pas me prononcer je n'utilise pas Fritzing.
Personnellement, je ne suis pas très fan de cet outil et je préfère travailler avec une saisie de schéma. Question d'habitude.
Une copie d'écran de Fritzing permettrait déjà à tous de voir le montage.

Je vais applique le plus possible vos recommandations, mais pour ce qui est des interruptions, je n'y connais rien. Auriez-vous une référence (lien Internet) francophone avec des exemples de code source Arduino pour que je m'y initie ?
On peut ne câbler qu'une des 2 broches de l'encodeur sur une entrée d'interruption. Il y a évidemment une résolution moindre. Est-ce un problème?
Pour la référence, personnellement, je me base sur le playground Arduino. Mais il n'est pas ne français cependant l'utilisation de Google translate permet de comprendre les explications.
67  International / Français / Re: LIBRAIRIE GLCD on: September 01, 2014, 09:33:42 am
T'es-tu assuré que l'afficheur fonctionne avec le fichier de configuration original (ks0108_Arduino.h) et le brochage d'origine?
68  International / Français / Re: Télémétrie sur quad 350 Banshee à l'aide d'arduino on: September 01, 2014, 09:30:56 am
Comme je l'ai dit plus haut, le problème des fourches optiques c'est qu'elle ne sont pas du tout copines avec la poussière et la boue. Donc tu risques de perdre assez rapidement l'information de vitesse.
69  International / Français / Re: Problèmes d'encodeur EC11 on: September 01, 2014, 06:02:26 am
Les encodeurs sont gérés par polling alors que la boucle principale est quand même relativement chargée avec la gestion de l'affichage. Donc il est fort probable que tu rates des événements de temps en temps et que du coup ta fonction n'échantillonne pas les entrées au bon moment faisant croire à un changement du sens de rotation.
Je pense qu'il faudrait sérieusement envisager une gestion par interruption. Il y a 6 interruptions disponibles sur la 2560.
Dans les portions critiques de code, essaies aussi de remplacer les digitalRead() par leur équivalent de la librairie digitalWriteFast. Cette librairie permet des accès directs au port au lieu de la "cuisine" assez lourde qui se cache derrière les fonctions standards de la librairie Arduino.

Autrement, ton code est volumineux et très dense ce qui le rend difficile à lire. Il gagnerait à être découpé en modules. En particulier, la fonction RecevoirDonneesX_Plane qui fait près de 1000 lignes. Il y a par exemple un bloc de lignes, utilisé pour la mise en forme de l'affichage des nombres, qui se répète de nombreuse fois. Ce serait facile d'en faire une fonction.

A de nombreux endroit, tu utilises des flottants pour coder des états discrets que tu identifies ensuite par des tests d'égalité strictes.
Comme cette partie de code par exemple:
Code:
        Autopilot_Modes_Altitude_Valeur = TemponComUDP.ValeurFormat1Float;
        if (Autopilot_Modes_Altitude_Ancien != Autopilot_Modes_Altitude_Valeur)
        {
          Autopilot_Modes_Altitude_Ancien = Autopilot_Modes_Altitude_Valeur;
          LCD_2.setCursor (18, 2);
          if (Autopilot_Modes_Altitude_Valeur == 0.0)
          {
            LCD_2.print ("O");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 1.0)
          {
            LCD_2.print ("F");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 2.0)
          {
            LCD_2.print ("/");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 3.0)
Cela pose 2 problèmes:
  • la gestion des flottants est très coûteuse en temps CPU sur une cible 8 bits comme la famille ATmega
  • les tests d'égalité stricte sur les flottants ne fonctionnent pas toujours bien du fait que l'encodage des flottants donne des fois des résultats du style 1.999999 au lieu du 2.0 attendu
Pour simplifier ton code et gagner du temps tu devrais peut être faire ça:
Passer la variable Autopilot_Modes_Altitude_Valeur  en byte et ensuite
Code:
        Autopilot_Modes_Altitude_Valeur = (byte) TemponComUDP.ValeurFormat1Float;  // il y a peut être une méthode plus adaptée ici
        if (Autopilot_Modes_Altitude_Ancien != Autopilot_Modes_Altitude_Valeur)
        {
          Autopilot_Modes_Altitude_Ancien = Autopilot_Modes_Altitude_Valeur;
          LCD_2.setCursor (18, 2);
          if (Autopilot_Modes_Altitude_Valeur == 0)
          {
            LCD_2.print ("O");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 1)
          {
            LCD_2.print ("F");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 2)
          {
            LCD_2.print ("/");
          }
          else if (Autopilot_Modes_Altitude_Valeur == 3)
voir même simplifier encore un peu plus en remplaçant la suite de if par un switch... case.
70  International / Français / Re: Lecture quadrature encoder on: September 01, 2014, 03:36:48 am
La DUE peut accepter des interruptions sur toutes ses broches d'après  la doc de réference. Du coup je pense que tu dois pouvoir utiliser le code dans le lien que tu as donné dans ton premier post (voir Interrupt Example (the Encoder interrupts the processor). Uses both Interrupt pins).
71  International / Français / Re: Schéma électronique on: September 01, 2014, 01:40:57 am
K1 est un relais. La partie gauche (le rectangle barré d'un trait) symbolise la bobine, la partie droite c'est les contacts.
D1 n'est pas une diode LED. C'est une diode classique (1A, 400V) utilisée pour absorber la tension généré lors de la désactivation du relais et ainsi protéger le transistor.
72  International / Français / Re: LIBRAIRIE GLCD on: September 01, 2014, 01:33:42 am
Dans le répertoire config, tu fais une copie  du fichier qui correspond à ton afficheur en lui donnant un autre nom.
Tu l'édites pour modifier le brochage.
Tu édites glcd_Config.h et tu mets le nom du nouveau fichier à utiliser.

Les fichiers contiennent de nombreux commentaires et  il ne sont pas compliqués à comprendre.
73  International / Français / Re: Ce cybot ne veut pas transférer les données par ordinateur! on: September 01, 2014, 01:26:19 am
Cybot n'a pas grand chose à voir avec la plateforme Arduino.
Tu vas avoir du mal à trouver de l'aide.

Il y a ce lien sur la partie internationale: http://forum.arduino.cc/index.php/topic,64409.0.html
A la fin un intervenant explique comment télécharger sous windows 7
74  International / Français / Re: Lecture quadrature encoder on: August 31, 2014, 12:20:45 pm
Peut être des choses par là (je n'ai pas eu trop le temps de regarder en profondeur):
http://forum.arduino.cc/index.php?topic=143478.0
http://forum.arduino.cc/index.php?topic=140205.0
http://forum.arduino.cc/index.php?topic=137051.0
75  International / Français / Re: LIBRAIRIE GLCD on: August 31, 2014, 12:18:01 pm
A priori il suffit de créer un fichier décrivant la configuration dans le sous-répertoire config de la librairie.
Ensuite tu indiques dans le fichier glcd_Config.h le nom du fichier de configuration utilisé par la librairie.
Pages: 1 ... 3 4 [5] 6 7 ... 242