Show Posts
Pages: 1 [2] 3 4 ... 27
16  Using Arduino / Programming Questions / I become creasy on a ")" error on: August 19, 2014, 09:12:53 am
Dear All,

I look on a existing library and I am trying to do the same.
Then my code is similar but when I compile, I can see that error:

Quote
In file included from /Users/pierrot/Documents/Arduino/libraries/Sim908/Sim908.cpp:2:
/Users/pierrot/Documents/Arduino/libraries/Sim908/Sim908.h:17: error: expected `)' before '*' token
/Users/pierrot/Documents/Arduino/libraries/Sim908/Sim908.cpp:4: error: expected `)' before '*' token

I become "creasy" because I lool and looked when a ) is missing and I could not find and undertsand the error.

May I ask to help me?

Here is the code
Code:
Sim908_v6.ino
#include <SoftwareSerial.h>
#include <Sim908.h>

// GENERAK
#define DEBUG
int pinToPowerOnModule = 8;

// LED
int green = 12;
#define MSEC 500
#define MSEC_FAST 150

// SERIAL
int baud_rate = 9600;
#define RXPIN 2
#define TXPIN 3

Sim908 sim908(new SoftwareSerial(RXPIN, TXPIN), baud_rate, pinToPowerOnModule);

void setup()
{
  pinMode(green, OUTPUT);
 
  Serial.begin(9600);

}


void loop()
{
  //sim908.blinkLed(green, 1, MSEC);

}
Here is my Sim908.h file
Code:
/*
  Sim908.h - Library
*/

#ifndef Sim908_h
#define Sim908_h

#include "Arduino.h"


class Sim908{
private:
int _pinToPowerOnModule;
//SoftwareSerial _cell;
Stream* _cell;
public:
Sim908(SoftwareSerial* serial, int baud_rate, int pinToPowerOnModule);

void blinkLed(int lPin, int nBlink, int msec);

};

#endif
and here is the last file, Sim908.cpp (I only copy the code which make problem
Code:
#include "Arduino.h"
#include "Sim908.h"

Sim908::Sim908(SoftwareSerial* serial, int baud_rate, int pinToPowerOnModule)
{
pinMode(pinToPowerOnModule, OUTPUT);
_pinToPowerOnModule = pinToPowerOnModule;
_cell = serial;

};
Where is the problem with a ) ??????

Many thank for your help!!
17  International / Français / Re: Comment créer sa propre librairire en fonction d'une autre on: August 19, 2014, 02:55:17 am
Hello,
Je suis sur OS 10.9
L'IDE est Arduino 1.0.5 . Es-ce qu'il y autre chose de mieux, pour Mac?
Je ne trouve pas Fichier/preference, mais ca c'est peut être parce que je suis sous Mac..

Merci
18  Using Arduino / Programming Questions / Re: Issue with a very simple library on: August 18, 2014, 08:46:29 am
I think my error come from here

previiuos:
Sim908 sim908;

now:
Sim908 sim908();

I added the ().

But why the () make the difference?
It because I add an empty cpnstructor?
Code:
Sim908::Sim908(){
}

I have a case where I do not have (), for exemple
// GPS
GPSGSM gps;


I have abother problem with my function
In my loop() I added this
Code:
void loop()
{
  sim908.blinkLed(green,1,1000);
  delay(3000);
}
That function is deéared in the Sim908.cpp
Code:
void Sim908::blinkLed(int lPin, int nBlink, int msec) {
   if (nBlink) {
     for (int i = 0; i < nBlink; i++) {
       digitalWrite(lPin, HIGH);
       delay(msec);
       digitalWrite(lPin, LOW);
       delay(msec);
     }
   }
 }
and in Sim908.h file
Code:
class Sim908{
public:
Sim908();
void blinkLed(int lPin, int nBlink, int msec);

private:
};
Quote
When I compile my code, the terminal display that error:
sim908_v6.ino: In function 'void loop()':
sim908_v6:30: error: cannot call member function 'void Sim908::blinkLed(int, int, int)' without object
Is a problem of type? I tried several solution but without success. may I ask you an help?
Many thank
19  Using Arduino / Programming Questions / Re: Issue with a very simple library on: August 18, 2014, 06:37:17 am
@pyro_65

Thank for your advise.

I close Arduino IDE, restart the Macbook and reopen my ino file.
The problem is still the same.
I commented the function //sim908.blinkLed(green,1,1000); (because is another error)

and I compiled and got that error:

sim908_v6.cpp.o: In function `__static_initialization_and_destruction_0':
/Applications/sim908.ino:3: undefined reference to `Sim908::Sim908()'

I red your link, but is it the same problem of me? I do not get an error message stating: "...was not declared in this scope".

Iam using the Arduino IDE.
20  Using Arduino / Programming Questions / Re: Issue with a very simple library on: August 18, 2014, 05:07:40 am
I am working with a Mac.
All of the library I am using are in

/Documents/Arduino/libraries/

The simple library I am trying to develop is
/Documents/Arduino/libraries/Sim908

The Sim908_v6.ino is in folder (same level than /libraries/
/Documents/Arduino/
21  Using Arduino / Programming Questions / Re: Issue with a very simple library on: August 18, 2014, 04:29:29 am
Just a simple correction

my library is called Sim908.
It is in folder
/libraries/Sim908/
and the two files are name Sim908.h and Sim908.cpp. Those two files are in folder /libraries/Sim908/

I created a file Sim908_v6.ino and I imported the Sim908 library. I do not think the ino file has to have the same name than the library you want to import otherwise you will not be able to import other libraries...
22  Using Arduino / Programming Questions / Re: Issue with a very simple library on: August 18, 2014, 04:06:54 am
Hello,
Did you try the code,
I rename the file to Sim908 (Ido not think it cause the error) and the probleme is the same.

When I compile, I still get that error message:
Quote
sim908.cpp.o: In function `__static_initialization_and_destruction_0':
/Applications/sim908.ino:3: undefined reference to `Sim908::Sim908()'
sim908.cpp.o: In function `loop':
/Applications/sim908.ino:28: undefined reference to `Sim908::blinkLed(int, int, int)'
(as when thr file were named Sim908_v6.ino)
23  Using Arduino / Programming Questions / Issue with a very simple library on: August 18, 2014, 02:22:39 am
Dear All,

I am a beginer and I am trying to create my first library.

My terminal display that error message:
Quote
sim908_v6.cpp.o: In function `__static_initialization_and_destruction_0':
/Applications/sim908_v6.ino:3: undefined reference to `Sim908::Sim908()'
sim908_v6.cpp.o: In function `loop':
/Applications/sim908_v6.ino:16: undefined reference to `Sim908::blinkLed(int, int, int)'
May I ask you to to help me about that error message?

Here is my code.

First I create two files in
/libraries/Sim908/Sim908.h
Code:
/*
  Sim908.h - Library
*/

#ifndef Sim908_h
#define Sim908_h

#include "Arduino.h"


class Sim908{
public:
Sim908();
void blinkLed(int lPin, int nBlink, int msec);

private:
};

#endif
/libraries/Sim908/Sim908.cpp
Code:
#include "Arduino.h"
#include "Sim908.h"

Sim908::Sim908(){

}

void Sim908::blinkLed(int lPin, int nBlink, int msec) {
   if (nBlink) {
     for (int i = 0; i < nBlink; i++) {
       digitalWrite(lPin, HIGH);
       delay(msec);
       digitalWrite(lPin, LOW);
       delay(msec);
     }
   }
 }
and
Sim908_v6.ino.
Code:
#include <Sim908.h>

Sim908 sim908;

int green = 12;


void setup()
{
  pinMode(green, OUTPUT);
}


void loop()
{
  sim908.blinkLed(green,1,1000);
  delay(3000);
}

Where is my mistake?

Many thank
24  International / Français / Re: Comment créer sa propre librairire en fonction d'une autre on: August 17, 2014, 03:48:17 pm
Voilà, j'ai lu le tuto, mais je penne à faire marcher un truc qui semble bien etre simple

J'ai créé deux fichiers sous
/libraries/Sim908/Sim908.h
Code:
/*
  Sim908.h - Library
*/

#ifndef Sim908_h
#define Sim908_h

#include "Arduino.h"

class Sim908{
public:
Sim908();
void blinkLed(int lPin, int nBlink, int msec);

private:
};

#endif

/libraries/Sim908/Sim908.cpp
Code:
#include "Arduino.h"
#include "Sim908.h"

Sim908::Sim908(){

}

void Sim908::blinkLed(int lPin, int nBlink, int msec) {
   if (nBlink) {
     for (int i = 0; i < nBlink; i++) {
       digitalWrite(lPin, HIGH);
       delay(msec);
       digitalWrite(lPin, LOW);
       delay(msec);
     }
   }
 }

Et j'ai aussi fait un fichier Sim908.ino
Code:
#include <Sim908.h>

Sim908 sim908;

int green = 12;


void setup()
{
  pinMode(green, OUTPUT);
}


void loop()
{
  sim908.blinkLed(green,1,1000);
  delay(3000);
}

Quand je compile j'ai ce message d'erreur:
Quote
sim908_v6.cpp.o: In function `__static_initialization_and_destruction_0':
/Applications/sim908_v6.ino:3: undefined reference to `Sim908::Sim908()'
sim908_v6.cpp.o: In function `loop':
/Applications/sim908_v6.ino:16: undefined reference to `Sim908::blinkLed(int, int, int)'
Je ne comprends pas la premiere erreur, ou ai-je manqué une chose __static_initialization_and_destruction_0
et aussi la deuxième :
undefined reference to `Sim908::blinkLed(int, int, int)

Pourriez-vous me dire l'erreur(s) commises?
25  International / Français / Re: Comment créer sa propre librairire en fonction d'une autre on: August 17, 2014, 12:29:25 pm
http://arduino.cc/en/Hacking/LibraryTutorial
26  International / Français / Comment créer sa propre librairire en fonction d'une autre on: August 17, 2014, 12:25:41 pm
Bonjour à tous,
Je me replonge dans Arduino smiley-razz smiley
J'ai utilisé une grande librarire qui consiste en plusieurs fichiers. Il est bien mais beaucoup de code est inutile et prend de la mémoire. En plus c'est un peu le cheni.

J'aimerais refaire "la mienne" en reprennant uniquement ce que j'ai besoin, et j'aimerais avoir tout dans un fichier .cpp et .h.

Auriez-vous un tutorial qui explique comme on crée une librarie?
Auriez-vous des info à me donner?

Merci beaucoup
27  International / Français / Mais que fait exactement la fonction puts() on: October 30, 2013, 07:10:38 am
Bonjour,

J'ai lu la définition de la fonction puts(), mais j'ai du mal à comprendre exactement ce qu'elle fait
Code:
// Convert Int to char
        char posiC[2] = {0}; // es-ce que le {0} est indispensable
        sprintf(posiC, "%d", posi);
        puts(posiC);
ou alors mon anglais n'est pas assez bon
Quote
Writes the C string pointed by str to the standard output (stdout) and appends a newline character ('\n').

The function begins copying from the address specified (str) until it reaches the terminating null character ('\0'). This terminating null-character is not copied to the stream.

Notice that puts not only differs from fputs in that it uses stdout as destination, but it also appends a newline character at the end automatically (which fputs does not).
Que va vraiement changer posiC avant et après.
Si je ne me trompe pas,, avant il est bien terminé pas \0 parce que sprintf(), non?
28  International / Français / Re: Comment optimiser mon code en utilisant une variable à la place de deux on: October 30, 2013, 02:38:29 am
Quote
Si le but c'est réellement d'optimiser pourquoi utiliser des char pour stocker un flottant (alors que float est là pour ça) ?
Oui en effet, je vais me concentrer la dessus, pour remplacer les char par des float. (Ma fonction retourne de char).

Toujours dans le but d'optimiser mon code, j'ai eu une reflexion hier soir et je me demande si je devrai pas corriger deux trois trucs.

Je vais donner une exemple de code
Code:
#include <MemoryFree.h>
#include "SIM900.h"
#include <SoftwareSerial.h>
#include <Wire.h>
#include "gps.h" // RAM : 1170 -> 1039
#include "inetGSM.h" // RAM : 891, then 881 when adding serialhwread()
#include <EEPROM.h>

char lon[50];
char lat[50];
char gsm[100];
char dir[50];
char numero[50];

void setup(){}
void loop(){
  // Ici il y a  un timer pour que GetGPS() soit appeler tous les 2mn (je ne l'écris pas, pour faire plus simple)
  GetGPS();
   // Il n'y a pas de timer
  GetGSM();
  // Ici il y a  un timer pour que GetSMS() soit appeler tous les 5mn (je ne l'écris pas, pour faire plus simple)
  GetSMSToCinqMn();
}
void GetGPS(){
  // Fait quelque chose avec les variables lon et lat
}
void GetGSM(){
  // Fait quelque chose avec la variable gsm
   GetDIR();
}
void GetDIR(){
  // Fait quelque chose avec la variable dir
}
void GetSMSToCinqMn(){
  // Fait quelque chose avec la variable numero
}
Dans mon banal exemple, on est d'accord que mon microprocesseur va utiliser 300o de RAM, tout le temps, jusqu'a ce que j'éteigne mon microprocesseur.
Simplement pendant 4mn, il y a 50o qui auccupe la ram pour rien, mais a l a5eme minute la fonction GetSMSToCinqMn() va utiliser 50o.

Je me disais que si je placais les 4 char dans leurs fonction, ca permettrait d'utiliser la mémoire que lorsque le Micropro en a besoin, puis que lorsque l'on quitte une fonction , la mémoire utilisée par un char , est libirée .

Suis-je bien juste?
Donc je me demandais si c'était une bonne idée de modifier ainsi, sachant que les fonctions ne vont jamais etre appelée en meme temps, mais l'une après l'autre, séquencée par un timer.
Code:
#include <MemoryFree.h>
#include "SIM900.h"
#include <SoftwareSerial.h>
#include <Wire.h>
#include "gps.h" // RAM : 1170 -> 1039
#include "inetGSM.h" // RAM : 891, then 881 when adding serialhwread()
#include <EEPROM.h>


void setup(){}
void loop(){
  GetGPS();
  GetGSM();
  // Ici il y a  un timer pour que GetSMS() soit appeler tous les 5mn (je ne l'écris pas, pour faire plus simple)
  GetSMSToCinqMn();
}
void GetGPS(){
   char lon[50];
   char lat[50];
   inet.getGps(lon,lat); // fonction d'une librairie, racourcie qui va exécuter la command AT pour avoir les positions gps
  // Fait quelque chose avec la variable lon, lat
    Serial.println(lon);
    Serial.println(lat);
}
void GetGSM(){
  // Fait quelque chose avec la variable gsm
    char gsm[100] ="100_caracteres_pour_l_exemple......."
   GetDIR(gsm);
}
float GetDIR(int pos){
   char dir[50];
   float numero;
  // Question le dir pour afficher ce qui le nuemro la la position pos
  return numero;
}
void GetSMSToCinqMn(int pos, String text){
  // Fait quelque chose avec la variable pos en envoi un sms en utilisant le numero a la position pos du directory
   float numero;
  strcpy(numero,GetDir(pos);); //OK il y a pas 50 caractere, mai faisons comme..
   //fonction tiré de ma librairie
   inet.sendSMS(numero,text);
}
Dans cette exemple, on est d'accord que la mémoire de mon microcontroller sera utilisée que lorsque les fonctions sont appelées.

Donc quand la fonction GetSMS sera appelé, les 100o utlisé par GetGPS seront libérés?

Voilà, on est d'accord que ce code ne marchera pas comme ca, mais c'est plus pour faire part d'une autre maniere de placer mes variable qui consome de la mémoire.

Voyez-vous ce que j'essaye de dire, malgré ces exemples de code non fonctionnels  smiley ?
29  International / Français / Re: Comment peut-on fusionner des valeurs autrement qu'avec strcat() on: October 28, 2013, 10:01:23 am
Je me'excuse B@atto, mais je vais encore te tenir tête  smiley smiley smiley smiley
Peut etre que je me suis mal expliqué, ou peut etre que je t'ai pas compris à 100% et je m'en excuserai.

En fait, je me suis mis dans le cas ou j'était en montage, par exemple. La haut, il y a peu de chance d'avoir du réseau 3G, mais il y aura du GPS.
Si je me promene 1h à 3h, il faut que mon module garde les positions. Sopit pour une heure, c'est
120x ca (sachat que %s est remplacer par 15 caratere
Code:
<fix><co><%s</co><lo>%s</lo><la>%s</la><al>%s</al><ti>%s</ti><ve>%s</ve><st>%s</st><in>%s</in></fix>

Donc je ne crois pas que la RAM suffira.

Maintenant ce que je n'ai pas préciser, j'ai une petite fonction qui control la RAM restant.
Par exemple. s'il retse 150o, il en envera 1 x le code ci-dessus
S'il reste 250, il envera deux fois le code ci-dessus. Mais l'envoi se fera une fois.
 C'est la que j'ai besoin d'empiler ces deux set. avec un truc du genre strcat.

Ainsi la RAM restaera une "memoire tampon". Pour l'envoi.

Aussi, je opeux en effet, réfléchir pour fractionner la chaine de caractere, mais si je la fractionne, j'aurai plus de connection au server pour l'envoi.
Par exemple, si je la fractionne, j'aurai deux envoi pour avoir le tout sur le serveur.

Vois-tu pourquoi? Quoi, peut etre que je me trompe encore  smiley-fat smiley
30  International / Français / Re: Comment peut-on fusionner des valeurs autrement qu'avec strcat() on: October 28, 2013, 08:27:30 am
ok, bon dans tous les cas, si je n'ai pas de réseau pour envoyer les données il faut bien que je les stok a quelque part. De plus, actuellement, il me reste 500o de la RAM du Arduino, et ceci va encore diminuer.

Ceci dit, je suis toujours face au meme même problème pour fusionner des données comme le fait strcat()

en plus simple:
J'ai une valeur das la variable, et je dois àjouter, mais pas remplacer ceci à coords
Code:
// Ceci va l'écraser, mais je veux ajouter
sprintf(coords,"<fix><co><%s</co><lo>%s</lo></fix>",cou,lon);
Pages: 1 [2] 3 4 ... 27