Show Posts
Pages: [1] 2 3 ... 6
1  International / Français / Re: Comment incrémenter ceci 0x0100 on: September 20, 2013, 09:11:09 am
Euh, du reste tout est déclaré en byte en fait. Forcement que ca marche pas bien :/

Le mieux pour faire joujou avec des mask c'est des unsigned int pour des paquets de 16 bits, voir des unsigned long pour des pack de 32
2  International / Français / Re: Comment incrémenter ceci 0x0100 on: September 16, 2013, 07:33:02 am
C'est pas spécifique au C, c'est mathématique

100 en hexa, 256 en décimal, voie 1 0000 0000 en binaire sont juste des façons différentes d'afficher le même nombre.

Bon, en base 10 c'est plus facile pour nous, on a plus l'habitude.
3  International / Français / Re: Trop if / else if ? on: September 04, 2013, 02:47:18 pm
Mon avis qui n'engage que moi m'autorise a penser que déjà un type "String" sur un microcontrôleur qui n'a que quelques octets de mémoire ça ne devrais même pas exister.

Une fois compilé ça fait du code qui bouffe de la place et de la mémoire a foison (et du temps de calcul aussi) le plus souvent pour faire des trucs qui auraient été bien plus efficients avec des tableaux de char.
4  International / Français / Re: moteur 14A sur controleur 12A ? on: September 04, 2013, 02:42:52 pm
Sachant qu'en général le courant de démarrage d'un moteur est pas loin de 10x son intensité nominale, je pense que ton controleur ne va pas aimer longtemps la blague.
5  International / Français / Re: [Projet viable ou pas ?] Autoradio + Instrumentation on: August 23, 2013, 08:04:08 am
Je pense qu'un mini PC embarqué genre raspberry pi sera bien plus adapté qu'un arduino pour ce genre de taches.

Apres tu peut utiliser l'arduino pour relever les valeur des sonde, puis les renvoyer au raspberry pour se charger de l'affichage.
6  International / Français / Re: Afficher un menu sur LCD sans intérrompre le reste du code ? on: July 18, 2013, 04:11:54 pm
Ca peut ressembler a ca.

Commence par faire des p'tits dessins (ordinogrames ou trucs du genre) de comment doit se comporter ton programme, ca te facilitera la tache.
7  International / Français / Re: Peut on extraire une partie uniquement d'une chaine de caracter on: July 18, 2013, 11:53:37 am
tu peut t'en sortir en utilisant les fonctions  strtok() ou sscanf(), ou une combinaison des deux.
La première fonction est vraiment tres chiante a utiliser

Code:
/****************************************************/
/*         Exemple d'utilisation de strtok          */
/*  Découper une chaine selon un certain séparateur */
/****************************************************/

// dans le code suivant on découpe avec l'espace
// mais on peut remplacer l'espace en lignes 34 et 46
// par n'importe quel autre caractère
// ou même chaine de caractères

#include <stdio.h>
//#include <stdlib.h>
#include <string.h>

const int Taille = 200;

int main (void)
{
    char phrase[Taille + 1] = "toto va a la plage"; // la chaine à découper
         // on découpe selon les espaces
    char tabMots[100][Taille + 1]={""}; // tabMots contient 100 mots vides
       // un tableau d'au plus 100 chaines de taille maxi Taille
       // il va nous servir à recevoir les mots de la chaine découpée
       // à la fin du processus de découpage il aura l'allure suivante :
       // toto
       // va
       // a
       // la
       // plage
    char * p; // un pointeur interne qui va servir à la fonction de découpage
    int i;  
    
      
    p=strtok(phrase," "); // p vaut le premier mot (toto)
    strcpy(tabMots[0],p); // on copie toto dans la première ligne de tabMots
       // le premier appel à strock va chercher le premier mot avant l'espace
       // on copie ce mot (toto) dans le tableau tabMots en première ligne
       // A la fin de l'instruction strtok a laissé en mémoire le pointeur p
       // sur le début du mot suivant (va)
       // Les appels suivants de strtok dans la boucle ci-dessous utilisent
       // ce pointeur interne d'où la présence de NULL dans la ligne 46
    
    i=1;
    while (p!=NULL)
        {
            p=strtok(NULL," ");
                // on cherche un nouveau mot à partir de la position courante
                // de p
            if (p!=NULL) // si on a trouvé un nouveau mot
                {
                    strcpy(tabMots[i],p);
                    // on le copie dans le tableau en i ème ligne
                    i++; // on se prépare pour le mot suivant
                }
        } // fin de while
    
    // affichage
    for (i=0;i<100 && tabMots[i][0]!=0;i++) printf("\nMot %d : %s",i,tabMots[i]);
    
    fflush(stdin);getchar();  
} // fin de main
 
8  International / Français / Re: Afficher un menu sur LCD sans intérrompre le reste du code ? on: July 17, 2013, 01:13:49 pm
MDR ca va faire beaucoup de claques en effet !

Donc avec un GOTO, je ne peux pas remonter au dessus de void loop(); ? Ou c'est simplement mal vu par les devs ?
quand la fonction loop() est terminée, elle reprends automatiquement au début.
Au pire tu peut coller un break ou un return (a tester) pour forcer la fin d'une boucle, mais normalement tu n'en a pas besoin.

Dans tous les cas, ça revient au même si je met mon menu au tout début de void loop; donc question con ^^ Mais jvoudrais quand même savoir smiley

Si dans mon code j'ai uniquement void setup(); et void loop(); comme fonction qui portent un nom,

Rien ne t’empêche de créer d'autres fonctions pour faire différents trucs. En fait les fonctions c'est un des principes du C. Tout est fonction.
 
il me suffit d'écrire "GOTO setup" dans le code pour arriver à void setup(); ou il me manque quelque chose ?
 
PAS DE GOTO ! (je me repete on dirais ^^)

qd ta fonction setup() est terminée, l'arduino va tout seul dans la fonction loop(). Tu n'a pas a te prendre la tete avec ca.

ta fonction setup() ne doit être exécutée qu'une seule fois !

Si le GOTO c'est tant le mal que ça, comment je peux créer un menu "momentané" avec plusieurs pages sans GOTO ?

en combinant machine a état et fonction personnalisées.

J'ai bien peur que ça dépasse mes compétences pour le moment...

Je te conseille d'aller faire un tour sur "le site du zero" et d'apprendre les bases du C.
Certes sr un ordinateur c'est un peu différent de sur l'arduino, mais les principes sont les mêmes.
9  International / Français / Re: Afficher un menu sur LCD sans intérrompre le reste du code ? on: July 17, 2013, 11:11:45 am
La fonction setup() n'est executée qu'une seule fois, au démarrage de l'arduino.
Comme son nom l'indique, elle doit te servir uniquement a régler pleins de trucs, comme les réglages matériels et aussi l’état initial de tes variables, flags et autres.

Ensuite c'est ta fonction loop() qui tourne en boucle, le plus rapidement possible pour donner l'impression que tout se fait en meme temps.


Les GOTO c'est le mal. Considère que tu doit t'infliger une baffe a chaque fois que ton programme passe par un goto. (méfie toi, a 16 Mhz, ca fait vraiment beaucoup de baffes !)
10  International / Français / Re: Afficher un menu sur LCD sans intérrompre le reste du code ? on: July 17, 2013, 08:53:38 am
Si ton programme est bien fait, ton temps de cycle est plus court que la vitesse a laquelle tes yeux voient le monde.

Pense tu que c'est si important que ça que ton programme soit pile poil sur le if qui teste l’état de ton bouton au moment ou tu appuie dessus, ou bien ca ne changera rien s'il est a la ligne d’après (cas le plus défavorable) et que ton programme refait un tour avant de réagir ?
11  International / Français / Re: Afficher un menu sur LCD sans intérrompre le reste du code ? on: July 17, 2013, 07:07:23 am
Pour faire croire que ton arduino fait  plusieurs choses en même temps, il faut te rapprocher du fonctionnement d'un automate.

Dans ton loop() tu ne doit jamais bloquer ton programme, ou tout du moins le bloquer le moins longtemps possible, et mémoriser des états

A chaque passage dans le loop les différentes actions sont conditionnées aux états mémorisés et tes entrées.
12  International / Tutoriels et cours / Re: [Tuto] Méthode de configuration d un module Bluetooth Linvor on: July 12, 2013, 05:39:52 am
J'ai un "truc bizarre" avec mon module linvor.

Quand W7 découvre le périphérique, il lui associe 2 ports série, un en émission, et un en réception.
Du coup j'arrive pas utiliser le bouzin :/

Une idée de comment resoudre ca ?
13  International / Français / Re: convertir un tableau de byte (adresse mac) en tableau de char (pour affichage) on: July 12, 2013, 05:25:15 am
sprintf() est plutôt sympa pour convertir des nombres en chaine de caractères.


exemple :
Code:

sprintf(chaine,"%i:%i:%i:%i",nombre[0),nombre[1],nombre[2],nombre[3]);

Serial.println("%s",chaine);


Et voila.
14  International / Français / Re: [Info]Nouvelle version indépendante de l'IDE on: July 11, 2013, 01:36:22 pm
Une "cible" arduino a importer directement dans code::blocks, avec un plug in pour flasher le tout.
C'est faisable ? ça existe peut être déjà ?

J'aime bien code::blocks
15  International / Français / Re: [demande d'avis] module bluetooth arduino on: July 09, 2013, 03:56:19 pm
A priori ils utilisent tous la même puce, niveau fonctionnement un module ou l'autre revient au même.

Personnellement j'utilise un module "linvor" made in china super pas cher sur un site d'enchere connu.
il utilise 2 broches libres de mon arduino (un uno, ou des nano selon les cas) avec le biblio software serial, parce qu'utiliser le port série matériel c'est un peu chiant pour mettre a jour le soft de l'arduino.

Pour réceptionner des données c'est pas top (mais je m'en sert presque pas de la réception)
Pour émettre c'est pareil qu'un port série hardware

Sur un méga qui a plusieurs ports en hardware je pense que c'est top.


(En fait le top pour moi serais un arduino nano, mais avec 2 ports série en hard)
Pages: [1] 2 3 ... 6