Show Posts
Pages: 1 ... 108 109 [110] 111 112 ... 238
1636  International / Français / Re: Liaison série on: July 29, 2013, 04:00:03 am
Quote
Code:
unsigned int batterie; 
   batterie = (int)buffer[4] + (int)buffer[5]<<8;

C est ça? Je comprends pas trop surtout le 8.
<< c'est l'opérateur de décalage à gauche. Donc, en faisant buffer[5]<<8 on décale buffer[5] de 8 bits vers la gauche (ce qui est équivalent à une multiplication par 256 mais c'est plus rapide).

Maintenant l'index des tableaux commençant à 0 en C. Si on prend l'exemple que tu donnes :
0F 2E F4 01 51
 il vaudrait mieux écrire
Code:
batterie = (int)buffer[3] + (int)buffer[4]<<8;

Edit: j'ai ajouté un cast en int devant buffer car c'est un tableau de char et on perdrait l'octet de poids fort dans le décalage.
1637  International / Français / Re: Contrôle de port de la carte Arduino depuis PC Linaro en C on: July 28, 2013, 02:15:00 pm
La carte Arduino depuis le PC est vue comme un port série identifié sous Linux comme /dev/ttyUSB0 ou approchant. C'est le nom qui apparaît dans l'IDE arduino. Sinon tu ouvres une console juste après avoir branché la carte arduino et tu fais un dmesg |tail et tu devrais voir quelque chose comme ça:
[12088.676111] usb 4-2: new full-speed USB device number 10 using ohci_hcd
[12088.860510] ftdi_sio 4-2:1.0: FTDI USB Serial Device converter detected
[12088.860588] usb 4-2: Detected FT232RL
[12088.860594] usb 4-2: Number of endpoints 2
[12088.860600] usb 4-2: Endpoint 1 MaxPacketSize 64
[12088.860606] usb 4-2: Endpoint 2 MaxPacketSize 64
[12088.860611] usb 4-2: Setting MaxPacketSize 64
[12088.864628] usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0


Pour communiquer avec la carte,  depuis n'importe quel langage de programmation, il suffit d'ouvrir le port en question est de dialoguer avec la carte suivant le protocole que tu auras défini.
1638  International / Français / Re: réglage de l'heure sur DS1307 on: July 28, 2013, 10:32:42 am
fdunews, y'a pas des exemples du'tilisation de cette lib DS1307RTC ?? car dans l'IDE j'ai que des exemples pour librairie time et time alarm.

Oui c'est vrai y'a que 3 exemples (voir la copie d'écran)
Puis c'est pas comme s'il n'y avait que 3 fonctions dans la librairie. set, read et write.

L'exemple TimeRTCSet permet de configurer l'heure à partir d'un message reçu par le port série.
1639  International / Français / Re: réglage de l'heure sur DS1307 on: July 27, 2013, 03:25:59 pm
Oui mais cette librairie n'a pas de rapport avec le DS1307 si ?? je peut gérer le DS1307 à liaison I2C par cette librairie ?
Aurais-tu des exemples ?
Si si elle a un rapport il faut bien lire ce qui est écrit dans la page donnée en lien. Dans le zip que tu charges (lien au début du 4ème paragraphe) il y a une librairie DS1307 en complément de la librairie time et un exemple. En fait la librairie time est une surcouche qui permet de gérer le temps issue de différente source (serveur NTP, GPS, RTC, ...)
1640  International / Français / Re: aide pour matrice bicouleur + arduino on: July 27, 2013, 12:09:27 pm
Sujet déjà traité il y a un petit moment. Peut être des choses à récupérer
http://forum.arduino.cc/index.php?topic=122096.0
1641  International / Français / Re: Liaison série on: July 27, 2013, 11:41:15 am
Si la valeur à convertir est dans un tableau de byte, il suffit de mettre les valeurs dans un unsigned int
si par exemple index pointe le premier élément de la valeur il faut écrire comme ça
Code:
unsigned int batterie;

     batterie = buffer[index] + buffer[index+1]<<8;
 

dans le cas de l'exemple que tu donnes buffer contient 01 51 et index pointe sur 01
   batterie = 0x01 + 0x51* 256 = 0x5101
1642  International / Français / Re: IDE sur tablette Android on: July 26, 2013, 08:49:46 am
salut
Et concrètement sur une galaxie tab2 ça marche ou pas ?
Le plus simple pour savoir c'est de charger l'application et d'essayer.
Et ensuite de nous dire si cela à bien fonctionné pour l'information de tous.
1643  International / Français / Re: changement frequence pwm + "potar" ? on: July 26, 2013, 08:48:30 am
Si tu ne l'achètes que pour ça ce serait peut être plus économique de te bricoler le fréquencemètre avec ton arduino.
http://interface.khm.de/index.php/lab/experiments/frequency-measurement-library/
1644  International / Français / Re: Erreur dans programme simple.... on: July 26, 2013, 07:42:31 am
Code:
digitalWrite(led10, !et_bt7)
il y a une erreur sur cette ligne et les suivantes
! est un opérateur logique
le bon opérateur est ~
Code:
digitalWrite(led10, ~et_bt7);

Cela dit je ne suis pas certain que le problème vienne de là.
1645  International / Français / Re: Problème installation on: July 25, 2013, 03:32:59 pm
Je pense que c'est du à un problème de version Arduino 32bits sur une distribution 64bits ou l'inverse.
1646  International / Français / Re: AttachInterrupt : Gros lag sur les FALLING on: July 25, 2013, 01:36:56 am
Ton entrée est en l'air
Il faudrait une résistance de pulldown vers la masse
1647  International / Français / Re: Bug parasitage? sur LCD notament on: July 19, 2013, 08:16:11 am
Etant donné que le problème se produit à l'identique sur le circuit simple, cela met hors de cause une bonne partie des pièces. Il reste donc l'arduino et l'afficheur. Comme dans le circuit complexe les LED ont aussi un comportement anormal, on est en droit de penser que le problème vient de l'arduino.
De ce que j'ai compris, dans le montage complexe l'arduino est alimenté au travers de la prise alimentation externe par le 12V alors que dans le circuit simple l'alimentation passe par l'USB. Dans ce cas, on peut dire que le circuit se comporte de la même façon alimenté par l'USB et par l'extérieur.
Cela limite les recherches au circuit d'alimentation (la UNO possède une commutation automatique de l'alimentation entre USB et externe) et au microprocesseur lui même.
Je commencerais par regarder si l'ATmega est bien mis sur son support. Circuit bien enfoncé. Pas de patte repliée sous le boîtier (une grande classique). Pour bien faire il vaudrait mieux le sortir de son support regarder qu'il n'y a pas une broche abimée. Que les contacts du support sont en bon état.
Ensuite chercher les soudures sèches sur la carte arduino. En insistant bien sur les masses, le quartz, les découplages.
Ensuite regarder s'il n'y a pas un composant cassé. Les composants CMS (résistances, condensateur) sont fragiles un composant cassé peut entrainer des comportement bizarres.
1648  International / Français / Re: DUE et ProgMem ou macro F(). on: July 19, 2013, 07:49:31 am

mon anglais etant souvent rouiller je n'est peut'etre pas bien compris les message du forum !

Si tu mettais le lien vers le(s) message(s) en question
1649  International / Français / Re: Pourquoi ma variable est detruite au fure et a mseure on: July 15, 2013, 02:58:18 pm
Code:
 int le = strlen(lo)+strlen(la)+strlen(al)+strlen(ti)+strlen(ve)+strlen(en)+strlen(lon)+strlen(lat)+strlen(alt)+strlen(vel)+strlen(time);
  
  char coords[le];

Ceci n'est pas autorisé. La taille des tableaux doit être connue à la compilation. Or à ce moment là le=0 donc tableau de taille nulle. C'est la porte ouverte à un gros plantage.
Pour faire de l'allocation dynamique il faut impérativement passer par les pointeurs.


Un exemple qui fonctionne semble-t-il comme tu le voudrais
Quote

#include "Arduino.h"
char lon[15];
char lat[15];
char alt[15];
char time[20];
char vel[15];
char buffer[150];

// créée pour les besoin de l'essai car je n'ai pas la librairie gps
void getPar(char*a, char* b, char* c, char* d, char* e){
  
  strcpy(a,"13.122545");
  strcpy(b,"3.254568");
  strcpy(c,"13245");
  strcpy(d,"15-7-2013 23:22:45"); // la chaine fait plus de 14 caractères
  strcpy(e,"135");
}

char * getGPSCoords(void){
 
  #ifdef DEBUG
    stat=gps.getStat();
    if(stat==1){
      Serial.println(F("NOT FIXED"));
    }else if(stat==0){
      Serial.println(F("GPS OFF"));
    }else if(stat==2){
      Serial.println(F("2D FIXED"));
    }else if(stat==3){
      Serial.println(F("3D FIXED"));
    }
    delay(5000);
  #endif    
  
  //Get data from GPS
  
   getPar(lon,lat,alt,time,vel);  // remplace gps.getPar()
  
  char lo[]="lo=";
  char la[]="&la=";
  char al[]="&al=";
  char ti[]="&ti=";
  char ve[]="&ve=";
  char en[]="\0";
  
  
  #ifdef DEBUG

  #endif
  
  // buffer suffisament large pour contenir la chaine finale
  // la place sera libérée en quittant la fonction donc ce n'est pas trop grave
  char coords[150];      
  
  strcpy(coords,lo);
  strcat(coords,lon);
 
  strcat(coords,la);
  strcat(coords,lat);
  
  strcat(coords,al);
  strcat(coords,alt);

  strcat(coords,ti);
  strncat(coords,time,14);  // là tu tronques la chaine à 14 caractères on le voit dans la chaine finale la fin est coupée
  
  strcat(coords,ve);
  strcat(coords,vel);
  
  strcat(coords,en);
  /*
 #ifdef DEBUG
   Serial.print(F("Coords : "));                              
   Serial.println(coords);
  // Serial.println(strlen(coords));
 #endif
 */
  return coords;

}

void setup(void){
  Serial.begin(9600);
  strncpy(buffer,getGPSCoords(),149);
  Serial.println(buffer);
  Serial.println("Going into loop");
}

void loop(void){
  strncpy(buffer,getGPSCoords(),149);
  Serial.println(buffer);
  delay(100);
}

1650  International / Français / Re: Pourquoi ma variable est detruite au fure et a mseure on: July 15, 2013, 12:50:57 pm
2 problèmes:
  1) coords est définie dans la fonction getGPSCoords donc elle est locale à cette fonction et elle est détruite aussitôt que tu quittes getGPSCoords.
  2) tu fais un malloc dans getGPSCoords mais tu ne libères jamais cette zone mémoire donc tu as une fuite mémoire puisqu'à chaque appel tu refais l'allocation d'un buffer que tu ne libères jamais.

Le pointeur est bien retourné par getGPSCoords et il est donc récupéré par la fonction appelante.Il faudrait donc libérer l'espace occupé par coords lorsque tu quittes getGPSCoords et  faire un strcpy pour récupérer la chaîne pointée.

Sur des petites architectures comme l'arduino, je pense qu'il est préférable de créer un scratchpad en global de taille correcte qui servira de buffer à tout le monde (cela oblige à une certaine discipline dans son utilisation).
Pages: 1 ... 108 109 [110] 111 112 ... 238