Arduino Polska Forum
sim800l wstawienie numeru ze zmiennej - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: sim800l wstawienie numeru ze zmiennej (/watek-sim800l-wstawienie-numeru-ze-zmiennej)



sim800l wstawienie numeru ze zmiennej - jarsek - 09-03-2019

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



sim800l wstawienie numeru ze zmiennej - wchpikus - 09-03-2019

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


RE: sim800l wstawienie numeru ze zmiennej - kaczakat - 09-03-2019

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.


RE: sim800l wstawienie numeru ze zmiennej - jarsek - 09-03-2019

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



RE: sim800l wstawienie numeru ze zmiennej - kaczakat - 09-03-2019

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.


RE: sim800l wstawienie numeru ze zmiennej - jarsek - 09-03-2019

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