Alguém pode me informar?
Com a função attachInterrupt () consigo parar uma comunicação em 9600 bauds e começar outra no mesmo programa com 4800 bauds?
Tags:
WDC, boa noite,
detalhe mais sua necessidade.
Rui
Boa noite Rui Viana
Estou com um projeto onde estou usando um modulo RF 433Mhz, dois arduinos uno e shield GSM sim900. Em um arduino uso módulo Transmissor para enviar um sinal e no outro arduino uno, uso o módulo Receptor e o shield Gsm acoplado no mesmo arduino. No meu programa preciso usar a comunicação da seguinte forma para para o módulo RF 433mhz
Serial.begin(9600). Mas meu shield gsm usa também essa velocidade serial.begin(9600). Dessa forma não está funcionando. gostaria de saber se tem como usar uma outra velocidade 4800 bauds para o GSM, no mesmo programa?
#include <RCSwitch.h>
// insira a biblioteca
RCSwitch mySwitch = RCSwitch ();
#include "SIM900.H"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
int led = 13; // conexão (IN1) do Motor 1 (M1) = (IN1M1)
int value = -1; // Variavel responsavel em receber os dados do RF
int ledPin_vermelho = 5; //adicionado no programa
int ledPin_verde = 4; //adicionado no programa
const int botao_porta = 7;
int botao_porta_estado = 0;
const int botao_motorista = 6;
int botao_motorista_estado = 0;
// Programa GSM
int numdata;
boolean started = false;
char smsbuffer[160];
char n[20];
char sms_position;
char phone_number[20];
char sms_text[100];
int i;
void setup() // seta os pinos dos motores como saida
{
pinMode(led, OUTPUT);
pinMode(ledPin_vermelho, OUTPUT);
pinMode(ledPin_verde, OUTPUT);
pinMode(botao_porta, INPUT);
pinMode(botao_motorista, INPUT);
Serial.begin(9600);
Serial.println("\n Comunicacao RF LINK esta OK! Funcionando. ");
mySwitch.enableReceive(0); // seta como receptor/ 0 "0" é para nao interromper, deixar continuo o pino padrao DATA 2
Serial.println("\n GSM Pronto! ");
delay(50);
//Partee referente ao gsm
Serial.begin(9600);
if (gsm.begin(9600))
{
Serial.println("\nstatus=READY");
started=true;
}
void loop() {
botao_motorista_estado = digitalRead(botao_motorista);
botao_porta_estado = digitalRead(botao_porta);
if (mySwitch.available()) // Quando estiver sinal disponivel
{
value = mySwitch.getReceivedValue(); // recebe na variavel value no status
if (value == 1 && botao_motorista_estado == 1 && botao_porta_estado == 0)
{
digitalWrite(ledPin_verde, LOW);
delay(500);
digitalWrite(ledPin_verde, HIGH);
digitalWrite(ledPin_vermelho, LOW);
delay(500);
digitalWrite(ledPin_vermelho, HIGH);
digitalWrite (led, HIGH);
Serial.print("\n Valor recebido: ");
Serial.print(mySwitch.getReceivedValue());
Serial.println("\n Motorista e crianca no carro com as portas fechadas!");
}
if (value == 1 && botao_motorista_estado == 0 && botao_porta_estado == 0)
{
digitalWrite(ledPin_verde, LOW);
digitalWrite(ledPin_vermelho, HIGH);
delay(500);
digitalWrite(ledPin_vermelho, LOW);
digitalWrite(led, LOW);
Serial.print("\n Valor recebido: ");
Serial.print(mySwitch.getReceivedValue());
Serial.println("\n Motorista NAO esta no carro, CRIANCA esta na cadeira e porta FECHADA!");
// Programa GSM
started = true;
Serial.println("\nstatus=READY");
}
if (started)
{
if (sms.SendSMS("+553171745729", " Arduino SMS.Manda uma mensagem para meu numero ai!"))
Serial.println("\nSMS enviado OK.");
}
else
{
Serial.println("\nError sending SMS.");
}
if (started)
{
sms_position = sms.IsSMSPresent(SMS_UNREAD);
if (sms_position)
{
Serial.print("SMS position:");
Serial.println(sms_position, DEC);
sms.GetSMS(sms_position, phone_number, sms_text, 100);
Serial.println(phone_number);
Serial.println(sms_text);
}
delay(2000);
}
}
if (value == 1 && botao_motorista_estado == 0 && botao_porta_estado == 1)
{
digitalWrite(ledPin_verde, HIGH);
delay(50);
digitalWrite(ledPin_verde, LOW);
digitalWrite(ledPin_vermelho, HIGH);
digitalWrite(led, LOW);
Serial.print("\n Valor recebido: ");
Serial.print(mySwitch.getReceivedValue());
Serial.println("\n Motorista NAO esta no carro, CRIANCA esta na cadeira e a porta ABERTA!");
}
mySwitch.resetAvailable();
}
A velocidade não vai alterar nada.
Você tem que iniciar a segunda serial, indicando os pinos a serem usados:
SoftwareSerial SerialSim900(10, 11); // RX, TX
Inicialize sua segunda serial dentro do setup():
SerialSim900.begin(9600);
E ajuste o seu código para usar o SerialSim900 para se comunicar com o seu SIM900.
Boa sorte,
'Eiju
Eiju
Farei os testes Obrigado pela dica!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por