Hola, buenos días.
Estoy realizando un proyecto, el cual consiste en enviar datos desde el pc hasta un arduino mediante bluetooth y desde otro arduino hasta este, también con bluetooth. Con lo cual el primer arduino tiene dos módulos bluetooth, y el segundo uno.
No consigo hacer que funcione, ya que si comunico los dos arduinos con bluetooth y el arduino al pc con cable si que funciona, pero de la forma que quiero no.
Agradecería cualquier ayuda posible.
Aquí dejo los codigos:
Arduino con el pc:
#include <SoftwareSerial.h>
SoftwareSerial blue(2,3);
SoftwareSerial blue2(4,5);
char pc, esclavo;
boolean estado=false;
unsigned long x=0;
unsigned long y=0;
unsigned long z=0;
void setup()
{
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
blue.begin(9600);
blue2.begin(9600);
}
void loop()
{
if(blue2.available()>0){
pc=blue2.read();
if(pc=='0'){
digitalWrite(8,HIGH);
x=millis();
estado=true;
}
else if(pc=='1'){
digitalWrite(9,HIGH);
x=millis();
estado=true;
}
}
if(blue.available()>0 && estado==true){
esclavo=blue.read();
if(pc=='0'){
if(esclavo=='1'){
digitalWrite(8,LOW);
y=millis();
z=y-x;
blue2.println(z);
estado=false;
}
}
else if(pc=='1'){
if(esclavo=='2'){
digitalWrite(9,LOW);
y=millis();
z=y-x;
blue2.println(z);
estado=false;
}
}
}
}
}
Arduino con Arduino
#include <SoftwareSerial.h>
SoftwareSerial blue(4,5);
const int timeThreshold = 150;
const int intPin2 = 2;
const int intPin3 = 3;
volatile int ISRCounter = 0;
volatile int ISRCounter2 = 0;
int counter = 0;
int counter2 = 0;
long timeCounter = 0;
long timeCounter2 = 0;
void setup()
{
pinMode(intPin2, INPUT);
pinMode(intPin3, INPUT);
blue.begin(9600);
attachInterrupt(digitalPinToInterrupt(intPin2), debounceCount, RISING);
attachInterrupt(digitalPinToInterrupt(intPin3), debounceCount2, RISING);
}
void loop()
{
if (counter != ISRCounter)
{
counter = ISRCounter;
blue.write("1");
}
if (counter2 != ISRCounter2)
{
counter2 = ISRCounter2;
blue.write("2");
}
}
void debounceCount()
{
if (millis() > timeCounter + timeThreshold)
{
ISRCounter++;
timeCounter = millis();
}
}
void debounceCount2()
{
if (millis()>timeCounter2 + timeThreshold)
{
ISRCounter2++;
timeCounter2 = millis();
}
}