Show Posts
Pages: 1 ... 11 12 [13] 14 15
181  International / Français / Re: Question et conseil sur les sondes de températures on: November 13, 2011, 02:28:59 pm
Salut,

Le kit Velleman est basé sur un capteur analogique, un LM385 qui effectue la mesure. Et le reste de la carte semble servir à mettre en forme le signal afin de l'exploitet. Alors que chez Adafruit, tu n'as que le capteur analogique, le TMP36. Dans les deux cas, il faudra connecter ces capteurs sur une entrée analogique, et effectuer une conversion analogique/numérique.

Par contre le DS18B20 est un capteur numérique, il ne nécessite pas de conversion analogique/numérique. Côté microcontrôleur, il se connecte sur une entrée/sortie numérique toute simple.
182  International / Français / Re: S1D13700 :: Conversion de données vers char * on: November 07, 2011, 02:35:53 pm
Pour la température, c'est normal que tu ne puisses pas la formater à l'aide de snprintf : par défaut Arduino utilise une version allégée qui ne fonctionne pas avec les nombres réels. A noter que le comportement est le même en utilisant directement avr-gcc. Il y a une solution à ça mais très couteuse en mémoire sur un atmega328 : presque +85% de mémoire flash pour le snprintf smiley-roll-sweat

Le mieux est de trouver une autre solution, ce que tu as fait. Sinon il est possible de se dépatouiller avec des divisions par 10 et des modulos, mais pas sûr que ce soit mieux...

++
183  International / Français / Re: S1D13700 :: Conversion de données vers char * on: November 07, 2011, 12:52:57 pm
De rien smiley-wink

Je suppose que les variables _hour et _minutes sont des entiers. Tu peux les formater directement à l'aide de la fonction snprintf, les deux appels à dtostrf ne sont pas utiles.

Code:
snprintf(time_buff, 17, "%02d h %02d", _hour, _minutes);

++
184  International / Français / Re: S1D13700 :: Conversion de données vers char * on: November 07, 2011, 02:49:05 am
Salut,

Le problème vient de tes buffers hour_buff et minute_buff : ils sont trop petits (tu as oublié le caractère de fin de chaîne '\0') et non initialisés. La fonction snprintf formate tes buffers jusqu'à ce qu'elle trouve le '\0'. Comme elle ne le trouve pas, on ne sait pas trop ce qu'elle fait et surtout quand elle s'arrête...

Il faudrait écrire ce genre de chose :
Code:
char hour_buff[3] = { '\0' };
char minute_buff[3] = { '\0' };
char time_buff[17] = { '\0' };
avec taille = nombre de caractères + 1 pour le '\0'.

Je te laisse vérifier les autres buffers...

++
185  International / Français / Re: Question sur INCLUDE on: November 01, 2011, 02:26:11 am
Salut,

Si tu ne veux pas créer de classe, tu peux néanmoins créer une bibliothèque. Pour ce faire, il te faut créer deux fichiers :

- le fichier d'entête, par exemple "MyLibrary.h" :
Code:
// Protection contre les inclusions multiples.
#ifndef h_MyLibrary_h
#define h_MyLibrary_h

// Prototype de ta fonction.
void MyLibrary__print();

#endif /* h_MyLibrary_h */

- le fichier source, par exemple "MyLibrary.cpp" :
Code:
#include "MyLibrary.h"

void MyLibrary__print()
{
    // Corps de la fonction.
}
186  International / Français / Re: mq2 senseur de gaz on: October 29, 2011, 02:32:40 am
Code:
  val = analogRead(gazpin);       // reads the value of the gaz (value between 0 and 1023)
  Serial.println (val);
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);

C'est pas le fait d'avoir deux fois "val" qui fou le bronx ?

C'est tout à fait correct, il faut juste garder en tête que val sera écrasée par la valeur retournée par la fonction map(). Par contre il ne faut plus avoir besoin de la valeur retournée par analogRead() par la suite...

Moi j'aurais fait ça un truc dans ce genre

