Pages: 1 [2]   Go Down
Author Topic: Aide Instruction Arduino  (Read 1099 times)
0 Members and 1 Guest are viewing this topic.
Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah ok jviens de piger en trouvant un autre code sur le net : j'avais zappé le while(client.connected) donc c'est bon ça boucle bien et ta String se remplit.

Pour les ordres bin je vois pas où tu bloques ! Reprenons :
1) pour virer la string, il faut ajouter une variable pour mesurer la longueur dans la fameuse boucle while(client.connected). Donc ça fait :

Code:

char currentLine[20];
byte i;
while (client.connected()) {
if (client.available()) {             // Si les bytes sont lues par le client
        
        char c = client.read();             // Lecture des bytes, et
        Serial.write(c);                    // afficher la sortie sur le moniteur
        if (c == '\n') {                    // Si la byte est une nouvelle ligne de character
        
          if (i == 0) {  
            
            client.println(F("HTTP/1.1 200 OK"));
            client.println(F("Content-type:text/html"));
            client.println();                  
                    
          }
          else {      // Si on demande une nouvelle ligne sa initialise le CurrentLine
            for(int y=0;y<20;y++) currentLine[y]='\0'; // effacement de la chaîne
          }
        }    
        else if (c != '\r') {    
          currentLine[i++] = c;      
        }
}

2) et ensuite sélection de l'ordre suivant le caractère qui suit "GET", normalement situé en dernière place :

Code:

switch(currentLine[i-1]) {
case 'O':   // moteur 1 en marche mais je ne touche pas au moteur 2 donc il n'y a que le moteur 1 qui bouge
digitalWrite(6,HIGH);
digitalWrite(5,LOW);
digitalWrite(8,HIGH);
break;
case 'Z': // moteur 2 en marche mais je ne touche pas au moteur 1 donc il n'y a que le moteur 2 qui bouge
digitalWrite(3,HIGH);
digitalWrite(9,LOW);
digitalWrite(2,HIGH);
break;
...
default:

}


J'ai pris un peu des valeurs au pif mais jte laisse adapter smiley-wink

Après tu peux cumuler avec un switch/case dans la loop si tu veux un comportement spécifique.
Logged


France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai essayé d'adapter mon code avec ce que tu m'as donné, et je t'en remercie déjà smiley ! J'ai simplifié en branchant juste deux led pour tester déjà,
mais je n'arrive pas a le faire fonctionner, la page Web de l'Arduino est innacessible et la Led ne s'allume pas quand je lui demande, la boucle du panneau solaire en revanche s'exécute bien déjà donc je t'en remercie smiley-grin !
Peut tu me dire ce que j'ai mal fais? smiley-sad

Code:
#include <SPI.h>
#include <WiFi.h>


char ssid[] = "ssi";      //  Nom du Réseau
char pass[] = "ssississi";   // Mot de passe du Réseau
int keyIndex = 0;                 // Clé d'index  (demandé uniquement pour clé WEP).
int laser=A2;
int tare;
int status = WL_IDLE_STATUS;
WiFiServer server(80);
IPAddress bddserver (192,168,0,101);
int z = 1;



void setup() {
  Serial.begin(9600);      // Initialisation de la communication sur 9600 Bauds.
           
            pinMode(6, OUTPUT); //LED Sur PIN 6
            pinMode(9, OUTPUT);
            tare= analogRead(0);
 
   

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println(F("Le Shield Wifi n'est pas present !"));
    while(true);        // Ne pas continuer?
  }

  // Tentative de connexion au réseau :
  while ( status != WL_CONNECTED) {
    Serial.print(F("Tentative de connexion au reseau nomme: "));
    Serial.println(ssid);                   // Affiche le nom de réseau

    // Ligne pour connexion par WAP WPA  (A changé si utilisation du WEP).   
    status = WiFi.begin(ssid, pass);
    // Attendre 10 seconde pour la connexion.
    delay(10000);
  }
  server.begin();                           // démarrer le serveur WEB sur le port 80
 
 Serial.println(F("Connecté"));
}


