Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Thierry

Pages: 1 ... 41 42 [43] 44 45
631
Trucs & astuces / Re : Techniques de mise au point
« le: novembre 10, 2015, 12:09:10 pm »
On ne peut pas vraiment dire que c'est plus simple... C'est juste autre chose.

Le but de ce type d'émulation est de parvenir à compiler le fichier .ino, en faisant en sorte que les entrées et sorties soient gérées par d'autres que par l'Arduino. Il y a plusieurs problématiques :

1 Arriver à compiler
  Le source .ino suppose la présence de fichiers include comme Arduino.h, serial.h et d'autres qu'il faut reproduire localement. C'est par exemple mon bout de code comme tu dis. Ensuite, et comme tout ne sera pas parfaitement identique, il faut pouvoir délimiter les zones à compiler dans le cas "émulation", et celles à compiler dans le cas "production". C'est l'utilisation des defines du C VISUALSTUDIO pour moi ou PC pour Marc-Henri.

2 Emulation des boutons
  Quoi de mieux que le clavier et la souris pour évoquer des boutons ou des potars. L'émulation passe par un retour d'événements selon la touche frappée... C'est plus simple dans mon cas puisque j'ai ajouté une classe ButtonCommanderKeyboard à ma librairie, qui n'existe que pendant la compilation VisualStudio !

3 Emulation des sorties
  A vrai dire, ce n'est pas vraiment nécessaire. Du temps de la mise au point de UAD, je n'avais pas pris la peine d'émuler quoi que ce soit. Se mettre dans une situation donnée et regarder le comportement sous debuggeur pour comprendre ce qui se passe est déjà en soi un grand pas en avant... Par contre pour LcdUi qui me permet de créer une interface utilisateur sur un écran Lcd, j'ai vraiment émulé cet écran avec une fenêtre windows (voir image plus haut) et j'en ai profité pour ajouter une console série qui réagit aux ordres de Serial.print !

Tout ça suppose que tu te trouve un environnement de travail comme un Gcc, un Eclipse ou Visual Studio Community gratuit sous Windows, et que tu te codes ce dont je viens de parler. Evidemment on est disposés à t'aider dans cette démarche...

632
Trucs & astuces / Re : Techniques de mise au point
« le: novembre 04, 2015, 10:24:25 am »
A vrai dire, j'ai aussi un truc similaire. Je suis un utilisateur historique de Visual Studio, c'est pourquoi dans mes zip de bibliothèque il y a toujours un répertoire VStudio avec un fichier 'solution' qui permet de déboguer un programme ino. Pour arriver au bout de cette possibilité, j'ai dû créer un arduino.h dédié.

//-------------------------------------------------------------------
#ifndef __arduino_H__
#define __arduino_H__
//-------------------------------------------------------------------

#define int8_t signed char
#define uint8_t unsigned char
#define uint16_t unsigned int
#define boolean bool
#define byte unsigned char
#define strcpy_P(d, s) strcpy_s(d, this->sizex + 1, s)

#define HIGH 1
#define LOW 0
#define INPUT 1
#define INPUT_PULLUP 3
#define OUTPUT 2
#define DEC 1
#define BIN 2
#define HEX 3
#define NULL 0
#define PROGMEM
#define PGM_P   const char *

#define NUM_DIGITAL_PINS            70
#define NUM_ANALOG_INPUTS           16

#define CHANGE 1
#define FALLING 2
#define RISING 3

#define F(string) string
#define __FlashStringHelper char
#define prog_char char
byte pgm_read_byte(const char *);
int pgm_read_word(const char *);

void pinMode(int, int);
void digitalWrite(int, int);
int digitalRead(int);
void analogWrite(int, int);
int analogRead(int);
unsigned long millis();
unsigned long micros();
void delay(int);

int map(int, int, int, int, int);

void noInterrupts();
void interrupts();
void attachInterrupt(uint8_t, void(*)(void), int mode);
void detachInterrupt(uint8_t);

int freeMemory();

double power(double val, int exp);

//-------------------------------------------------------------------
#endif
//-------------------------------------------------------------------

Il me permet dans le pire des cas de ne rien faire, ou au mieux de faire semblant... Il y a aussi d'autres include comme serial.h ou LiquidCrystalFast.h ...

Pour LcdUi, et DcDcc qui l'utilise, j'ai créé un 'émulateur' d'Arduino, qui va afficher un écran Lcd texte jusqu'à quatre lignes et une console série (les Serial.print() vont dedans...):


C'est tellement plus pratique de tester l'interface utilisateur sur un vrai écran, avec des touches clavier pour faire semblant de manipuler l'encodeur ou les boutons...

Il  y a aussi un define VISUALSTUDIO pour conditionner certaines lignes de code...

633
Trucs & astuces / Re : Techniques de mise au point
« le: octobre 27, 2015, 05:55:39 pm »
C'est pas bête du tout.

