Casella di testo
// Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for
// RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
#include <SoftwareSerial.h>
#include <SevenSegment.h>
#define DIM 51 // This pin turns off the display when set LOW
#define CLK 53 // This is the clock pin
#define DATA 52 // marrone
#define MAXDIGITS 2 // number of display digits
SevenSegment seg = SevenSegment(DATA,CLK,DIM,MAXDIGITS);
SoftwareSerial GSerial(10,11); // RX, TX
//SoftwareSerial GsmSerial(12,13);
SoftwareSerial GsmSerial(62, 63);
char gsm_char=0;
int gsm_int=0;
String stringOne;
byte arrivato = 0;
long valore_intero;
//byte lista_colpi [10];
//byte indice_lista_colpi = 0;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
Serial.println("ciao");
GsmSerial.begin(9600);
GsmSerial.print("AT\r");
chiama_e_riattacca();
// invio_messaggio("hh");
// set the data rate for the SoftwareSerial port
GSerial.begin(9600);
delay(1000);
stringOne = String("");
digitalWrite(DIM, 1);
seg.displayNum(1,0,0); // display the current value with 1 decimal place
digitalWrite(DIM, 0);
}
void loop() // run over and over
{
int numero1;
if (GSerial.available()) {
// String inString = GSerial.readStringUntil('\n');
gsm_char = GSerial.read();
Serial.print(gsm_char);
if (gsm_char != ',' && arrivato == 0)
{
stringOne += gsm_char;
Serial.println(stringOne);
}
else
{
if (arrivato == 0) {
gsm_int = stringToNumber(stringOne);
Serial.println("numero");
Serial.println(gsm_int);
seg.displayNum(gsm_int,0,0);
// indice_lista_colpi = indice_lista_colpi + 1;
// lista_colpi [indice_lista_colpi] = gsm_int;
if (gsm_int > 17) {
invio_messaggio("fddf");
}
}
arrivato = 1;
}
}
else
{
arrivato = 0;
stringOne = String("");
}
}
int stringToNumber(String thisString) {
int i, value, length;
length = thisString.length();
char blah[(length+1)];
for(i=0; i<length; i++) {
blah[i] = thisString.charAt(i);
}
blah[i]=0;
value = atoi(blah);
return value;
}
void invio_messaggio(String thisString) {
GsmSerial.print("AT\r"); //Send test command
delay(100);
GsmSerial.print("AT+CMGF=1\r"); //Set text mode.
delay(100);
//Send sms!
GsmSerial.print("AT+CMGS=+393938501634\r"); //AT command to send SMS
delay(100);
GsmSerial.print(thisString); //Print the message
delay(100);
GsmSerial.print("\x1A"); //Send it ascii SUB
}
void chiama_e_riattacca() {
delay(1000);
GsmSerial.println("ATD+3939334\r"); //fa una telefonata
delay(7000);
GsmSerial.println("ATH\r");
delay(7000);
}