¨Résolu" Demande aide pour selectionner differents acces Wi-Fi

Bonjour,

je viens vous demander de l'aide pour coder quelques lignes.

Je désire pouvoir choisir mon accès wi-fi en déplacant un cavalier (3 positions) plutôt que de reprogrammer chaque fois.

La méthode classique marche sans problème :

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
char ssid[] = "xxxxx";
char password[] = "xxxxx";

voidsetup() {
WiFi.begin(ssid, password);
}

void loop() {
}

// (j'ai supprime ce qui est inutile ici)

Je voudrais bien arriver à ceci :

avant le setup()
ssid1 = "aaaaa";
password1 = "11111";
ssid2 = "bbbbb";
password2 = "22222";
ssid3 = "ccccc";
password3 = "33333";

dans le setup
if PinHigh == LOW{
ssid = ssid1
password = password1
}

if PinMedium == LOW{
ssid = ssid2
password = password2
}

if PinLow == LOW{
ssid = ssid3
password = password3
}

puis enfin :

WiFi.begin(ssid,password)

J'ai tenté d'y arriver mais pas moyen. Recherche sur le Net, j'ai meme acheté un livre (C++ par Jack Fellers) etc

Pouvez-vous me rendre ce petit service? Merci d'avance

Salut.
Pourquoi ne pas utiliser WifiManager ?

hbachetti,
merci pour ton conseil. C'est ce que j'appelle une usine a gaz pour résoudre un problème qui me semble très simple.
Pour moi, les "const" ou pas, les "char", "char*" et "char[] "sont des notions très floues qui m'empèchent de trouver la solution.
Je désire simplement déposer mon montage à un endroit A, B ou C, placer un strap sur A, B ou C et le ESP8266 se connecte sur le routeur A, B ou C après chaque mise en route.

Exemple d'erreur de la dernière compilation :

error: invalid conversion from 'const char*' to 'char' [-fpermissive]

pour moi, cela ne me dit absolument rien.

Bonjour

Pour moi, les "const" ou pas, les "char", "char*" et "char[] "sont des notions très floues qui m'empèchent de trouver la solution

la solution ? ouvrir un livre, suivre un tutoriel pour enlever le 'flou' , ce flou n'est pas une fatalité, les notions derrière ces termes sont nettement défiies :wink:

autre piste : faire avec (ou s'inspirer de) WiFIMulti
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi/examples/WiFiMulti

Merci al1fch,

et tu aurais un livre a me conseiller ?

mon auto-formation date un peu....

Mon livre de chevet était "Le langage C" de Kernighan et Ritchie" (1e puis 2e édition) chez Masson à l'époque

Trés didactique, ce livre m'a fait apprécier le C avec en prime un effet rassurant : lun des deux auteurs étant un des créateurs du langage.

D'autres que moi , plus à la page, sauront mieux conseiller avec une ouverture sur le C++

J'ai ici " Le livre du C premier langage de Claude Delannoy Editions Eyrolles".

Il date de 2002 et ne fait pas référence au C++. C'est pour cela que je l'avais mis de coté. En suivant tes conseils, je vais m'y replonger. Encore merci

Un message d'erreur sortie de son contexte ne fera pas beaucoup avancer ton problème.
Mets ton code et recopie le message d'erreur intégralement.

J'avais envisagé de faire ce que tu voulais faire.
C'est toujours d'actualité, mais j'ai d'autre chose à terminer avant.

J'avais pensé à quelque chose comme ça (donc non vérifié)

const char* ssid1     = "boite_magique_1";
const char* password1 = "xxxxxxxxxxx";

const char* ssid2     = "boite_magique_2";
const char* password2 = "yyyyyyyyyyyy";

if (digitalRead(pin_machin) == 0)
{
    WiFi.begin(ssid1, password1);
}
else
{
    WiFi.begin(ssid2, password2);
}

ou si vous avez besoin de mémoriser quelle a été la sélection

const byte pinCavalier = 2;

const char* ssid1     = "boite_magique_1";
const char* password1 = "xxxxxxxxxxx";

const char* ssid2     = "boite_magique_2";
const char* password2 = "yyyyyyyyyyyy";

const char * ssid = nullptr;
const char * password = nullptr;

void setup() {
  pinMode(pinCavalier, INPUT_PULLUP);
  if (digitalRead(pinCavalier) == LOW) {
    ssid = ssid1;
    password = password1;
  } else {
    ssid = ssid2;
    password = password2;
  }
  WiFi.begin(ssid, password);
  ...
}

void loop() {}

si vous vous mélangez les pinceaux entre tableaux, pointeurs, case mémoire etc, peut être que mon petit tuto peut vous aider ?

Merci a tous, merci J-M-L,

c'est ce que je recherchais.
Maintenant cela compile sans erreurs.
Cela ne va pas m'empêcher d'aller approfondir pour dissiper le "flou". :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.