Show Posts
Pages: [1] 2 3
1  International / Français / Re: #Include... on: December 07, 2012, 02:38:25 pm
Wahoo...   smiley-lol

Merci pour ces précieux, clairs et concis éclaircissements qui ...assombrissent un peu le code   smiley

Le C/C++ est assez formidable par sa clarté/compacité mais... que de détails à gérer... et puis ce sont de "trucs" qui ne s'inventent pas... on le sait... ou pas !!

Quoiqu'il en soit barbudor, un grand merci   smiley-wink
2  International / Français / Re: #Include... on: December 06, 2012, 04:15:21 pm
Voici une solution qui fonctionne...

Timer1DansUnInclude
Code:
#include "TimerOne.h"
#include "Tim.h"

void setup()
{
  pinMode(13, OUTPUT);
  initA();
}
 
void loop() {}

tim.h :
Code:
#ifndef Tim_h
#define Tim_h

#include "Arduino.h"
#include "TimerOne.h"

//boolean hool; //                <<< NOTEZ QUE LA DECLARATION ICI NE FONCTIONNE PAS !
//                                    MAIS PROVOQUE : ' multiple definition of `hool ' !!?

//void Bascule(); // pas besoin.
void initA();

#endif

tim.cpp :
Code:
#include "tim.h"

boolean hool; //                 <<< BIZAREMENT LA DECLARATION DOIT ETRE ICI !!

void Bascule()
{
  digitalWrite(13, hool);
  hool = !hool;
}
void initA()
{
  Timer1.initialize(500000);  
  Timer1.attachInterrupt(Bascule);
}


Le problème original étant "réglé",... à la barbare soit mais bon ...  Pourquoi la déclaration de hool dans le header ne fonctionne pas ?
3  International / Français / Re: #Include... on: December 06, 2012, 03:30:37 pm
Si tu veux plus de rigueur et un environnement traditionnel de développeur, tu prends AVRstudio.
Il faut ajouter quelques passerelles, recompiler le core-Arduino pour en faire une vrai lib et puis ca marche.


Cela me parait bien au dessus de mes compétences mais je chercherai.
Je te remercie beaucoup pour tes réponses barbudor... faut que j'arrête avec le majuscules moi  smiley-grin
4  International / Français / Re: #Include... on: December 06, 2012, 03:06:31 pm
Ta réponse a inspiré un essai positif, BarbuDOr,...

Je vais vérifier mais en re-déclarant dans Main : #include "TimerOne.h"
Je n'ai plus d'erreur... Je confirmerai plus tard.

5  International / Français / Re: #Include... on: December 06, 2012, 02:40:52 pm
Je te crois sur parole mais je dois ajouter un argument qui ne va pas dans ce sens...

Le code en exemple est une simplification de mon problème. Dans mon problème réel, j'ai quelque chose comme ça :
String.h et Arduino.h sont appelées d'un ... je ne sais pas comment cela s'appelle en C... une "Unité" en Delphi... d'un .h nommé "def_code.h" (cf. la photo de la structure du programme) qui est situé tout en haut de la structure. Malgré cela... le tout fonctionne bien. Est-ce parceque TimerOne declare une classe...?

Code de TimerOne :

Code:
#ifndef TIMERONE_h
#define TIMERONE_h

#include <avr/io.h>
#include <avr/interrupt.h>

#define RESOLUTION 65536    // Timer1 is 16 bit

class TimerOne
{
  public:
  
    // properties
    unsigned int pwmPeriod;
    unsigned char clockSelectBits;
char oldSREG; // To hold Status Register while ints disabled

    // methods
    void initialize(long microseconds=1000000);
    void start();
    void stop();
    void restart();
void resume();
unsigned long read();
    void pwm(char pin, int duty, long microseconds=-1);
    void disablePwm(char pin);
    void attachInterrupt(void (*isr)(), long microseconds=-1);
    void detachInterrupt();
    void setPeriod(long microseconds);
    void setPwmDuty(char pin, int duty);
    void (*isrCallback)();
};

extern TimerOne Timer1;
#endif
6  International / Français / Re: #Include... on: December 06, 2012, 01:15:39 pm
Merci pour ta réponse BarbuDOr   smiley

Effectivement,... d'ailleurs, je viens de corriger le post en intégrant les erreurs transmises par le compilateur.
L'erreur "principale" retenue  est
'Timer1' n'a pas été déclaré dans cette portée

L'analyse par l'Arduino pré-prcesseur, dans ce cas est mal faite car le principe est on ne peut plus simple et le code semble correct tellement le changement est faible.
7  International / Français / >> RESOLU << #Include... on: December 06, 2012, 01:04:33 pm
Bonjour à tous,    smiley

Sauf erreur, quand un programme utilise un .h avec la directive de compilation #include x.h, il peut utiliser les fonctions et variables déclarées dans ce .h et le cas échéant developpées dans le .cpp connexe.
J'essaye d'utiliser la bibliothèque TimerOne.h depuis un .h mais cela ne fonctionne pas alors que si TimerOne.h est inclus dans la Main, cela fonctionne.


Le main (Timer1DansUnInclude)
Code:
//#include "TimerOne.h"
 
#include "Tim.h"
boolean hool;

void setup()
{
  pinMode(13, OUTPUT);
  Timer1.initialize(500000);              <<<<< LIGNE MISE EN SURBRILLANCE PAR LE COMPILATEUR avec le message : " 'Timer1' was not declared in this scope "
  Timer1.attachInterrupt(Bascule);
}
 
void Bascule()
{
  digitalWrite(13, hool);
  hool = !hool;
}
 
void loop()
{}


Tim.h :
Code:
#ifndef Tim_h
#define Tim_h

