Arduino Polska Forum

Pełna wersja: sim800l wstawienie numeru ze zmiennej
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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() {
 }