Help needed: Arduino Wireless Notice Board project
-
Hi @rafitc99, You can convert the string to char array using toCharArray() it will Copies the String’s characters to the supplied buffer.
- Syntax
myString.toCharArray(buf, len)
- Parameters
myString: a variable of type String.
buf: the buffer to copy the characters into. Allowed data types: array of char.
len: the size of the buffer. Allowed data types: unsigned int.
more : https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tochararray/ , https://www.arduino.cc/en/Tutorial/BuiltInExamples#strings
also @SAFVAN is using const char* to hold message array You cannot change the contents of the location(s) this pointer points to.
-
@salmanfaris Rewrite all code and uploaded. But SMS is not displaying correctly in LED Board, .. I'm attaching code and display output. take a look ,
#include <SoftwareSerial.h> #include <SPI.h> #include <DMD.h> #include <TimerOne.h> #include "SystemFont5x7.h" #include "Arial_black_16.h" #define ROW 1 #define COLUMN 1 #define FONT Arial_Black_16 DMD led_module(ROW, COLUMN); String st; const char *msg; unsigned int LengMsg; SoftwareSerial mySerial(3, 2); void scan_module(){ led_module.scanDisplayBySPI(); } void setup() { Timer1.initialize(2000); Timer1.attachInterrupt(scan_module); led_module.clearScreen( true ); Serial.begin(4800); mySerial.begin(4800); Serial.println("Starting..."); delay(1000); mySerial.println("AT"); pollSms(); mySerial.println("AT+CMGF=1"); pollSms(); mySerial.println("AT+CNMI=1,2,0,0,0"); pollSms(); } void loop(){ pollSms(); delay(500); //Start print in led matrix led_module.selectFont(FONT); led_module.drawMarquee(msg,LengMsg, (32 * ROW), 0); long start = millis(); long timming = start; boolean flag = false; while (!flag){ if((timming + 20) < millis()){ flag = led_module.stepMarquee(-1, 0); timming = millis(); } } } void pollSms(){ delay(500); while (Serial.available()) { mySerial.write(Serial.read()); //String st = String(Serial.read()); //Serial.println(st); } while(mySerial.available()) { Serial.write(mySerial.read()); st = String(mySerial.readString()); Serial.println(st); LengMsg = st.length(); st.toCharArray(msg,LengMsg); } delay(500); }
output video : video link
-
Can you print the SMS on the serial monitor too? so we can conclude the problem
-
@salmanfaris in serial monitor getting normal text. No problem in there.
-
@rafitc99 Okay, it might be sending char from SMS buffer to LED panel. let me check, I'll get back to you.
-
-
@rafitc99 , @SAFVAN did you tried the @arunksoman suggestion?
-
Now message is displaying with mobile number, date, time.
I want filter the actual message only. -
@SAFVAN what was the solution with the previous problem?
-
@salmanfaris tried @arunksoman suggestion , c_str() instead to_charArray().. But want to parse SMS body only. Now working on that.