#include "TimerOne.h"

#endif

Quelqu'un saurait-il pourquoi !?


Le compilateur me répond :
Code:
In file included from Timer1DansUnInclude.cpp:3:
/Tim.h:6:22: error: TimerOne.h: No such file or directory
Timer1DansUnInclude.cpp: In function 'void setup()':
Timer1DansUnInclude:8: error: 'Timer1' was not declared in this scope
8  International / Français / Fonction à nombre variable de paramètres passés par adresse. on: December 05, 2012, 12:42:03 pm
Bonjour à tous,

Démarche inhabituelle s'il en est, j'apporte un code qui fonctionne et sauff erreur,... ne devrait pas.

J'avais besoin d'une fonction qui charge les variables de type "long" passées en paramètre avec les valeurs d'un tableau. Le nombre de paramètre est variable. Je n'ai rien trouvé de mieux que de passer l'adresse de ces variable.
Là où ça me gêne, c'est que j'ai lu qu'une fonction à nombre variable de paramètres ne peut pas être une fonction dont les paramètres sont passé par adresse, mais par valeur uniquement. Je pense que ma mémoire me joue des tour... !?

Voici la fonction :

Code:
// Fonction à nombre variable de paramètres passés par adresse.
 void ChargementLong ( long *Variable, ... )
{
    int i=1;
    
    long *AdresVariable ; // Valeur du paramètre actuel

    va_list ap;
    va_start(ap, Variable);

    *Variable = atol ( MonTableau [i]);

    do {
      *AdresVariable = atol ( MonTableau [i] );
      AdresVariable = va_arg(ap, long*);
      
      i++;
    } while (AdresVariable != NULL );
    
    va_end(ap);
}

Voici l'appelant :
Code:
   ...
    ChargementLong ( &da, &db, &dc, &dd, NULL );
    ...

Deux questions :
1) Cela est-il... "normal" ?           Auquel cas soit ma mémoire me joue des tours soit l'info lue était au minimum périmée...
2) Quelqu'un aurait-il une solution pour avoir un appelant du genre :
ChargementLong ( da, db, dc, dd, NULL ); // sachant que le nombre de paramètre est variable.

      smiley
9  International / Français / Re: problème de pointeurs on: November 03, 2012, 04:34:41 pm
He bien... génial!! un grand merci pour ces réponses ...constructives... et rapides. Le rôle des hôpitaux n'étant par de se moquer de la charité.
Heu... au passage,... ne tirez par sur le canard bleu, c'est un faux... canard   ...un Appelant() quoi !     smiley
10  International / Français / Re: problème de pointeurs on: November 03, 2012, 04:17:45 pm
Merci pour cette correction fdudnews.

Résultat magnifique de simplicté...

Si je peux abuser smiley   Pourquoi n'y a t-il toujours que deux décimales ?
11  International / Français / Re: problème de pointeurs on: November 03, 2012, 03:47:21 pm
Benh... ce n'est pas grâce à vous lol... c'est sur un autre site que j'ai eu la réponse... elle y est et en plusieurs exemplaires. Je ne regrette pas d'avoir commencé ma recherche sur ce site malgré tout... juste vous.  smiley
12  International / Français / Re: problème de pointeurs on: November 03, 2012, 03:32:14 pm
 smiley-lol
Avec une avancée aussi spectaculaire, c'est ce que j'ai fini par faire... Comme dans X-Files... la réponse est ailleurs... lol
13  International / Français / Re: problème de pointeurs on: November 03, 2012, 02:42:50 pm
Voilà,... j'ai modifié l'exemple pour que vous le compreniez. Cf."..." et "...".

{
      ...
      Liste [1] =  "AZE123.45678";
      float NombreFlottant = Str2F ( Liste[1] );
      ...
}

Me dire avec quoi je ne dois pas "m'embrouiller la tête" ne fera pas avancer la bête.
Je demande de l'aide et votre aide ne me suffit pas, visiblement. Je pense que ce n'est pas difficile à comprendre. Soit vous continuez sur cette voie et me faite perdre mon temps soit vous devenez plus créatif et me guidez un peu plus sur ce que je ne vois pas et que peut-être, vous ne voyez pas non plus.
Dois-je ré-inventer le fil à couper le beurre ou existe t'il une fonction ?
Le basic le fait depuis 35 ans, le Pascal depuis je ne sais plus... Delphi pareil. Si je demandais comment assigner une chaine à une autre, sans doute me diriez vous chaine1 = chaine2 est la solution. Quel est le problème ici ?
14  International / Français / Re: problème de pointeurs on: November 03, 2012, 02:06:01 pm
...Je débute en C.

Ce n'est pas parce qu'on débute en C qu'on débute en tout !
Quand j'ai à faire à quelqu'un qui me dit avoir un problème, je l'aiguille au minimum. et quand je dis un minimum c'est très au dessus de votre maximum !

Comme déjà dit, je cherche un début de solution et pas qu'on me renvoie dans mes quarante mètres.
15  International / Français / Re: problème de pointeurs on: November 03, 2012, 01:42:12 pm
Voilà qui est très positif !
Je pense que quand on a rien à dire,...  smiley-zipper

      
Je crois qu'il faut que tu reprennes un cours de C au début, et surtout que tu ne mélanges pas avec C++, en utilisant pas la classe String.

C'est un début de solution que je cherche pas une polémique.

Quote
Dis moi ce dont tu as besoin,... je te dirai comment t'en passer !

Ce petite fonction va s'insérer dans un programme de plusieurs centaine de lignes et qui fonctionne en grande partie. Tout modifier sous prétexte que personne n'a une solution est... excessif.
Pages: [1] 2 3