Show Posts
Pages: [1] 2 3 4
1  International / Français / Re: if ( i++ ne fonctionne pas !! on: June 11, 2014, 07:07:09 am
Cela fait partie des "détails" énervants du si concis C.   smiley-roll-blue    smiley-zipper
Ca fonctionne.

Merci Xavier,
Merci à tous.
2  International / Français / Re: if ( i++ ne fonctionne pas !! on: June 11, 2014, 06:08:23 am
Merci pour votre réactivité  smiley-wink

Il est clair qu'il semble que cela ne fonctionne pas,... cependant,... une recherche Google ou autre MDR sur
 "  arduino "if(i++"  " fournit un tas d'exemples semblant fonctionner...
3  International / Français / >> Résolu << : if ( i++ ne fonctionne pas !! on: June 11, 2014, 05:05:53 am
Bonjour à tous,

N'ayant pas trouvé de sujet connexe par le moteur de recherche,... j'ouvre un topic.
Le problème est tellement ...inatendu que je soupsonne avoir commis une erreur mais... je ne vois pas où !

Voici les faits :

Ceci ne fonctionne pas:
Code:
if(PasPrg++ >= NbPasPrg) PasPrg = 0;

Ceci fonctionne :
Code:
PasPrg++;
if(PasPrg >= NbPasPrg) PasPrg = 0;

La différence se constate sur la globalité du programme... l'appareil ne fonctionne pas avec le premier code et fonctionne avec le second.
L'EDI est la version 1.0.5 envoyé sur UNO.

4  Using Arduino / General Electronics / Re: Volatge protection for 3.3V device. on: June 11, 2014, 04:38:26 am
For information ... for all practical purposes...

http://forum.arduino.cc/index.php?topic=125710.0

The same post in English at        http://arduino.cc/forum/index.php/topic,125973.new.html#new

 smiley-wink
5  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
6  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 ?
7  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
8  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.

9  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
10  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.
11  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
12  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
13  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
14  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 ?
15  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
Pages: [1] 2 3 4