Pour ma part j'utilise un #define DEBUG_MODE dans mes bibliothèques. S'il est actif (c'est livré commenté, donc inactif, dans le .h principal de la librairie) des tests sont effectués sur les arguments de fonctions (index hors limites, valeurs impossibles, choses non allouées...) et les messages d'erreur correspondants sont affichés sur la console série. Il y a aussi des messages d'information signalant l'utilisateur de ce qui se passe : utilisation d'un bouton, réception d'un code DCC, demande de mouvement d'un moteur, etc... Et j'en profite pour ajouter un copyright et le numéro de version au tout début du Setup... L'utilisation du #define permet de ne pas prendre de mémoire et de temps supplémentaire d'exécution en version 'production'.

634
C'est une bonne idée, et une extension possible pour UAD. Lorsque ça marchera et si tu le permet, je verrai pour l'inclure dans la librairie !

635
Présentez vous ! / Re : Salut à Tous
« le: septembre 25, 2015, 09:52:45 pm »
Bienvenue chez nous, et heureux que UAD ai pu te rendre service !

636
Vos projets / Re : Projet servo-aiguille
« le: septembre 21, 2015, 04:51:06 pm »
C'est aussi ce qu'il m'a semblé.

637
Vos projets / Re : Projet servo-aiguille
« le: septembre 21, 2015, 03:24:44 pm »
Je ne sais pas pour Mac, mais pour Windows j'ai décompressé le Zip, et lancé le processing.exe qui est dedans. C'est un clone de l'IDE Arduino, et c'est là que j'ai jeté le source de Guillaume.

638
Vos projets / Re : Projet servo-aiguille
« le: septembre 21, 2015, 11:48:06 am »
Ben, pour tester je l'ai juste décompressé sur le fond d'écran  ::) ... Sinon, j'ai un répertoire dédié sur le deuxième disque dur pour installer les applis en tout genre.

639
Vos projets / Re : Projet servo-aiguille
« le: septembre 20, 2015, 07:00:55 pm »
Sur Window 8.1 64 j'ai bien

0 : COM4

qui est connecté à un Mega.

640
Présentez vous ! / Re : Bonjour à tous
« le: septembre 01, 2015, 03:42:15 pm »
Salut Jean-Marie. Bienvenue chez les bidouilleurs.
Tout comme Marc-Henri, je fais de l'informatique à usage industriel (développement d'un logiciel de CFAO), mais je n'y connais pas grand chose en électronique... Et ma centrale Dc/Dcc est presque terminée comme la tienne ! Je vais pas tarder à commencer à en parler via une série d'articles...

641
Bibliothèques / Re : Re : MemoryUsage
« le: août 05, 2015, 03:24:58 pm »
Outre le gain en place mémoire, le remplacement des instructions digitalWrite par les accès aux ports occasionnera un gain de temps: l'accès direct étant environ 10 fois plus rapide que digitalWrite.

Le gain attendu ici est sur la SRAM qui n'est pas beaucoup impactée - voire pas du tout - par le bootloader...
Pour l'accès direct aux ports, que je trouve particulièrement imbuvable, j'utilise une variante personnelle d'un source que j'ai récupéré de CodeProject : Arduino2. Il me permet de bénéficier des avantages (la vitesse) sans les inconvénients (la relecture de code...). Il est disponible dans ma librairie UAD, mais je devrais peut être en faire une vraie bibliothèque.

642
Bibliothèques / Re : MemoryUsage
« le: août 05, 2015, 03:18:33 pm »
Une version V2 vient d'être poussée.
Elle simplifie la compréhension du problème en fournissant plus d'infos et en rationalisant les comportements. Une seconde méthode de mesure dite 'Paint' a été ajoutée, ainsi que le moyen d'afficher toutes les données chiffrées de la SRAM.
Le fichier MemoryUsage.h en particulier a été grandement documenté pour mieux s'y retrouver.

643
Bibliothèques / MemoryUsage
« le: juillet 26, 2015, 05:47:47 pm »
Un problème récurrent, en tout cas dans mes sketchs, est la gestion de la mémoire. Chaque octet coûte cher, et les Arduino sont chiches en SRAM... Alors une nouvelle bibliothèque a été poussée sur Framasoft pour permettre d'afficher localement la taille de la mémoire disponible, et la taille maxi de la pile.

644
Bibliothèques / Re : PWM
« le: juillet 26, 2015, 05:45:38 pm »
Voilà un truc bien pratique ! Je vais pouvoir m'en servir pour ma version Dc de ma centrale mixte Dc/Dcc .

645
Bibliothèques / Re : Bibliothèque LcdUI
« le: juillet 25, 2015, 04:06:45 pm »

Pages: 1 ... 41 42 [43] 44 45