JMe87
January 12, 2023, 10:24am
1
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 ?
JMe87
January 12, 2023, 12:52pm
3
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.
al1fch
January 12, 2023, 1:33pm
4
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
autre piste : faire avec (ou s'inspirer de) WiFIMulti
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi/examples/WiFiMulti
JMe87
January 12, 2023, 1:46pm
5
Merci al1fch,
et tu aurais un livre a me conseiller ?
al1fch
January 12, 2023, 2:00pm
6
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++
JMe87
January 12, 2023, 2:15pm
7
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.
68tjs
January 12, 2023, 3:52pm
9
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);
}
J-M-L
January 12, 2023, 3:56pm
10
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 ?
Suite à la demande de Zarb94 et leSept et vu le temps pluvieux cette après midi, je me suis dit que j'allais essayer de documenter un peu ces histories de pointeurs en C et C++ sur nos petits Arduinos.
Il existe le document de 52 pages rédigé par @osaka que vous pouvez lire mais il semble qu'une "courte" démystification sur la mémoire et les pointeurs pourrait être utile pour les débutants et moins débutants.
Voici donc ma contribution qui se veut plus simpliste sur le sujet.
On ne peut pas …
JMe87
January 12, 2023, 4:16pm
11
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".
system
Closed
July 11, 2023, 4:17pm
12
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.