Send SMS and keypad invoer samenvoegen wil niet

algemene C code
Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 31 Mei 2016, 16:01

Hallo allemaal,

Ik heb onderstaan de 2 sketches die perfect naast elkaar werken. Met de 1e code (send sms) kan ik smsjes versturen met de inhoud die ik in de serial invoer.
Met de 2e code (keypad) kan ik met mijn 4x4 membrane de invoer in Serial zetten en met de letter 'B' op het keypad een new line starten.

Echter zodra ik ze samenvoeg tot 1 project geeft hij gelijk de fout bij het compileren. Hij geeft aan dat ik op mijn pc op 2 plekken dezelfde library heb staan, en daarna welke hij daadwerkelijk gebruikt. Krijg geen foutmeldingen of error code's. Wie kan me helpen, of krijgt de 2 losse projecten wel correct samengevoegd tot 1.

Het sms shield 2 zit aangesloten op een Arduino Mega (waarbij ik de instructie heb opgevolgd van internet om pin 2 een beetje te verbuigen en daarna pin 10 met pin 2 heb geconnect.)

cpp code
/*
SMS sender

This sketch, for the Arduino GSM shield,sends an SMS message
you enter in the serial monitor. Connect your Arduino with the
GSM shield and SIM card, open the serial monitor, and wait for
the "READY" message to appear in the monitor. Next, type a
message to send and press "return". Make sure the serial
monitor is set to send a newline when you press return.

Circuit:
* GSM shield
* SIM card that can send SMS

created 25 Feb 2012
by Tom Igoe

This example is in the public domain.

http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS

*/

// Include the GSM library
#include <GSM.h>

#define PINNUMBER "0000"

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup() {
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
delay(1000);
}
}

Serial.println("GSM initialized");
}

void loop() {

Serial.print("Enter a mobile number: ");
char remoteNum[20]; // telephone number to send sms
readSerial(remoteNum);
Serial.println(remoteNum);

// sms text
Serial.print("Now, enter SMS content: ");
char txtMsg[200];
readSerial(txtMsg);
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNum);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

/*
Read input serial
*/
int readSerial(char result[]) {
int i = 0;
while (1) {
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '\n') {
result[i] = '\0';
Serial.flush();
return 0;
}
if (inChar != '\r') {
result[i] = inChar;
i++;
}
}
}
}



cpp code
#include <Keypad.h>
#include <Password.h>

String newPasswordString; //hold the new password
char newPassword[8]; //charater string of newPasswordString

//initialize password to 1234
//you can use password.set(newPassword) to overwrite it
Password password = Password( "39127405" );

byte maxPasswordLength = 8;
byte currentPasswordLength = 0;
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

//Define the keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {14,15,16,17}; //connect to row pinouts (2,3,4,5)

// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {18,19,20,21}; //connect to column pinouts (6,7,8,9)

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
Serial.begin(9600);
}

void loop(){
char key = keypad.getKey();
if (key != NO_KEY){
switch (key){
case 'A': break;
case 'B': Serial.println(); break;
case 'C': break;
case 'D': break;
case '#': checkPassword(); break;
case '*': resetPassword(); break;
default: processNumberKey(key);
}
}
}

void processNumberKey(char key) {
Serial.print(key);
}

void checkPassword() {
if (password.evaluate()){
Serial.println(" OK.");
} else {
Serial.println(" Wrong passwowrd!");
}
resetPassword();
}

void resetPassword() {
password.reset();
currentPasswordLength = 0;
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 31 Mei 2016, 17:08

Zet ff ALLE foutboodschappen hier die je krijgt. EN de sketch die je uiteindelijk probeert de compileren. Losse sketches heb ik niet zoveel aan.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 01 Jun 2016, 12:55

hierbij de gehele code die ik probeer samen te voegen:

cpp code
// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

#include <Keypad.h>
#include <Password.h>
#include <GSM.h> // Include the GSM library
#include <TFT.h> // Arduino LCD library
#include <SPI.h> // LCD Screen

//initialize password to 1234
//you can use password.set(newPassword) to overwrite it
Password password = Password( "12345678" );

byte maxPasswordLength = 8;
byte currentPasswordLength = 0;
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

#define PINNUMBER "0000"

//Define the keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {14,15,16,17}; //connect to row pinouts (2,3,4,5)

// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {18,19,20,21}; //connect to column pinouts (6,7,8,9)

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
//Pin definition for the mega
#define cs 47
#define dc 48
#define rst 49
TFT TFTscreen = TFT(cs, dc, rst);

void setup(){
Serial.begin(9600);
TFTscreen.begin();
// clear the screen with a black background
TFTscreen.background(0, 0, 0);

// write the static text to the screen
// set the font color to white
TFTscreen.stroke(255, 255, 255);
// set the font size
TFTscreen.setTextSize(3);
// write the text to the top left corner of the screen
TFTscreen.text("Havik", 0, 0);
TFTscreen.text("Scouts", 15, 40);
TFTscreen.text("SMS bom!", 0, 80);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
delay(1000);
}
}

Serial.println("GSM initialized");
clearTftScreen();
}

void loop(){
char key = keypad.getKey();
if (key != NO_KEY){
switch (key){
case 'A': break;
case 'B': break;
case 'C': break;
case 'D': break;
case '#': checkPassword(); break;
case '*': resetPassword(); break;
default: processNumberKey(key);
}
}
Serial.print("Enter a mobile number: ");
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("Enter a", 0, 0);
TFTscreen.text("mobile number...", 0, 40);
char remoteNum[20]; // telephone number to send sms
readSerial(remoteNum);
Serial.println(remoteNum);

// sms text
Serial.print("Now, enter SMS content: ");
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("Enter the", 0, 0);
TFTscreen.text("SMS content...", 0, 40);
char txtMsg[200];
readSerial(txtMsg);
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("SENDING", 0, 0);
TFTscreen.text("Message:", 0, 40);
TFTscreen.text(txtMsg, 0, 40);

// send the message
sms.beginSMS(remoteNum);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("Sending SMS", 0, 0);
TFTscreen.text("completed!", 0, 40);
delay(2000);
clearTftScreen();
}

void processNumberKey(char key) {
Serial.print(key);
currentPasswordLength++;
password.append(key);
if (currentPasswordLength == maxPasswordLength) {
checkPassword();
}
}

void checkPassword() {
if (password.evaluate()){
Serial.println(" OK.");
} else {
Serial.println(" Wrong passwowrd!");
}
resetPassword();
}

void resetPassword() {
password.reset();
currentPasswordLength = 0;
}

void clearTftScreen() {
setColor1(0, 0, 255); // blue
setColor2(0, 0, 0); // Off
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("Waiting for", 0, 0);
TFTscreen.text("messages...", 0, 40);
}

/*
Read input serial
*/
int readSerial(char result[]) {
int i = 0;
while (1) {
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '\n') {
result[i] = '\0';
Serial.flush();
return 0;
}
if (inChar != '\r') {
result[i] = inChar;
i++;
}
}
}
}


En hierbij de log:
Code: Alles selecteren
In file included from C:\Program Files (x86)\Arduino\libraries\TFT\src/TFT.h:36:0,

                 from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:4:

C:\Program Files (x86)\Arduino\libraries\TFT\src/utility/Adafruit_GFX.h:60:3: warning: #warning "The SD library was not found. loadImage() and image() won't be supported." [-Wcpp]

  #warning "The SD library was not found. loadImage() and image() won't be supported."

   ^

In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileNetworkProvider.h:37:0,

                 from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileClientService.h:37,

                 from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:42,

                 from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:3:

C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileAccessProvider.h:37:36: error: redeclaration of 'IDLE'

 enum GSM3_NetworkStatus_t { ERROR, IDLE, CONNECTING, GSM_READY, GPRS_READY, TRANSPARENT_CONNECTED, OFF};

                                    ^

In file included from C:\Users\Gebruiker\Documents\Arduino\libraries\Keypad\src/Keypad.h:36:0,

                 from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:1:

C:\Users\Gebruiker\Documents\Arduino\libraries\Keypad\src/Key.h:41:15: note: previous declaration 'KeyState IDLE'

 typedef enum{ IDLE, PRESSED, HOLD, RELEASED } KeyState;

               ^

In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0,

                 from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.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\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:9:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 Password password = Password( "12345678" );

                                          ^

C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino: In function 'void setup()':

