Send SMS and keypad invoer samenvoegen wil niet

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 21 Jun 2016, 12:48

Ik heb dit net gecompileerd onder 1.6.9 onder Eclipse. Moest wel wat truken voor die keypad en password. Maar dit gaat goed. Het lijkt erop dat jij je omgevingen niet helemaal op orde hebt.
cpp code
//#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" );

#define PINNUMBER "0000"

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

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 );
//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() {
//
// om ff te compileren dit gefaked
//
// char key = keypad.getKey();
#define NO_KEY '0'
char key = 'A';
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() {
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++;
}
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 21 Jun 2016, 12:49

En anders moet je maar ff die links geven voor keypad en password. Of ze even attachen.
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 » 21 Jun 2016, 12:51

Ik kan bovenstaande niet compileren met arduino software 1.6.7. gewwon gedwonload van arduino.cc
Bijlagen
libraries.zip
(22.91 KiB) 308 keer gedownload

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 21 Jun 2016, 13:01

Bedankt. Ik moet nu weg, maar maar het zit hem in allerlei bijtende situaties tussen keypad en GSM. Maar nu ff geen tijd. o.a. wordt IDLE in beide gedeclareerd en dat is de goden verzoeken
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 » 21 Jun 2016, 13:07

als jij zou willen kijken ernaar, en mij de juiste oplossing kan geven ben ik je eeuwig dankbaar. Eventueel mag je me ook mailen, ik zal mijn mail op de pb zetten.

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 21 Jun 2016, 16:04

De Keypad library als ook de GSM library gebruiken beide sleutelwoord IDLE. Ik heb de keypad library aangepast dat deze een eigen definitie gebruikt voor IDLE nl IDLE_KEY. Bijgaand de zip met de aangepaste library. Bij compileert ie nu volledig.
Bijlagen
Keypad.zip
Nieuwe keypad library
(18.02 KiB) 304 keer gedownload
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 » 22 Jun 2016, 12:13

Hij compileert hem idd nu volledig. Echter nog 1 klein probleempje...

Ik heb de arduino met de gsm shield aangesloten op een mega 2560. Dit hield in dat ik pin 2 niet mocht aansluiten en vervolgens pin 10 met pin 2 moest connecten, dat heb ik gedaan. Maar nu komt hij niet verder dan: SMS Messages Sender
in de serial.

heb je enig idee, hoe ik dat kan oplossen?

cpp code
#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" );

#define PINNUMBER "0000"

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

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 );
//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() {
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++;
}
}
}
}

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor nicoverduin » 22 Jun 2016, 14:31

geen idee
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 » 22 Jun 2016, 16:53

Kan het zijn dat hij doordat jij de naams wijziging hebt gebracht in de keypad library, dat hij nu de gsm library problemen geeft???
Oorspronkelijk zal hij in de setup namelijk zoeken naar het telefoon netwerk en zich daar in aanmelden, en dan krijg ik op het scherm, waiting for messages te zien.. Wat dus nu niet meer gebeurt.

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

Re: Send SMS and keypad invoer samenvoegen wil niet

Berichtdoor christiaan » 22 Jun 2016, 17:00

na een kleine wijziging in het board zelf, en opnieuw aansluiten op de pc werkt het nu.
Echter nog 1 dingetje wat niet werkt is het keypad.

Of hij staat op de verkeerder plek in de code, of hij reageert niet meer. Maar het is de bedoeling dat op het moment dat hij vraagt om een mobiel nummer in te voeren, of het bericht. Dat ik het via het keypad kan regelen.

VorigeVolgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten