Bonjour j'ai eu plusieurs erreur arduino mais je ne sais pas trop comment les résoudre celle ci, même en cherchant sur internet (en plus moi et les forum anglais ^^)
Capture.PNG
Capture2.PNG
Merci
-----
Bonjour j'ai eu plusieurs erreur arduino mais je ne sais pas trop comment les résoudre celle ci, même en cherchant sur internet (en plus moi et les forum anglais ^^)
Capture.PNG
Capture2.PNG
Merci
Salut,
C'est pas une "erreur Arduino", c'est une erreur de programmation
Mais avec le code sous les yeux ça sera plus facile de t'aider
et la dernière image
Bonjour,
Tu peux aussi poster ton programme sous forme de texte, ce sera plus lisible.
Pense stp à mettre ton code entre des balises :
[code] ici ton code[/code]
ou avec le bouton # de l'éditeur de messages avancé. C'est plus lisible et préserve l'indentation !
Dernière modification par Antoane ; 13/04/2017 à 18h48. Motif: Réparation balises
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Je suis étonné de la manière dont sont déclarées tes objets.
Ça devrait être :
Et non :Code:Password password1("1111");
Pareil pour les autres objetsCode:Password password1 = Password("1111");
@sandrecarpe : j'ai changer comme tu ma dit mais sa me emt toujours la même erreur à ce niveau làCode:#include <Password.h> #include <Keypad.h> #include <HX711.h> #include <LiquidCrystal.h> #include <SoftwareSerial.h> #include<Ethernet.h> #include <GSM.h> #include <String.h> LiquidCrystal lcd(12,11,5,4,3,2); Password password1("1111"); // Le code du foyer 1 Password password2("2222"); // Le code du foyer 2 Password password3("3333"); // Le code du foyer 3 const byte ROWS = 4; // 4 lignes const byte COLS = 3; // 3 colonnes // Position des touches char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {0,1,7,8}; // Pin utilisés pour les lignes byte colPins[COLS] = {A1,A2,A3}; // Pin utilisés pour les colonnes // Creation du Keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); const int verrou = A4; // le verrou est sur la broche A4 ///////////////////////////////////// // A #define calibration_factor //This value is obtained using the SparkFun_HX711_Calibration sketch int nouveauPoids ; int ancienPoids ; #define DOUT A4 #define CLK A5 HX711 scale(DOUT, CLK); ////////////////////////////////////// // T const int BP_remplie = 0; //le BP broche 0 int broche = 9 ;// On déclare le nom de la broche sur laquelle sort le signal PWM // Site web // On recopie l’adresse MAC se trouvant au dos de la carte byte mac[ ] ={0x90, 0xA2, 0xDA, 0x0D, 0x75, 0x2A} ; // On définit le port par lequel se fera la communication EthernetServer server(80); // voir note 1 //GSM #define PINNUMBER "" // initialiser l'instance de la bibliothèque GSM gsmAccess; // inclure un paramètre 'vrai' pour le débogage activé GSM_SMS sms; // char tableau du numéro de téléphone pour envoyer des SMS // change le numéro 1-212-555-1212 en un nombre // vous avez accès à char remoteNumber [20] = "12125551212"; // char tableau du message char txtMsg[200]="Test"; /////////////////////////////////////// void setup(){ Serial.begin(9600); /////////////////////////////////////////////////////////// // ENZO pinMode(verrou, OUTPUT); digitalWrite(verrou,LOW); keypad.addEventListener(keypadEvent); //ajout d'un event sur le keypad ///////////////////////////////////////////////////////////// // ACHOUR Serial.println("Poubelle Collective"); scale.set_scale(47170); //This value is obtained by using the SparkFun_HX711_Calibration sketch scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0 Serial.println("Readings:"); /////////////////////////////////////////////////////////// // Thomas pinMode (broche, OUTPUT); // cette broche est une sortie pinMode(BP_remplie, INPUT); // BP est une broche d'entree lcd.begin(16,2); analogWrite (broche, 3) ; // nbre = 128 rapport cyclique 50% int remplie = digitalRead(BP_remplie); // Lecture de l'entree BP et sockage du résultats dans remplie // Site web // On initialise la connexion Ethernet et le serveur // en mode DHCP Ethernet.begin(mac); server.begin(); Serial.print("le serveur est à l'adresse "); Serial.println(Ethernet.localIP()); //GSM // initialiser les communications série Serial.println ("SMS Messages Sender"); // état de connexion boolean notConnected = true; // Démarrer GSM SHIELD // Si votre carte SIM a un NIP, passez-le en tant que paramètre de begin () entre guillemets while (notConnected) { if (gsmAccess.begin (PINNUMBER) == GSM_READY) notConnected = false; else { Serial.println ("Non connecté"); delay(1000); } } Serial.println ("initialisé par GSM"); ////////////////////////////////////////////////////////////// } void loop(){ if (verrou,LOW){ // Si le verrou est ouvert remplissage(); // void remplissage keypad.getKey(); // Appel de l'event du keyPad site(); // void site sendSMS(); // void sendSMS } } //Declaration de l'events keyPad void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } } void checkPassword(){ if (password1.evaluate()){ // Si le code du foyer1 est bon Serial.println("Foyer 1"); password1.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids1(); // on execute le programme void poids1 } else // SI le code du foyer 1 est faux { if (password2.evaluate()){ // Si le code du foyer2 est bon Serial.println("Foyer 2"); password2.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids2(); // on execute le programme void poids2 } else // SI le code du foyer 1 est faux { if (password3.evaluate()){ // Si le code du foyer3 est bon Serial.println("Foyer 3"); password3.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids3(); // on execute le programme void poids1 } else // SI le code du foyer 3 est faux { Serial.println("Faux"); password3.reset(); digitalWrite(verrou,LOW); } } } } void poids1(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); delay(5000); } void poids2(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); } void poids3(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); } void remplissage(){ { analogWrite (broche, 3) ; // nbre = 128 rapport cyclique 50% int remplie = digitalRead(BP_remplie); // Lecture de l'entree BP et sockage du résultats dans remplie if(remplie==LOW) // Si il y a rien dans la poubelle (aucun déchets) { lcd.setCursor(0,0); lcd.print("Poubelle"); lcd.setCursor(0,1); lcd.print("non remplie"); delay(1000); lcd.clear(); } else // SI la poubelle est pleine { lcd.setCursor(0,0); lcd.print("Poubelle"); lcd.setCursor(0,1); lcd.print("remplie"); delay(1000); lcd.clear(); } } } void site(){ { EthernetClient client = server.available(); // écoute des clients Ethernet eventuels (= 1 ou 0) { // Le bloc suivant sera exécuté si quelqu’un a saisi l’adresse IP de la carte Arduino sur son navigateur if (client) { Serial.println("nouveau client"); boolean currentLineIsBlank = true; // voir note 2 while (client.connected())//tant qu'un client est connecté { if (client.available()) { char c = client.read();// lecture d’un octet provenant // du client et stockage dans c Serial.write(c); if (c == '\n' &¤tLineIsBlank) // voir note 2 // Envoi de la page web client.println("<!DOCTYPE html>"); client.println("<html>"); client.println("<head>"); client.println("<title>Temperature salle de SIN</title>"); client.println("<STYLE type=text/css>"); client.println("h1 {border-width : 1; border: solid; text-align: center; background-color: blue;}"); client.println("table{border-collapse: collapse;} th{border: 1px solid black;}"); client.println("</STYLE>"); client.println("</head>"); client.println("<body>"); // Si on veut insérer dans la page web la valeur d’une tension analogique reçue par //la carte int resultat = analogRead (1) ; // lecture de la tension analogique sur A1 client.print ("<h1>"); client.print ("<table>"); client.print("<caption>Poids des déchets des habitants du batiment 1</caption>"); client.print ("<tr>"); client.print ("<th>Foyer 1</th>"); client.print ("<th>Foyer 2</th>"); client.print ("<th>Foyer 3</th>"); client.print ("</tr>"); client.print ("<tr>"); client.print ("ancienPoids1"); client.print ("ancienPoids2"); client.print ("ancienPoids3"); client.print ("</tr>"); client.print ("</table>"); client.print ("</h1>"); client.println("<br />"); client.print ("Site de Thomas"); client.println("<br />"); client.println("</body>"); client.println("</html>"); break; if (c == '\n') // voir note 3 { // début d’une nouvelle ligne currentLineIsBlank = true; } else if (c != '\r') { // Il y a un caractère sur la ligne courante currentLineIsBlank = false; } }// findu if (client.available()) }// finduwhile (client.connected()) delay(1); // laisse au navigateur client le temps de recevoir les données client.stop(); // coupe la connexion si le client s’est déconnecté } } } } void sendSMS(){ Serial.print("Message au numéro de portable:"); Serial.println(remoteNumber); // SMS text Serial.println ("ENVOYER"); Serial.println (); Serial.println ("Message:"); Serial.println (txtMsg); // envoyer le message sms.beginSMS (remoteNumber); sms.print(txtMsg); sms.endSMS(); Serial.println("\nCOMPLETE!\n"); }
Salut,
L'instanciation de Keypad n'a pas été corrigée
J'ai l'impression que ton problème vient d'une incompatibilité entre les librairies du module ethernet et celles du keypad...
Il a fallu modifier la librairie KeyPad pour corriger le problème (même si je n'ai pas testé la correction au final)
L'enum KeyState entrait en conflit avec une autre enum de la librairie ethernet, j'ai donc tenté corrigé ça.
J'ai mis l'énum KeyState, DANS la classe Key
Donc lorsque tu dois utiliser l'enum KeyState, il faut bien préciser qu'elle appartient à la classe Key. Par exemple :
Pareil lorsque tu passes cette enum en argument d'une fonction :Code:Key::KeyState keyState = Key::KeyState::IDLE; //c'était IDLE le problème
Dis moi si y a un soucis dans cette nouvelle librairieCode:void fct(Key::KeyState keyState) { //..... keyState = Key::KeyState::PRESSED; }
Dernière modification par sandrecarpe ; 14/04/2017 à 19h11.
J'ai changer la librarie keypad par la tienne mais toujours le même problème
Code:In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0, from C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:6: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:12:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1("1111"); // Le code du foyer 1 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:13:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2("2222"); // Le code du foyer 2 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:14:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3("3333"); // Le code du foyer 3 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void setup()': C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:116:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (gsmAccess.begin (PINNUMBER) == GSM_READY) ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void keypadEvent(KeypadEvent)': test_assemblage:142: error: 'PRESSED' was not declared in this scope case PRESSED: ^ exit status 1 'PRESSED' was not declared in this scope
mais attend je n'es pas trop bien compris tes 2 codes
(au niveau du keypad c'était pas ma partie donc je decouvre un peu ^^ (on est 3))
Salut,
Il faut corriger ton code comme je t'ai indiqué dans mon message précédent
Il faut rajouter Key::KeyState:: devant PRESSED ainsi que devant chaque autre élément de cette enum. Après ça ton code devrait fonctionner.
Regarde sur internet ce qu'est une enum en C++ si tu ne vois pas bien comment ça fonctionne
Dernière modification par sandrecarpe ; 15/04/2017 à 08h10.
je comprend pas très bien comment tu veux que je change le code
sa me fait plein d'erreurCode://Declaration de l'events keyPad void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case Key::KeyState::PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } }
Si tu nous montres pas les erreurs comment tu veux qu'on t'aide ?
l'erreur est en changeant le code comme précedemment estCode:In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0, from C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:6: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:12:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1("1111"); // Le code du foyer 1 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:13:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2("2222"); // Le code du foyer 2 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:14:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3("3333"); // Le code du foyer 3 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void setup()': C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:116:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (gsmAccess.begin (PINNUMBER) == GSM_READY) ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp: In constructor 'GSM3MobileMockupProvider::GSM3MobileMockupProvider()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp:44:12: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] msgExample="Hello#World"; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp: In member function 'int GSM3MobileMockupProvider::connectTCPServer(int, char*, int*)': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp:183:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] strcpy("192.168.1.1", localIP); ^ In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:34:0: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp: In constructor 'GSM3ShieldV1BandManagement::GSM3ShieldV1BandManagement(bool)': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:38:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[UNDEFINED]=""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:39:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[EGSM_MODE]="\"EGSM_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:40:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[DCS_MODE]="\"DCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:41:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[PCS_MODE]="\"PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:42:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[EGSM_DCS_MODE]="\"EGSM_DCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:43:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[GSM850_PCS_MODE]="\"GSM850_PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:44:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[GSM850_EGSM_DCS_PCS_MODE]="\"GSM850_EGSM_DCS_PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemCore.cpp:39:14: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char* __ok__="OK"; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemVerification.cpp: In member function 'String GSM3ShieldV1ModemVerification::getIMEI()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemVerification.cpp:64:20: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] String number(NULL); ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1SMSProvider.cpp: In member function 'void GSM3ShieldV1SMSProvider::beginSMSContinue()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1SMSProvider.cpp:68:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, ">")) ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp: In member function 'String GSM3ShieldV1ScanNetworks::getCurrentCarrier()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp:66:21: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] return String(NULL); ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp: In member function 'String GSM3ShieldV1ScanNetworks::getSignalStrength()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp:85:21: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] return String(NULL); ^ libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_3' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_4' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_5' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status exit status 1 Erreur de compilation pour la carte Arduino Ethernet
C'est le même code qu'avant ?
T'as cette erreur en mettant la nouvelle librairie ? Parce que j'ai l'impression que c'est pas la même chose
Tu fais ça avec l'IDE d'arduino?
L'erreur sans changer le code :
et en changeant avec ce code laCode:In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0, from C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:6: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:12:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1("1111"); // Le code du foyer 1 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:13:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2("2222"); // Le code du foyer 2 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:14:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3("3333"); // Le code du foyer 3 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void setup()': C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:116:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (gsmAccess.begin (PINNUMBER) == GSM_READY) ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void keypadEvent(KeypadEvent)': test_assemblage:142: error: 'PRESSED' was not declared in this scope case PRESSED: ^ exit status 1 'PRESSED' was not declared in this scope
j'ai cette erreurCode://Declaration de l'events keyPad void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case Key::KeyState::PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } }
J'ai bien changer la librarie avec celle que tu ma donnerCode:In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0, from C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:6: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:12:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1("1111"); // Le code du foyer 1 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:13:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2("2222"); // Le code du foyer 2 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:14:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3("3333"); // Le code du foyer 3 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino: In function 'void setup()': C:\Users\MrWorfi\Desktop\SIN\PROJET\test_assemblage\test_assemblage.ino:116:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (gsmAccess.begin (PINNUMBER) == GSM_READY) ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp: In constructor 'GSM3MobileMockupProvider::GSM3MobileMockupProvider()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp:44:12: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] msgExample="Hello#World"; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp: In member function 'int GSM3MobileMockupProvider::connectTCPServer(int, char*, int*)': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3MobileMockupProvider.cpp:183:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] strcpy("192.168.1.1", localIP); ^ In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:34:0: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp: In constructor 'GSM3ShieldV1BandManagement::GSM3ShieldV1BandManagement(bool)': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:38:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[UNDEFINED]=""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:39:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[EGSM_MODE]="\"EGSM_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:40:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[DCS_MODE]="\"DCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:41:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[PCS_MODE]="\"PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:42:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[EGSM_DCS_MODE]="\"EGSM_DCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:43:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[GSM850_PCS_MODE]="\"GSM850_PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1BandManagement.cpp:44:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] quectelStrings[GSM850_EGSM_DCS_PCS_MODE]="\"GSM850_EGSM_DCS_PCS_MODE\""; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemCore.cpp:39:14: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char* __ok__="OK"; ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemVerification.cpp: In member function 'String GSM3ShieldV1ModemVerification::getIMEI()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ModemVerification.cpp:64:20: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] String number(NULL); ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1SMSProvider.cpp: In member function 'void GSM3ShieldV1SMSProvider::beginSMSContinue()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1SMSProvider.cpp:68:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, ">")) ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp: In member function 'String GSM3ShieldV1ScanNetworks::getCurrentCarrier()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp:66:21: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] return String(NULL); ^ C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp: In member function 'String GSM3ShieldV1ScanNetworks::getSignalStrength()': C:\Program Files (x86)\Arduino\libraries\GSM\src\GSM3ShieldV1ScanNetworks.cpp:85:21: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null] return String(NULL); ^ libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_3' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_4' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin): In function `GSM3SoftSerial::spaceAvailable()': (.text+0x0): multiple definition of `__vector_5' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status exit status 1 Erreur de compilation pour la carte Arduino Ethernet
Il semble qu'il y ai des conflits entre la librairie software serial et d'autres (d'après une rapide recherche sur internet)
Essaie plutôt d'utiliser la liaison série matériel pour communiquer avec ton module
Ça peut être embêtant mais j'ai pas vu d'autre solution
Dernière modification par sandrecarpe ; 17/04/2017 à 18h55.
J'ai essayer en faisant un autre programme avec juste l'histoire du password
et la seul erreur que j'ai est celle laCode:#include <Password.h> #include <Keypad.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); Password password1( "1111" ); // Le code du foyer 1 Password password2( "2222" ); // Le code du foyer 2 Password password3( "3333" ); // Le code du foyer 3 const byte ROWS = 4; // 4 lignes const byte COLS = 3; // 3 colonnes // Position des touches char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {0,1,7,8}; // Pin utilisés pour les lignes byte colPins[COLS] = {A1,A2,A3}; // Pin utilisés pour les colonnes // Creation du Keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); const int verrou = A4; // le verrou est sur la broche A4 void setup(){ pinMode(verrou, OUTPUT); digitalWrite(verrou,LOW); Serial.begin(9600); keypad.addEventListener(keypadEvent); //ajout d'un event sur le keypad } void loop(){ keypad.getKey(); // Appel de l'event du keyPad } //Declaration de l'events keyPad void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case Key::KeyState::PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } } void checkPassword(){ if (password1.evaluate()){ // Si le code du foyer1 est bon Serial.println("Foyer 1"); password1.reset(); digitalWrite(verrou, HIGH); } else // SI le code du foyer 1 est faux { if (password2.evaluate()){ // Si le code du foyer2 est bon Serial.println("Foyer 2"); password2.reset(); digitalWrite(verrou, HIGH); } else // SI le code du foyer 1 est faux { if (password3.evaluate()){ // Si le code du foyer3 est bon Serial.println("Foyer 3"); password3.reset(); digitalWrite(verrou, HIGH); } else // SI le code du foyer 3 est faux { Serial.println("Faux"); password3.reset(); digitalWrite(verrou,LOW); } } } }
Code:C:\Users\MrWorfi\Desktop\SIN\PROJET\programme finis\Enzo-finis_2\Enzo-finis_2.ino:7:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1( "1111" ); // Le code du foyer 1 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\programme finis\Enzo-finis_2\Enzo-finis_2.ino:8:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2( "2222" ); // Le code du foyer 2 ^ C:\Users\MrWorfi\Desktop\SIN\PROJET\programme finis\Enzo-finis_2\Enzo-finis_2.ino:9:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3( "3333" ); // Le code du foyer 3
Ce n'est pas des erreurs mais des avertissements.
Tu peux essayer d'y remédier en créant des variables de type char* (pour stocker t'es mots de passe) avant de les passer en paramètre à tes objets Password
Comment je peut ecrire le code pour y remedier ?
Pour les avertissements ? Comme dit dans mon message précédent.
Au lieu de donner directement le mot de passe à ton objet Password, tu stockes dans une variable char* ton mot de passe, et tu le donnes en paramètre à ton objet Password
Pour ton problème initial, vérifie que tu n'utilise pas une pin qu'à besoin un de tes shields
http://playground.arduino.cc/Main/ShieldPinUsage
En lancant le programme sur un ordi avec une version antérieru d'arduino j'ai eu d'autre erreur et avec la library password de base
j'ai eu cette erreur
avec ce codeCode:In file included from test_assemblage.ino:2: C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: ISO C++ forbids initialization of member 'OFFSET' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: making 'OFFSET' static C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: ISO C++ forbids in-class initialization of non-const static member 'OFFSET' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: ISO C++ forbids initialization of member 'SCALE' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: making 'SCALE' static C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: ISO C++ forbids in-class initialization of non-const static member 'SCALE' In file included from C:\Users\MrWorfi\Documents\Arduino\libraries\Keypad/Keypad.h:36, from test_assemblage.ino:8: C:\Users\MrWorfi\Documents\Arduino\libraries\Keypad/utility/Key.h:46: error: conflicting declaration 'IDLE' C:\Program Files (x86)\Arduino\libraries\GSM/GSM3MobileAccessProvider.h:37: error: 'IDLE' has a previous declaration as 'GSM3_NetworkStatus_t IDLE'
et avec ta librarieCode:#include <Password.h> #include <HX711.h> #include <LiquidCrystal.h> #include <SoftwareSerial.h> #include <Ethernet.h> #include <GSM.h> #include <String.h> #include <Keypad.h> LiquidCrystal lcd(12,11,5,4,3,2); Password password1("123"); // Le code du foyer 1 Password password2("456"); // Le code du foyer 2 Password password3("789"); // Le code du foyer 3 const byte ROWS = 4; // 4 lignes const byte COLS = 3; // 3 colonnes // Position des touches char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {0,1,7,8}; // Pin utilisés pour les lignes byte colPins[COLS] = {A1,A2,A3}; // Pin utilisés pour les colonnes // Creation du Keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); const int verrou = A4; // le verrou est sur la broche A4 //////////////////////////////////////////////////////////////////////////////////////// // A (void poids) #define calibration_factor //This value is obtained using the SparkFun_HX711_Calibration sketch int nouveauPoids ; int ancienPoids ; #define DOUT A4 #define CLK A5 HX711 scale(DOUT, CLK); ////////////////////////////////////////////////////////////////////////////////////////////// // T (void remplissage) const int BP_remplie = 0; //le BP broche 0 int broche = 9 ;// On déclare le nom de la broche sur laquelle sort le signal PWM // Site web (void site) // On recopie l’adresse MAC se trouvant au dos de la carte byte mac[ ] ={0x90, 0xA2, 0xDA, 0x0D, 0x75, 0x2A} ; // On définit le port par lequel se fera la communication EthernetServer server(80); // voir note 1 //GSM (void sms) #define PINNUMBER "" // initialiser l'instance de la bibliothèque GSM gsmAccess; // inclure un paramètre 'vrai' pour le débogage activé GSM_SMS sms; // char tableau du numéro de téléphone pour envoyer des SMS // change le numéro 1-212-555-1212 en un nombre // vous avez accès à char remoteNumber [20] = "12125551212"; // char tableau du message char txtMsg[200]="Test"; /////////////////////////////////////////////////////////////////////////////////////////////////// void setup(){ Serial.begin(9600); ///////////////////////////////////////////////////////////////////////////////////////////////////// // ENZO (void keypad) pinMode(verrou, OUTPUT); digitalWrite(verrou,LOW); keypad.addEventListener(keypadEvent); //ajout d'un event sur le keypad /////////////////////////////////////////////////////////////////////////////////////////////////////// // ACHOUR (void poids) Serial.println("Poubelle Collective"); scale.set_scale(47170); //This value is obtained by using the SparkFun_HX711_Calibration sketch scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0 Serial.println("Readings:"); ////////////////////////////////////////////////////////////////////////////////////////////////////////// // Thomas (void remplissage) pinMode (broche, OUTPUT); // cette broche est une sortie pinMode(BP_remplie, INPUT); // BP est une broche d'entree lcd.begin(16,2); analogWrite (broche, 3) ; // nbre = 128 rapport cyclique 50% int remplie = digitalRead(BP_remplie); // Lecture de l'entree BP et sockage du résultats dans remplie // Site web (void site) // On initialise la connexion Ethernet et le serveur // en mode DHCP Ethernet.begin(mac); server.begin(); Serial.print("le serveur est à l'adresse "); Serial.println(Ethernet.localIP()); //GSM (void sms) // initialiser les communications série Serial.println ("SMS Messages Sender"); // état de connexion boolean notConnected = true; // Démarrer GSM SHIELD // Si votre carte SIM a un NIP, passez-le en tant que paramètre de begin () entre guillemets while (notConnected) { if (gsmAccess.begin (PINNUMBER) == GSM_READY) notConnected = false; else { Serial.println ("Non connecté"); delay(1000); } } Serial.println ("initialisé par GSM"); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } void loop(){ site(); // void site if (BP_remplie,HIGH){ (verrou==LOW); } if (verrou,LOW){ // Si le verrou est ouvert remplissage(); // void remplissage keypad.getKey(); // Appel de l'event du keyPad } } //Declaration de l'events keyPad void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } } void checkPassword(){ if (password1.evaluate()){ // Si le code du foyer1 est bon Serial.println("Foyer 1"); password1.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids1(); // on execute le programme void poids1 } else // SI le code du foyer 1 est faux { if (password2.evaluate()){ // Si le code du foyer2 est bon Serial.println("Foyer 2"); password2.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids2(); // on execute le programme void poids2 } else // SI le code du foyer 1 est faux { if (password3.evaluate()){ // Si le code du foyer3 est bon Serial.println("Foyer 3"); password3.reset(); // le password revient a 0 digitalWrite(verrou, HIGH); // Le verrou s'ouvre delay(1000); // delais poids3(); // on execute le programme void poids1 } else // SI le code du foyer 3 est faux { Serial.println("Faux"); password3.reset(); digitalWrite(verrou,LOW); } } } } void poids1(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); delay(5000); } void poids2(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); } void poids3(){ Serial.print("Masse: "); Serial.print(scale.get_units(), 1.01); //scale.get_units() returns a float Serial.print(" Kg"); //You can change this to kg but you'll need to refactor the calibration_factor Serial.println(); delay(5000); ancienPoids = scale.get_units(), 1.01; lcd.setCursor(0,0); //affichagage du poids sur le lcd lcd.print("Poser: "); lcd.setCursor(7,0); lcd.print(ancienPoids); lcd.setCursor(10,0); lcd.print("kg"); delay(5000); nouveauPoids = ancienPoids - ancienPoids; lcd.setCursor(0,1); //affichagage du poids sur le lcd lcd.print("Mesure: "); lcd.setCursor(8,1); lcd.print(nouveauPoids); lcd.setCursor(11,1); lcd.print("kg"); } void remplissage(){ { int remplie = digitalRead(BP_remplie); // Lecture de l'entree BP et sockage du résultats dans remplie if(remplie==LOW) // Si il y a rien dans la poubelle (aucun déchets) { lcd.setCursor(0,0); lcd.print("Poubelle"); lcd.setCursor(0,1); lcd.print("non remplie"); delay(1000); lcd.clear(); } else // SI la poubelle est pleine { lcd.setCursor(0,0); lcd.print("Poubelle"); lcd.setCursor(0,1); lcd.print("remplie"); delay(1000); lcd.clear(); sendSMS(); // void sendSMS } } } void site(){ { EthernetClient client = server.available(); // écoute des clients Ethernet eventuels (= 1 ou 0) { // Le bloc suivant sera exécuté si quelqu’un a saisi l’adresse IP de la carte Arduino sur son navigateur if (client) { Serial.println("nouveau client"); boolean currentLineIsBlank = true; // voir note 2 while (client.connected())//tant qu'un client est connecté { if (client.available()) { char c = client.read();// lecture d’un octet provenant // du client et stockage dans c Serial.write(c); if (c == '\n' &¤tLineIsBlank) // voir note 2 // Envoi de la page web client.println("<!DOCTYPE html>"); client.println("<html>"); client.println("<head>"); client.println("<title>EcoTrash</title>"); client.println("<STYLE type=text/css>"); client.println("h1 {border-width : 1; border: solid; text-align: center; background-color: blue;}"); client.println("table{border-collapse: collapse;} th{border: 1px solid black;}"); client.println("</STYLE>"); client.println("</head>"); client.println("<body>"); // Si on veut insérer dans la page web la valeur d’une tension analogique reçue par //la carte client.print ("<h1>"); client.print ("<table>"); client.print("<caption>Poids des déchets des habitants du batiment 1</caption>"); client.print ("<tr>"); client.print ("<th>Foyer 1</th>"); client.print ("<th>Foyer 2</th>"); client.print ("<th>Foyer 3</th>"); client.print ("</tr>"); client.print ("<tr>"); client.print ("ancienPoids1"); client.print ("ancienPoids2"); client.print ("ancienPoids3"); client.print ("</tr>"); client.print ("</table>"); client.print ("</h1>"); client.println("<br />"); client.print ("Site de Thomas"); client.println("<br />"); client.println("</body>"); client.println("</html>"); break; if (c == '\n') // voir note 3 { // début d’une nouvelle ligne currentLineIsBlank = true; } else if (c != '\r') { // Il y a un caractère sur la ligne courante currentLineIsBlank = false; } }// findu if (client.available()) }// finduwhile (client.connected()) delay(1); // laisse au navigateur client le temps de recevoir les données client.stop(); // coupe la connexion si le client s’est déconnecté } } } } void sendSMS(){ Serial.print("Message au numéro de portable:"); Serial.println(remoteNumber); // SMS text Serial.println ("ENVOYER"); Serial.println (); Serial.println ("Message:"); Serial.println (txtMsg); // envoyer le message sms.beginSMS (remoteNumber); sms.print(txtMsg); sms.endSMS(); Serial.println("\nCOMPLETE!\n"); }
Code:In file included from test_assemblage.ino:2: C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: ISO C++ forbids initialization of member 'OFFSET' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: making 'OFFSET' static C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:16: error: ISO C++ forbids in-class initialization of non-const static member 'OFFSET' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: ISO C++ forbids initialization of member 'SCALE' C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: making 'SCALE' static C:\Users\MrWorfi\Documents\Arduino\libraries\HX711-master/HX711.h:17: error: ISO C++ forbids in-class initialization of non-const static member 'SCALE' test_assemblage.ino: In function 'void keypadEvent(KeypadEvent)': test_assemblage:148: error: 'Key::KeyState' is not a class or namespace
et je rajoute saCode:case Key::KeyState::PRESSED:
Chez moi, avec l'IDE Arduino, ce code compile.
Code:#include <Keypad.h> #include <Password.h> #include <GSM.h> #include <Ethernet.h> const byte ROWS = 4; // 4 lignes const byte COLS = 3; // 3 colonnes // Position des touches const char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {0,1,7,8}; // Pin utilisés pour les lignes byte colPins[COLS] = {A1,A2,A3}; // Pin utilisés pour les colonnes Keypad keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); Password password1("123"); // Le code du foyer 1 Password password2("456"); // Le code du foyer 2 Password password3("789"); // Le code du foyer 3 void setup() { Serial.begin(9600); keypad.addEventListener(keypadEvent); } void loop() { keypad.getKey(); } void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case Key::KeyState::PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey){ case '*': //checkPassword(); break; case '#': password1.reset(); password2.reset(); password3.reset(); break; default: password1.append(eKey); password2.append(eKey); password3.append(eKey); } } }
Avec quelques warnings :
Cliquez pour afficher
Code:In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0, from C:\Users\anthony\Desktop\test\test.ino:3: C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration [enabled by default] typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; ^ C:\Users\anthony\Desktop\test\test.ino:21:25: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password1("123"); // Le code du foyer 1 ^ C:\Users\anthony\Desktop\test\test.ino:22:25: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password2("456"); // Le code du foyer 2 ^ C:\Users\anthony\Desktop\test\test.ino:23:25: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] Password password3("789"); // Le code du foyer 3 ^ Le croquis utilise 13*536 octets (41%) de l'espace de stockage de programmes. Le maximum est de 32*256 octets. Les variables globales utilisent 1*077 octets (52%) de mémoire dynamique, ce qui laisse 971 octets pour les variables locales. Le maximum est de 2*048 octets.
Merci !
Il a reussis a faire ce qu'il voulais avec les mot de passe on verra au moment de l'assemblage de tous les programme de chacun