void loop() {

  detection();
  WiFiClient client = server.available();   // Attente des client connecté
 
   
    char currentLine[20];
    byte i;
    while (client.connected()) {
     
    if (client.available()) {             // Si les bytes sont lues par le client
       
        char c = client.read();             // Lecture des bytes, et
        Serial.write(c);                    // afficher la sortie sur le moniteur
        if (c == '\n') {                    // Si la byte est une nouvelle ligne de character
         
          if (i == 0) { 
           
            client.println(F("HTTP/1.1 200 OK"));
            client.println(F("Content-type:text/html"));
            client.println();                 
                     
          }
          else {      // Si on demande une nouvelle ligne sa initialise le CurrentLine
            for(int y=0;y<20;y++) currentLine[y]='\0'; // effacement de la chaîne
          }
        }     
        else if (c != '\r') {   
          currentLine[i++] = c;     
        }
       
        switch(currentLine[i-1]) {
        case 'O':   // Fais clignoter la led 3 seconde
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        break;
       
        case 'Z': // Pareil mais en sens inverse
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        break;

        default:
        digitalWrite(6, LOW);
       

            }
 

        }
    }
}

 
void detection(){  // On détecte si le panneau solaire est touché ou pas.
  WiFiClient client = server.available();
 
  if (analogRead(0) > tare + 50 ) {  // Si la valeur que le panneau solaire renvoi est supérieur à la valeur de tare + 50 il est touché.
   
    analogWrite(9, HIGH);
   
  }
  else { // Il n'est pas touché on ne fait donc rien.
   
    analogWrite(9, LOW);
  }
}

Merci encore à toi de ton aide ^^ !
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'avoue que j'ai jamais touché au wifi ou à l'ethernet donc c'est loin d'être ma spécialité ^^'

Tu avais quoi qui s'affichait avant ?

Logged


France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui mais même comme ça tu dois quand même être meilleur que moi x) !
J'avais une page blanche en "192.168.0.101" et quand j'accèder a "192.168.0.101/X" il faisait l'instruction demandé, mais j'arrivais pas a rajouter sur ce code la boucle du panneau solaire x) ! Donc je suis venu sur le fofo smiley !
Mais la plus rien ne marche smiley-sad ! En revanche le loop boucle bien maintenant chose qui ne se faisait pas avant ^^! Mais l'url 192.168.0.101 n'est plus accessible et n’importe que /X n'ont plus :S...
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Essaye :

Code:

void loop() {

  detection();

WiFiClient client = server.available();

  if (client) {
 
    boolean currentLineIsBlank = true;
char currentLine[20];
byte i;

    while (client.connected()) {
      if (client.available()) {

        char c = client.read();
        Serial.write(c);
      currentLine[i++] = c;

       if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
           client.println();
         
           break;
        }
        if (c == '\n') {
                 currentLineIsBlank = true;
        }
        else if (c != '\r') {
             currentLineIsBlank = false;
        }
      }
    }
   
    delay(1);
     client.stop();

      Serial.println(currentLine[i-1]); // pas sûr du 3, à vérifier

        switch(currentLine[i-1]) {

        case 'O':   // Fais clignoter la led 3 seconde
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        break;
       
        case 'Z': // Pareil mais en sens inverse
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        delay(1000);
        digitalWrite(6,LOW);
        delay(1000);
        digitalWrite(6,HIGH);
        break;

        default:
        digitalWrite(6, LOW);
       
            }
}
  }

Logged


France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ça ne marche toujours pas, je te donne ce que renvois le moniteur série au cas z'ou ^^ !

Code:
Connecté
GET / HTTP/1.1
Host: 192.168.0.100
Connection: keep-alive
User-Agent: Mozilla/5.°¢•¹Ñ…Ñ¥Ù•de connexion au reseau nomme: ssi
Connecté

J'ai juste essayé d'acceder a 192.168.0.100 .. smiley-sad Je suis paumé la x) ! (Et le moniteur n'affiche plus l'état du panneau solaire smiley-sad )
« Last Edit: April 15, 2013, 09:25:29 am by Phoenixya34 » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La j'avoue déjà que je suis pas du tout calé sur le sujet, en plus j'ai pas le montage sous la main donc très dur à débuguer :s
Logged


France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon bah tant pis.. Merci quand même pour ton aide smiley ! Je vais essayer de me débrouiller avec mon code smiley !
Merci quand même a la communauté et a toi en particulier pour l'aide. smiley
Logged

Pages: 1 [2]   Go Up
Jump to: