Ciao a tutti,
ho un Arduino Mega 2560 al quale ho collegato il modulo GSM con SIM900 della Seedstudio e lo utilizzo con queste librerie Google Code Archive - Long-term storage for Google Code Project Hosting. senza problemi in modalità HardwareSerial.
Avevo costruito una schedina con due PCF8574 per pilotare tramite I2C un LCD 16x2 e una KEYPAD a matrice 4x4, l'avevo testata su un Arduino2009 e funzionava, poi per esigenze ho cambiato Arduino senza testarla.
Una volta impostato il tutto per far funzionare la shield GSM ho collegato SDA e SCL ma niente non funziona, allora ho provato a collegare direttamente ad Arduino sia la KEYPAD che LCD ma sopresa !!!! NON FUNZIONANO o meglio......mi spiego...... se carico il codice di esempio della keypad funziona regolarmente ma se lo integro al codice che uso per il GSM ho un ritardo pazzesco e qualche tasto sembra non funzionare.......stessa prova con LCD solo il codice di esempio di LiquidCrystal tutto ok se integro il codice GSM per stampare sul LCD non parte piu niente ne lcd ne la gsm.
il codice GSM che uso è il seguente, senza la parte della KEYPAD
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Keypad.h>
#include "sms.h"
#include "sim900.h"
#include "call.h"
SMSGSM sms;
CallGSM call;
char position;
char phone_number[20];
char sms_text[160];
boolean started=false;
byte stat=0;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {37, 36, 35, 34};
byte colPins[COLS] = {33, 32, 31, 30};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(9600);
Serial.println("GSM Shield testing.");
if (gsm.begin(9600)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
};
void loop()
{
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
//contolla gli sms ed esegue
position = sms.IsSMSPresent(SMS_ALL);
if (position) {
sms.GetSMS(position, phone_number, sms_text, 160);
Serial.println(sms_text);
sms.DeleteSMS(position); }
//controlla chiamate in arrivo e le interrompe
stat=call.CallStatus();
if(stat==CALL_INCOM_VOICE){
call.HangUp();
delay(2000); }
delay(1000);
};
Avete una minima idea ???? perche io non ne ho !!!!!
GRAZIE