Pytanie może banalne ale jak wstawić zmienną numer_telefonu w poniższy kod wysyłania sms aby nie wpisywać cyferek ?
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);
long numer = 123456789; // numer telefonu
void setup() {
mySerial.begin(9600);
delay(500);
mySerial.println("AT");
delay(500);
mySerial.println("AT+CMGF=1");
delay(500);
mySerial.println("AT+CMGS=\"+48123456789\"\r");
delay(500);
mySerial.println("Tekst sms");
delay(1000);
mySerial.println((char)26);
}
void loop() {
}
Czemu long?
long numer = 123456789; // numer telefonu
Zrob const char numer = 123456789;
mySerial.println("AT+CMGS=\"+ numer+"\r");
Lub jesli ma byc edytowalny to char i przypisujesz wartosc.
Wysłane z mojego SM-G950F przy użyciu Tapatalka
Nie za bardzo wiadomo o co Ci chodzi, musisz wyraźnie rozróżniać liczby i tekst. Cyferki, hmm, chodzi Ci o znaki typu char czy liczby poniżej 10? Wysłać do modemu i tak trzeba jako text, odbierzesz też jako tekst. Zmienne liczbowe można umieszczać w tekstowych używając funkcji do formatowania tekstu
https://pl.wikibooks.org/wiki/C/printf lub Arduinowe String() i sklejać napisy.
Numer telefonu jest wcześniej edytowany i zapisywany do zmiennej long (9 cyfr). Chodzi o to aby tą zmienną wstawić jako String do kodu ale poprzedzić ją prefiksem +48 i nie wiem jak to zrobić.
poprawiłem na takie coś ale nie działa...
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);
String text;
long numer = 123456789;
void setup() {
mySerial.begin(9600); // Setting the baud rate of GSM Module
text = String(numer);
delay(500);
mySerial.println("AT");
delay(500);
mySerial.println("AT+CMGF=1");
delay(500);
mySerial.println("AT+CMGS =\"+48\"String(numer)\r");
delay(500);
mySerial.println("TAK");
delay(1000);
mySerial.println((char)26);
}
void loop() {
}
Użycie + do dobry kierunek, tak się właśnie skleja napisy w Arduino ze String(). Ale jak umieścisz to wewnątrz "" to będzie napis a nie funkcja.
Ok.Dzięki za pomoc .poprawiłem kod i działa.
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);
long liczba = 123456789;
String numer;
void setup() {
mySerial.begin(9600);
numer = String(liczba);
delay(500);
mySerial.println("AT");
delay(500);
mySerial.println("AT+CMGF=1");
delay(500);
mySerial.println("AT+CMGS=\"+48" + numer + "\"\r"); // o tą linijkę mi chodziło
delay(500);
mySerial.println("TAK");
delay(1000);
mySerial.println((char)26);// ASCII code of CTRL+Z
}
void loop() {
}