I'm using this HC-05 Bluetooth module to communicate between my Arduino mega 2560 and my laptop. I am using processing to send the data from my computer to the Arduino.
The module connects nicely and start blinking and when it is paired with my computer it blinks twice every seconds. The problem is that every time the module blinks twice, it ignores the data I am trying to send. Everything else seems to work fine.
Does anyone why this is happening and what I can do to avoid it?
Here is the arduino code:
/*
* bluetooth_rbg_led.ino
* Uses bluetooth communication to adjust the
* values of an rgb LED.
*
* Sahibjot Singh
* July 2021
*/
// Servo library to control servos
#include <Servo.h>
// Global variables
Servo servo;
const byte servoPin = 2;
int servoAngle;
// Exeuctes once, at the start
void setup() {
// Attaches the servo to it's pin
servo.attach(servoPin);
servo.write(0);
// Begins the serial communication with the
// bluetooth module at pins 18 and 19
Serial1.begin(9600);
}
// Loops infinitely
void loop() {
// Reads the values from the serial port
if (Serial1.available()) {
servoAngle = Serial1.read();
}
// Writes the value to the led pin
servo.write(servoAngle);
}
Here's the processing code:
/*
* bluetooth_rgb_led.pde
* Simple program to take user input and
* write it to the serial port.
*
* Sahibjot Singh
* July 2021
*/
// The library needed to write to the serial port
import processing.serial.*;
// Serial variables
Serial port;
int servoAngle;
int userInput;
// Slider variables
int sliderX = 100;
int sliderY = 195;
int sliderWidth = 400;
int sliderHeight = 10;
// Slider rect variables
int sliderRectX = 100;
int sliderRectY = 175;
int sliderRectWidth = 50;
int sliderRectHeight = 50;
// Executes once, at the start
void setup() {
// Makes the window 600 pixels by 600 pixels
size(600, 600);
// Starts serial communication
port = new Serial(this, "COM7", 9600);
port.bufferUntil('\n');
}
// Loops infinitely
void draw() {
// Gets the input from the slider
if (mousePressed && mouseX > sliderX && mouseX < sliderX + sliderWidth &&
mouseY > sliderY - 20 && mouseY < sliderY + sliderHeight + 20) {
sliderRectX = mouseX - sliderRectWidth / 2;
userInput = sliderRectX - (sliderX - sliderRectWidth / 2);
servoAngle = (int)map(userInput, 0, 400, 0, 180);
}
// Writes the LED value to the serial port
port.write(char(servoAngle));
// Clears the window
clear();
background(200, 200, 200);
// Draws the slider
stroke(30);
strokeWeight(2);
fill(150, 150, 150);
rect(sliderX, sliderY, sliderWidth, sliderHeight, 10);
fill(255, 0, 0);
rect(sliderRectX, sliderRectY, sliderRectWidth, sliderRectHeight, 10);
// Draws the text on the side of the slider
fill(255, 255, 255);
textSize(32);
text("0", 50, 210);
text("180", 530, 210);
// Draws the text about the led's brigthness
fill(0, 0, 255);
textSize(40);
text("Servo Angle: " + Integer.toString(servoAngle), 100, 320);
}