Arduino Forum

International => Français => Topic started by: sophie3399 on May 18, 2014, 04:51 pm

Title: Coucou j'ai un probleme
Post by: sophie3399 on May 18, 2014, 04:51 pm
coucou je poste ici car j'ai un petit soucis et je ne sais comment le résoudre.
je travaille sur un projet qui a pour but d'identifier des personnes absentes grace a des cartes magnétiques et je dois créer un interface web afin d'y noter les absents. Mon interface est fait mais je n'arrive pas a trouver le moyen de recuperer les données de mon caramade afin de les mettre sur mon site web :$
est ce que quelqu'un peut m'éclairer s'il vous plait :)

sophie
Title: Re: Coucou j'ai un probleme
Post by: infobarquee on May 18, 2014, 06:40 pm
bonjour,
j'ai bien mon briquet pour éclairer :)
ca sent le bac ca

sans code, tu veux qu'on fasse comment?
sans connaitre le matériel utilisé, on fait comment?
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 18, 2014, 07:08 pm
oui pour le bac je stresse beaucoup :s
ah oui biensur escusez moi :$ pour ma part j'utilise une carte arduino avec une ethernet shield et mon camarade une arduino, une platine shield NFC RFID et des cartes transpondeur.
j'ai mis les codes en attaché
merci d'avance si vous pouvez m'aider !!!
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 18, 2014, 07:12 pm
J'oubliais de dire que le premier code c'est celui de mon camarade et le second c'est mon interface
Merci
Sophie
Title: Re: Coucou j'ai un probleme
Post by: Christian_R on May 18, 2014, 09:19 pm
Vous utilisez une carte arduino chacun, et le problème est de transmettre d'une carte vers l'autre ?
Rx - Tx en liaison série par exemple.
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 07:30 am
Non enfait c'est au niveau du programme il a les personnes absentes=0 et les personnes présentes=1 et ensuite je dois affiche soit que les absents soit tout le monde mais avec un etat soit absent sout present tout mon probleme se situe au niveau du code :$ et je ne sais vraiment pas comment m'y prendre
Title: Re: Coucou j'ai un probleme
Post by: infobarquee on May 19, 2014, 08:06 am

Non enfait c'est au niveau du programme il a les personnes absentes=0 et les personnes présentes=1 et ensuite je dois affiche soit que les absents soit tout le monde mais avec un etat soit absent sout present tout mon probleme se situe au niveau du code :$ et je ne sais vraiment pas comment m'y prendre

tu peux nous la refaire dans un francais compréhensible s'il te plait?
tu bloque sur quoi?
le code php, le code niveau arduino, le code sur le site?
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 09:14 am
sur le code arduino,  je n'arrive pas a savoir comment afficher les personnes absentes par rapport au code arduino de mon collegue
Title: Re: Coucou j'ai un probleme
Post by: Christian_R on May 19, 2014, 09:53 am
Est ce que tu arrives déjà à afficher un simple "hello" sur ton interface web ?
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 10:05 am
oui oui
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 06:04 pm
je pense savoir exactement ce qu'il faut que je vous demande :
Comment lire les données d'un tableau j'ai cherché partout mais je nous trouve pas d'explications claires
merci
Title: Re: Coucou j'ai un probleme
Post by: derder9161 on May 19, 2014, 06:06 pm

j'ai cherché partout mais je nous trouve pas d'explications claires


J'ai tapé : "tableau c" sur google"
1 er lien -> http://www.commentcamarche.net/contents/120-langage-c-les-tableaux ->  tu as ta réponse la dedans.

Dans la partie : Manipuler les éléments
Bon courage

Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 06:48 pm
Merci pour le lien du coup ca devrait avoir cette tête ? :)

Code: [Select]
int Abs[]={1,2,3,4,5,6,7,8,9,10};
int i;

void setup ()
{
  for (i=0;i<9;i++);
}

void loop ()
{
  for (i=0;i<9;i++);
}
  if Abs[1]=0
{
  client.println("&Eacutel&egraveve N&deg1 : Absent");
}
  if Abs[2]=0
{
  client.println("&Eacutel&egraveve N&deg2 : Absent");
Title: Re: Coucou j'ai un probleme
Post by: nulentout on May 19, 2014, 07:37 pm
Coucou les copians (copines) ,
Dans ton listage la variable de boucle i est déclarée en doublon en global, ce qui ne sert à rien.
Dans la séquence d'initialisation la boucle ne fait rien, donc elle est inutile.
Dans le tableau Abs, j'imagine que chaque élément représente une personne. Dans ce cas les valeurs devraient être des 0 et des 1. Du reste, vu que ces valeurs restent faibles, un byte serait plus économe qu'un int.
Bon, je ne sais pas si ces quelques observations te seront utiles, mais je n'ai pas le temps ce soir de tester du code sur mon Arduino. Mais globalement ton programme devrait ressembler à :
Code: [Select]
int Abs[]={1,0,1,1,0,0,0,0,1,0};
void setup (){ }
void loop (){
  for (byte i=0; i<=9; i++) {
    Serial.print("Personne num "); Serial.print(i);
    if (Abs[i]==0) {Serial.println(" : Absente.");}
       else {Serial.println(" : Presente."); } } }

Amicalement : Nulentout.
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 19, 2014, 08:57 pm
Coucou nulentout merci beaucoup pour cette correction mais je comprends pas pourquoi tu met des 0 et des 1 au tableau pourquoi un est 1 et pourquoi l'autre 0 ?  :smiley-roll-sweat:
Title: Re: Coucou j'ai un probleme
Post by: derder9161 on May 19, 2014, 09:52 pm
Tu peux mettre les valeurs que tu veux du moment que si tu déclares ton tableau avec un type tu n'y mets que le même type
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 24, 2014, 11:48 pm
j'ai enfin compris ce qu'il fallait que je fasse exactement ! j'ai juste besoin d'une correction s'il vous plait :$ (plus précisement le tableau "Nom" ou j'ai apparement des erreurs de déclarations :/)

Code: [Select]
#include <SPI.h> // Chargement de la Librairie SPI
#include <Ethernet.h> // Chargement de la Librairie Ethernet

char Nom[i] = {"Mendiondo", "Dormont", "Millereux"};

byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x12, 0xDC }; // Instaure l'adresse mac de la shield Ethernet
IPAddress ip(172,19,239,60); // Initialise l'adresse IP 172.19.239.60 dans le programme

EthernetServer server(80); // Permet à la carte de communiquer avec le Navigateur en HTTP

void setup()
  {
  Serial.begin(9600);
  Ethernet.begin(mac,ip); // Initialise la Librairie Ethernet, l'adresse mac et IP 
  server.begin(); // Initialise le Serveur
  Serial.print("L'adresse du serveur HTTP est: "); // Affiche le message à l'adresse du réseau HTTP
  Serial.println(Ethernet.localIP()); // Affiche l'adresse IP
  }


void loop()
  {
  //Fonction qui permet de savoir si un client est connecté au serveur et que des données sont disponibles
  EthernetClient client = server.available(); // Regarde si le serveur est disponible
  if (client)
  {
    //Un nouveau client est identifié
    Serial.println("new client");
    boolean currentLineIsBlank = true; // Une requête http finit avec une ligne blanche
   
    //Tant que le client est connecté et que les données sont disponibles, on va lire et envoyer les données sur le port série
    while (client.connected()) // Tant que l'arduino et la carte réseau sont connectés
   {
    if (client.available()) // Si le client est disponible
    {
      char c = client.read();// Lit la valeur du client
      Serial.write(c);
      if (c == '\n' && currentLineIsBlank) // Si on est arrivé à la fin de la ligne (on a reçu un retour à la ligne) et que la ligne est blanche, la requête http est fini, donc on peut envoyer une réponse
      {
       //Quand toutes les données sont envoyées, la requête HTTP est terminée, fin de la connexion     
       client.println("HTTP/1.1 200 OK");
       client.println("Content-Type: text/html");
       client.println("Connnection: close"); // La connexion sera fermé après l'achèvement de la réponse
       
       //Permet de fixer le temps de rafraichissement de la page web à 5s
       client.println("Refresh: 5");
       client.println();
       client.println("<!DOCTYPE HTML>");
       {
          }
        {
          client.print("<body>"); // Contient le corps du document html
            client.println("<body style = background:#003366>"); // Définit la couleur en fond du site en Bleu nuit
              client.println("<span style = color:#FEFDF0>"); // Définit la couleur de la police du site en Blanc de Troyes
                client.print("<u>"); // Souligne le Texte à l'intérieur de la balise
                  client.println("<center>"); // Centre le texte
                    client.println ("<font size=7>"); // Règle la taille des caractères
                      client.println ("<font face=Comic sans MS>"); // Applique une police au texte
                        client.println ("<b>"); // Règle le texte en gras
                          client.print("Lyc&eacutee Gustave Eiffel : ");
                        client.print ("</b>"); // Fin de la balise <b>
                      client.print ("</font size>"); // Fin de la balise <font size=7>
                    client.print ("</font face>"); // Fin de la balise <font face=Comic sans MS>
                  client.print("</center>"); // Fin de la balise <center>
                client.println("</u>"); // Fin de la balise <u>
          client.println("<ul>"); // Permet de créer une liste ordonnée ou numéroté
            client.println("<li>"); // Incrémente le nombre qui sera affiché devant l'élement de la liste
           client.print("Absents :");
           client.print(Nom);
          client.println("</ol>"); // Fin de la balise <ol>
          client.println("<br />"); // Retour à la ligne
          client.print("</body>"); // Fin de la balise <body>
        }
       client.println("</html>");
       break;
      }
     
     // Fin de la transmission et déconnexion
     if (c == '\n')
     {
     currentLineIsBlank = true; // Commencer une nouvelle ligne
     }
    else if (c != '\r')
    {
    currentLineIsBlank = false; // Obtention d'un caractère sur la ligne actuelle
    }
   }
  }
delay(1); // Temps pour que le Navigateur Internet reçoive les données
client.stop();  // Couper la connexion
Serial.println("client disonnected");
}
}


Je tiens aussi a remercier toutes les personnes qui ont eu la patience de m'aider <3
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 25, 2014, 07:48 am
Bonjour,
Quote
j'ai enfin compris ce qu'il fallait que je fasse exactement !

Apparemment non car ton code ne tiens pas compte de tes besoins.
Je ne vois pas apparaitre la gestion des absents et présents?
Que viennent faire les noms dans l'histoire?

Dans tous les cas pour la déclaration de ton tableau tu as besoin d'un tableau de pointeurs vers des chars (tes noms) et non un tableau de char.
Chaque élément du tableau de pointeurs sera initialisé à l'adresse de la chaine littérale pour ce nom.

char *Nom[] = {"Mendiondo", "Dormont", "Millereux"};

Tu y accède ensuite par:
Code: [Select]
int i=0;
client.print(Nom[i]);


En choisissant i tu affichera le nom que tu souhaites. Attention n'oublies pas que dans un tableau on commence à 0 donc tu auras:
Quote
Nom[0]= "Mendiondo"
Nom[1]="Dormont"
Nom[2]= "Millereux"


Mais si tu veux associer une liste de noms à une valeur "absent" ou "présent" il faut plutôt partir sur un tableau à 2 colonnes: la première pour stocker les noms, la deuxième pour stocker l'information "présent" ou "absent".

;)
Title: Re: Coucou j'ai un probleme
Post by: Super_Cinci on May 25, 2014, 07:55 am
Effectivement, il y a un souci de déclaration :

Code: [Select]

char Nom[i] = {"Mendiondo", "Dormont", "Millereux"};
Title: Re: Coucou j'ai un probleme
Post by: nulentout on May 25, 2014, 08:17 am
Code: [Select]
Coucou nulentout merci beaucoup pour cette correction mais je comprends pas pourquoi tu met des 0 et des 1 au tableau pourquoi un est 1 et pourquoi l'autre 0 ?
Bonjour tout le monde,
Pour répondre (Un peu tard) à ta question, je suppose que les noms des personnes sont contenues dans un tableau de chaines de caractères. Le tableau que je te propose contient autant d'éléments que de personnes identifiées par leur noms. Dans ce tableau, respectant l'ordre des personnes, je place un "1" si la personne est présente, et un zéro dans le cas contraire. C'est un moyen détourné d'écrire des booléens. Il serait plus logique de déclarer un tableau de booléens et de le remplir avec des true et de false. C'est alors une question de lisibilité, de philosophie, voir d'optimisation de ton programme.
Amicalement : Nulentout.
Title: Re: Coucou j'ai un probleme
Post by: Super_Cinci on May 25, 2014, 08:48 am
ça optimise pas trop, vu qu'un boolean est un octet qui vaut 1 ou 0. mais côté lecture, c'est plus clair en effet.
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 25, 2014, 09:19 am
Enfait mon code doit lire le tableau d'un autre programme qui contient les absents et je dois faire un tableau avec le nom de ces absents et biensur apres les afficher sur mon site web :/
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 25, 2014, 02:01 pm
Et comment tu fais liaison entre les deux?
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 25, 2014, 05:54 pm
Par câbles
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 25, 2014, 06:10 pm
Et à quel moment dans ton code tu:
Quote
lire le tableau d'un autre programme

?

Mis à part le
Code: [Select]
Serial.begin(9600);

Je ne vois pas de gestion de communication ni de récupération de valeurs...
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 25, 2014, 06:20 pm
Je couple les deux programmes
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 25, 2014, 06:26 pm
Ouch tu as raison en fait je n'ai rien mis pour lire le tableau de l'autre programme oubli mon post précédent
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 25, 2014, 08:25 pm
Ma fonction a pour but de créer un interface web et d'y afficher et stocker les absences des élèves, je dois lire les absents (= 0) relevés par la NFC/RFID et leur affecter un nom. Pour créer l'interface web il n'y a aucun soucis je sais faire seulement je suis perdue pour le reste c'est vraiment l'impasse
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 25, 2014, 11:26 pm
Il faut déjà que tu récupère le tableau créé par ton camarade en scrutant la liaison série en stockant ces variables dans un tableau à toi.
Ensuite tu parcours ce tableau pour l'afficher sur ta page web avec une boucle For.

Si tu passes par une liaion "cable" je suppose que vous allez utiliser la liaison série donc ton collègue doit prévoir de t'envoyer les données avec un Srial.print et toi de les recevoir avec un Serial.read

Il y a plusieurs exemples sur le net là dessus.

Dans tous les cas vous pouvez pas vous dire dans votre groupe "Moi je fais telle partie, toi tu fais telle autre", il faut voir avec l'autre comment vous voulez procéder pour récupérer les données correctement.
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 25, 2014, 11:31 pm
Apparement il utilise un tableau en stockant dedans la valeur présent ou pas pour chaque cas: 
Code: [Select]
int present[]={0,0,0,0,0,0,0,0,0,0,0};

Donc il te faut récupérer ces valeurs mise à jour par sa partie RFID.
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 26, 2014, 07:51 am
Mais justement je n'y arrive pas et mes profs me disent de faire un tableau de cette sorte char Noms={"Mendiondo", "Dormont", "Millereux"};
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 26, 2014, 08:26 am
C'est la ou je bloque et je dois juste recuperer ceux qui sont a 0 (absents)
Title: Re: Coucou j'ai un probleme
Post by: fdufnews on May 26, 2014, 09:02 am

Apparement il utilise un tableau en stockant dedans la valeur présent ou pas pour chaque cas: 
Code: [Select]
int present[]={0,0,0,0,0,0,0,0,0,0,0};

Donc il te faut récupérer ces valeurs mise à jour par sa partie RFID.

Vous travaillez ensemble ou vous vous faites la gueule ?
Normalement vous devriez avoir mis au point un protocole d'échange des informations et testé celui-ci depuis longtemps.
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 26, 2014, 09:13 am
Et pour le transfert des données B@tto l'explique très bien ici:
http://forum.arduino.cc/index.php?PHPSESSID=hi9cjdrlo7enkn4nfsjjvh2o60&topic=240558.msg1739071#msg1739071

;)
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 26, 2014, 12:07 pm
du coup si j'ai bien compris je fait
Code: [Select]
int recue;
void setup ()
    {
Serial.begin (9600);
    }

void loop ()
    {
recue = Serial.read ();
Serial.println (recue);
    }


Mais du coup je fait comment pour affecter les noms ? :/
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 26, 2014, 12:29 pm
Il faut que tu te poses et que tu fasses ton process avant de vouloir coder.
Non cela ne marcheras pas. Pourquoi tu ne prends pas l'exemple donné par B@tto?
Tu as un tableau, et B@tto de propose de récupérer un tableau, pourquoi changer?

Analyse d'abord ton problème de A à Z, fait toi un algorithme et après on t'aidera pour le coder. Si à la base c'est pas clair dans ta tête, jamais tu y arriveras.
Title: Re: Coucou j'ai un probleme
Post by: sophie3399 on May 27, 2014, 08:46 am
du coup pour commencer je dois lire le tableau des absents B@tto donne le code ensuite ---> ensuite je dois affecter des noms aux valeur du tableau que je lis et enfin je dois afficher leur abscence sur le site et B@tto le donne en partie
ce qui me bloque donc c'est affecter des noms aux valeurs d'un tableau
Title: Re: Coucou j'ai un probleme
Post by: john_lenfr on May 27, 2014, 02:06 pm
Pour affecter tes noms aux valeurs absents ou présents tu rajoute une colonne dans ton tableau.
Tu auras par exemple:
char tableau[10][10] = {{nom1,nom2,nomx,....}, {0,1,0,1,....}};

http://www.ltam.lu/cours-c/prg-c65.htm

Je te laisse deviner comment tu fais le lien entre nom1 et s'il est présent ou pas
http://www.apprendre-informatique.com/tutorial/programmation/langage-c/Apprendre-le-C/Les-tableaux

;)