Code:
  val = analogRead(gazpin);       // reads the value of the gaz (value between 0 and 1023)
  Serial.println (val);
  serv = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(serv);

Apres je suis pas du tout sur que ça vienne de la mais la j'ai l'impression que le val qui va être utilisé dans myservo ça va être le val = analogRead(gazpin) et pas le val = map(val, 0, 1023, 0, 179);

Non, ce sera bien la valeur val retournée par la fonction map() qui sera passée en argument à myservo.write().
187  International / Français / Re: Lib Time : comparer now() à une valeur sériel. on: October 29, 2011, 01:49:51 am
Salut,

Essaye d'inclure la bibliothèque standard time, c'est elle qui définit le type time_t :
Code:
#include <time.h>
188  International / Français / Re: Comment traduire ce code ??? on: October 28, 2011, 01:32:38 pm
Salut,

Il s'agit plus exactement de C++, par exemple pour écrire sur la sortie standard, en C on écrit :
Code:
printf("Hello world!\n");
et en C++ on écrit :
Code:
cout << "Hello world!" << endl;

Dans ton exemple, on s'approche plus de la fonction sprintf comme le dit Oliv4945. Ici, je suppose que le sdout est une redirection de la sortie standard vers la carte SD.

++
189  International / Français / Re: Utiliser le port série du PC on: October 26, 2011, 01:39:48 am
Salut,

Si c'est un Arduino Uno ou Mega, tu peux peut-être essayer de reprogrammer le µC chargé de la conversion USB <-> UART.

De quel port série parles-tu ? RS232 ? Si oui, tu ne peux pas connecter directement ton port série sur le microcontrôleur : Les signaux ne sont pas compatibles ! Il te faut un convertisseur RS232 <-> TTL à base de MAX232 (par exemple).

Sinon tu peux aussi utiliser un nouveau module de conversion USB <-> USART tel que celui là : USB 2 Serial Converter.

++
190  International / Français / Re: Shield, ports utilisés et port libres, comment savoir ? on: October 19, 2011, 06:18:39 am
Salut,

Le symbole '~' signifie que ce sont des sorties PWM, du moins c'est le cas sur les cartes Arduino. Après pour savoir quelles broches sont utilisées par les shields, ça dépend des fabricants. Par exemple Snootlab met des ':' à côté des numéros de broche.

Mais le meilleur moyen de savoir quelles broches sont utilisées ou non est de consulter la schématique du shield en question.

++
191  International / Français / Re: Désactiver LEDs Rx et Tx on: October 18, 2011, 07:34:13 am
En lisant la documentation du FT232RL (embarqué sur la Duemilanove) en diagonale, il semblerait que ce soit configurable, les LEDs étant connectées sur des broches d'entrée/sortie.
192  International / Français / Re: Désactiver LEDs Rx et Tx on: October 18, 2011, 06:49:54 am
Salut,

Sur quelle carte ? A priori sur la Uno, c'est l'ATmega 8 qui les pilote. Donc en modifiant son firmware ça doit être faisable.

++
193  International / Français / Re: Mixer des valeurs de variables on: October 13, 2011, 11:38:07 am
+1 avec Patsol, voire même la fonction snprintf bien plus sûre.
194  International / Français / Re: envoie de la valeur 0x00 en UDP on: October 12, 2011, 05:21:35 am
Salut,

C'est normal, la fin d'une chaîne de caractères étant indiquée par la valeur 0. Il faudrait plutôt passer un tableau d'octets (byte) à la méthode Udp.sendPacket plutôt qu'un tableau de caractères (char). Voici un exemple : http://arduino.cc/en/Tutorial/UdpNtpClient

++
195  International / Français / Re: info sur arduino on: October 10, 2011, 06:24:39 am
Salut,

Physiquement parlant, c'est en effet un port USB. Par contre d'un point de vue logiciel et microcontrôleur, c'est assimilable à un port série.
Pages: 1 ... 11 12 [13] 14 15