C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:71:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if (gsmAccess.begin(PINNUMBER) == GSM_READY) {

                                  ^

Meerdere bibliotheken gevonden voor "Keypad.h"
Gebruikt: C:\Users\Gebruiker\Documents\Arduino\libraries\Keypad
Niet gebruikt: C:\Program Files (x86)\Arduino\libraries\Keypad
Meerdere bibliotheken gevonden voor "GSM.h"
Gebruikt: C:\Program Files (x86)\Arduino\libraries\GSM
Niet gebruikt: C:\Program Files (x86)\Arduino\libraries\GSM-GPRS-GPS-Shield-GSMSHIELD
exit status 1
Fout bij compileren.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 01 Jun 2016, 15:45

Je hebt de bibliotheken die je gebruikt op meerdere plaatsten staan. En in jouw Arduino sketch folder (in libraries) EN in de installatie folder. Upgrade uitgevoerd?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 01 Jun 2016, 16:10

Ja, maar als ik de programma's los compileer dan is er geen probleem en wordt het zonder problemen geüpload naar de arduino mega

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 01 Jun 2016, 17:32

Die programma's gebruiken toch niet alle libraries die je daar hebt tegelijkertijd? Ik weet niet wat zij allemaal aanroepen of hoe ze opgezet zijn. Ga er vanuit dat de ontwikkelaars van die libs daar geen rekening mee hebben gehouden. Een andere TS had ook allerlei problemen doordat er nog een zip file in zijn library folder stond en daarin allerlei voorbeeld programma's. Die werden vrolijk meegenomen. Maar ik zit in ieder geval in de stand dat het geen zin heeft om naar een "spook" te zoeken terwijl er nog allerlei invloeden zijn die een reden kunnen veroorzaken.
Die eerste waarschuwingen die je krijgt komen van een veel oudere variant van de IDE. Dus dat kan ook de reden zijn.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 01 Jun 2016, 19:43

En wat zijn de stappen die ik moet gaan nemen dan???

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 01 Jun 2016, 20:27

Uitsluiten. Dus
eerst alle dubbele libraries eruit halen
Kijken of er in die libraries geen andere sketches zitten die eigenlijk in de folder Examples horen
Kijken of er geen zip files in zitten met evt. dezelfde libraries
Die waarschuwingen zouden niets uit hoeven maken
Evt. naar een vroegere versie van de IDE gaan
De feitelijke libraries doorlopen of er niets vreemd in zit. Als je een .h file hebt zal het niet de eerste keer zijn dat de auteur ondanks zijn goede bedoelingen vergeten is deze file te beginnen met:
cpp code
#ifndef NAAM_VAN_INCLUDE_FILE_H
#define NAAM_VAN_INCLUDE_FILE_H

dan alle code
en aan het einde

#endif

Gevolg is vaak dat een .h bestand 2x verwerkt wordt met alle gevolgen van dien.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 14 Jun 2016, 14:48

Ben net weer bezig geweest, krijg nog steeds een error:

cpp code
In file included from C:\Program Files (x86)\Arduino\libraries\TFT\src/TFT.h:36:0,

from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:4:

C:\Program Files (x86)\Arduino\libraries\TFT\src/utility/Adafruit_GFX.h:60:3: warning: #warning "The SD library was not found. loadImage() and image() won't be supported." [-Wcpp]

#warning "The SD library was not found. loadImage() and image() won't be supported."

^

In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileNetworkProvider.h:37:0,

from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileClientService.h:37,

from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:42,

from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:3:

C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM3MobileAccessProvider.h:37:36: error: redeclaration of 'IDLE'

enum GSM3_NetworkStatus_t { ERROR, IDLE, CONNECTING, GSM_READY, GPRS_READY, TRANSPARENT_CONNECTED, OFF};

^

In file included from C:\Program Files (x86)\Arduino\libraries\Keypad/Keypad.h:36:0,

from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:1:

C:\Program Files (x86)\Arduino\libraries\Keypad/utility/Key.h:46:15: note: previous declaration 'KeyState IDLE'

typedef enum{ IDLE, PRESSED, HOLD, RELEASED } KeyState;

^

In file included from C:\Program Files (x86)\Arduino\libraries\GSM\src/GSM.h:46:0,

from C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.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\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:9:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

Password password = Password( "12345678" );

^

C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino: In function 'void setup()':

C:\Users\Gebruiker\Documents\Arduino\Zoka_Bom_2\Zoka_Bom_2.ino:71:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if (gsmAccess.begin(PINNUMBER) == GSM_READY) {

^

exit status 1
Fout bij compileren.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 14 Jun 2016, 14:56

De SD library is een standaard library van de Arduino. Dus ben je soms iets te uitvoerig bezig geweest met de schoning?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten