Show Posts
Pages: 1 2 3 [4] 5 6 ... 203
46  International / Français / Re: erreur dans le code on: April 12, 2014, 03:25:06 am
Ce programme est un beau fouillis avec sa tonne de if else imbriqué et mal indenté. Mais il compile sans erreur.
Pour le formatage il faut aller dans le menu outils --> formatage automatique après on y voit plus clair.

Maintenant à la lecture on voit qu'il doit manquer quelque chose il y a un accolade ouvrante toute seule à la ligne 196 on peut se demander si un morceau de code ne s'est pas perdu.
Il y a quelques morceaux de code dupliqués. Il serait judicieux d'en faire une fonction. A cela 2 raisons:
  1) programme moins long
  2) lisibilité de loop

Je pense très sincèrement que cette succession de if..else.. est une belle tentative pour faire un programme qui ne fonctionnera pas bien. Certains tests à l'intérieur de if dans des else reprennent des cas exclus précédemment ce qui pourrait conduire à des cas mal traités.
Tu devrais remettre à plat la logique de fonctionnement de ton programme pour éviter d'avoir tous ces tests empilés les uns par dessus les autres.
Déjà le premier test fait apparaître deux modes de fonctionnement distincts. Si c'est le cas dans loop on ne devrait voir qu'un test.
Code:
void loop()

{
    if(digitalRead(selecmod)==1)
   {
        gestion_mode1();
   } else{
       gestion_mode2();
  }
}
ensuite tu définis les fonctions communes par exemple:
Code:
void gestion_piscine(){
    Serial.print("temp piscine: ");
    Serial.print((float) 0.0625 * lectureSonde1());
    Serial.write('C');
    Serial.write(0x03);
    Serial.print("temp ext : ");
    Serial.print((float) 0.0625 * lectureSonde2());
    Serial.write('C');

    delay(5000);
    Serial.write (0x1B);
    Serial.write (0x43);
    Serial.write(0x01);

}

puis tu écris les fonctions qui vont correspondre aux deux modes:
Code:
void gestion_mode1(){
   gestion_piscine();
 
  .... là le reste des fonctions nécessaires à ce mode

}

void gestion_mode1(){
   gestion_piscine();
 
  .... là le reste des fonctions nécessaires à ce mode

}

Ainsi tu gagneras en clarté, tu détecteras plus facilement les erreurs, et tu t'éviteras des heures à chercher une erreur qui ne se produira que de temps en temps parce qu'un test est mal ficelé.
47  International / Français / Re: mettre plusieurs void dans le void loop on: April 11, 2014, 01:41:07 am
Je voulais savoir comment faire pour des que par exemple j'appuis sur le bouton pompe et qu'il aille directement dans le void pompe pour la mettre en marche.
Le langage de programmation utilisé offre des fonctions de test qui permettent de faire ça:
http://arduino.cc/en/Reference/Else
48  International / Français / Re: Carte SD on: April 11, 2014, 01:36:44 am
Je ne le jurerais pas mais je doute que les cartes SDHC supportent le mode de transfert SPI.
49  International / Français / Re: Projet de Tuile interactive - Connecter en série des senseurs ? on: April 11, 2014, 01:33:01 am
Le RS485 est un bus de communication.
Tous les abonnés sont en parallèle sur ce bus et parlent à tour de rôle. Il peut y avoir 1 ou plusieurs maîtres. Dans ton cas, on peut imaginer un maître qui interroge les tuiles pour centraliser toutes les informations.
L'avantage du RS485 c'est qu'il n'y a que 2 fils + une masse, mais la liaison est half-duplex (la même paire est utilisée pour RX et TX), l'interface est robuste aux perturbations car la liaison se fait sur une paire différentielle.
Si tu as besoin d'avoir une communication plus soutenue en débit et dans la mesure ou ta configuration ne nécessite à priori qu'un maître, tu pourrais passer en RS422 mais là par contre tu as 2 fils aller + 2 fils retour + une masse. Même robustesse que le RS485 mais comme les lignes RX et TX sont distinctes tu peux aller plus vite et le protocole est plus simple à mettre en place.

Quelques explications sur les bus de communications : http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=SNLA138&fileType=pdf
Voir en particulier page 5 la différence entre RS422 et RS485
50  International / Français / Re: [Non réglé] Liaison Bluetooth - Carte Romeo on: April 10, 2014, 09:42:10 am
Il n'y a pas de raison que ce soit ma carte le problème, puisque la Romeo et le Module Xbee sont de la même marque ( DFRobot ).
J'ai vérifié à l'aide d'un oscilloscope si les information envoyé arrivé bien sur la carte, et il s'est averré que oui, elles sont bien reçues.
Donc le soucis viens forcement de la commande qui doit lire l'information reçue
Donc l'appairage entre l'appareil Androïd et ta carte Romeo est fonctionnel?
Es-tu certain que le débit de 9600 bauds soit correcte? Coté Androïd c'est bien la vitesse qui est programmée?
Puisque tu as regardé à l'oscilloscope, tu devrais pouvoir vérifier la vitesse de transmission en mesurant la largeur des impulsions reçues.
51  International / Français / Re: remplacer les delay d'un tone par des millis() on: April 10, 2014, 09:10:02 am
Dans les exemples de programmes livrés avec l'IDE, il y a un programme qui s'appelle BlinkWithoutDelay qui est justement la présentation d'une temporisation non bloquante. Elle reprend le programme blink et remplace delay() par une temporisation basée sur millis().
Donc :
tu vas dans : Fichiers --> Exemples --> 02.Digital --> BlinkWithoutDelay, tu charges le programme
tu vas dans : Fichiers --> Exemples --> 01.Basics --> Blink, tu charges le programme
Si tu compares les deux, tu vas vite comprendre le principe qui est on ne peut plus simple.
52  International / Français / Re: Utilisation carte SD et programmation orientée objet sur arduino on: April 09, 2014, 02:57:28 pm
Bonsoir,
je voudrai mettre un programme plus lourd dessus et l'exécuter sur l'arduino.
Il y a plusieurs cartes dans la famille Arduino, à choisir selon la taille maximale de ton programme une fois compilé.
32 ko de mémoire flash sur la Uno
128 ko sur la Mega2560
512 ko sur la Due
La Mega2560 n'aurait-elle pas 256 kO ?
Si mais Christian_R s'en garde la moitié pour son usage personnel  smiley-yell
53  International / Français / Re: réalisation d'une fonction pour faire tourner un moteur Pas à pas de 6 files on: April 09, 2014, 08:27:56 am
D'ailleurs je te cite :

niveau programmation je veux réaliser ma propre fonction sans utiliser la fonction "stepper"sur "arduino" ,afin de faire tourner mon moteur avec une grande vitesse.

 smiley-mr-green smiley-mr-green
Je pense qu'il voulait dire "mon prof veut que je réalise ma propre fonction"
54  International / Français / Re: réalisation d'une fonction pour faire tourner un moteur Pas à pas de 6 files on: April 09, 2014, 06:01:18 am
Grande vitesse et moteur pas-à-pas c'est un peu antinomique.
Concernant le schéma. Je ne pense pas que tu puisses commander correctement un moteurs pas-à-pas qui consomme 3A par phase avec ce montage directement collé à un arduino.
Le TIP31 est donné avec un gain min de 10 pour un courant de collecteur de 3A. Ce qui implique 300mA dans la base donc l'arduino ne peut pas saturer le transistor. Il faudrait utiliser un autre transistor devant le TIP31 ou utiliser des darlingtons tout fait.

Concernant le pilotage du moteur il y a des milliers de sites sur le net qui vont te décrire le fonctionnement d'un moteur pas-à-pas et son pilotage. Pour commencer:
https://fr.wikipedia.org/wiki/Moteur_pas_%C3%A0_pas
http://www.semelec-provence.com/principe-de-fonctionnement-des-moteurs-unipolaires.php
55  International / Français / Re: EEPROM arduino on: April 09, 2014, 05:38:13 am
Par contre au niveau du stockage si puisque qu'on veut attendre 1000h soit 3600000 secondes.
Est-ce que ça marcherais de dire que lorsque l'on atteint 99999 secondes (environ 27,7 heures) il faut incrémenté la variable suivante pour avoir 1000000 ?
Arrivée là on se demande surtout si ce ne serait pas plus simple de gérer heures, minutes et secondes normalement.
56  International / Français / Re: probleme d'écriture on: April 08, 2014, 03:02:25 pm
Il faut que tu places le numéro des pins dans un tableau et que tu adresses ce tableau.
Si on reprend ton exemple cela donnerait quelque chose comme ça:
Code:
byte ledPin2[8] = {6, 9, 10, 11, 2, 3, 4,5};

int valeurpin;


...

  analogWrite(ledPin[valeurpin], HIGH);

Dans l'exemple ci-dessus:
     si valeurpin=0 on allume la led branchée sur la broche 6
     si valeurpin=4 on allume la led branchée sur la broche 2

Tu devrais regarder e ce coté: http://forum.arduino.cc/index.php?topic=229179.0
57  International / Français / Re: probleme sauvegarde carte sd avec shield v1.2 on: April 08, 2014, 02:02:47 pm
il et cable directement hormis les broche
 du tactile 6 5 4 3 2 passe maintemant en 49 48 47 43 42 et les broche 6 5 4 3 2 servent en sortit pwm

Qu'est-ce qui est câblé directement à quoi?
La on parle de la carte SD. Comment est-elle câblée sur ton shield?
58  International / Français / Re: Détecteur de mouvement on: April 08, 2014, 01:57:47 pm
Un accéléromètre.
La composante verticale (l'accélération de la pesanteur) va changer d'orientation.
Mais ce n'est pas un critère suffisant pour trancher en faveur d'un évanouissement.
Il faut aussi prendre en compte la vitesse de chute, le fait qu'il y ait ou non des mouvements.
59  International / Français / Re: capter une vitesse et commander un moteur CC on: April 08, 2014, 01:50:54 pm
En fait, mon moteur sert à remonter et à descendre un système de roulette sur un vélo couché.
On ne va pas tarder à voir arriver Jean-François  smiley-mr-green
60  International / Français / Re: Delta Temps on: April 08, 2014, 10:14:05 am
Le plus marrant c'est que tu nous mets un texte qui explique que millis() doit être utilisé avec des variables de type unsigned long et toi tu modifies ton code et tu affectes millis() à un float.
Si c'est pas se tirer une balle dans le pied ....
Pages: 1 2 3 [4] 5 6 ... 203