Написание функции отправки сообщения

AHTOH22
Offline
Зарегистрирован: 27.03.2012

Добрый день! Имеется рабочий скетч отправке СМС

void setup()
{
  Serial.begin(19200);  
Serial.print("\r");
  delay(1000);  
  Serial.print("AT+CMGF=1\r");  
delay(1000);


  Serial.print("AT+CMGS=\"89231*******\"\r"); /
    delay(1000);
Serial.print("SIM900 and Arduino say Hi!\r"); //The text for the message
delay(1000);
Serial.print(26,BYTE); //Equivalent to sending Ctrl+Z 
}

void loop()
{ } 

не получается переделать из него функцию, чтоб в каждом месте не втыкать кусок этой программы, а указать переменную типа string, которую нужно отправить и вызвать эту самую функцию.

Помогите если кто шарит,я просто не программист,но пришлось возиться в связи с обстоятельствами...

 

Вот моя нерабочая версия

 

void setup()
{
Serial.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1
char soobshenie[]="Priveeet";
otpravSMS(soobshenie);

}

void loop()
{
//We just want to send the SMS only once, so there is nothing in this loop.
//If we put the code for SMS here, it will be sent again and again and cost us a lot.
}
void otpravSMS(char soobshenie[]){
Serial.print("\r");
delay(1000); //Wait for a second while the modem sends an "OK"
Serial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
  
  
  delay(1000);  
   
   
   
   

Serial.print("AT+CMGS=\"8923*******\"\r"); //Start accepting the text for the message
//to be sent to the number specified.
//Replace this number with the target mobile number.
delay(1000);
Serial.print("PRIVEEEThhhhhh\r"); //The text for the message
delay(1000);
Serial.print(26,BYTE); //Equivalent to sending Ctrl+Z

}
AHTOH22
Offline
Зарегистрирован: 27.03.2012

Никто не сможет подсказать? 

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

 


boolean sendNow = 0; //маркер который будет включать отправку

void setup()
{
Serial.begin(19200); 
}

void loop()
{
	if (Serial.available() > 0){
		if (Serial.read() == 49){ //если передать "1"
			sendNow = 1; //маркер установится в 1
		}
	}

	otpravSMS(); // и произойдет отправка
}
void otpravSMS(){
	if(sendNow == 1){
		Serial.print("\r");
		delay(1000); 
		Serial.print("AT+CMGF=1\r");
		delay(1000);  
		Serial.print("AT+CMGS=\"8923*******\"\r"); 
		delay(1000);
		Serial.print("Privet\r");
		delay(1000);
		Serial.write(26); 
		sendNow = 0; // после отправки маркер опять будет ждать
	}
}

 

AHTOH22
Offline
Зарегистрирован: 27.03.2012

Немного не правильно выразил свою мысль, нужно например, чтобы в программе в смс отправилась какая то фраза, например ПРИВЕТ.т.е. я вызываю функцию с аргументом ПРИВЕТ, а если надо отправить пока, то соответственно otpravSMS(ПОКА) .

можно ли такое сделать?не хочу загромождать скетч лишними однотипными строчками, хотелось бы запихать их в функцию а потом просто к ней обращаться с нужным для отправки текстом

Xoon
Offline
Зарегистрирован: 02.04.2012

 

void setup()
{
  Serial.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1
  char soobshenie[]="Priveeet";


}

void loop()
{

  otpravSMS("It is a good day to die");


}
void otpravSMS(char soobshenie[]){
  Serial.print("\r");
  delay(1000); //Wait for a second while the modem sends an "OK"
  Serial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode


  delay(1000);  





  Serial.print("AT+CMGS=\"8923*******\"\r"); //Start accepting the text for the message
  //to be sent to the number specified.
  //Replace this number with the target mobile number.
  delay(1000);
  Serial.print(soobshenie); //The text for the message
  delay(1000);
  Serial.write(26);


}

 

garmoska89
Offline
Зарегистрирован: 20.12.2011

 ты работаеш с sim900? icomsat v1.1?