So, I got carried away with my exams and I forgot to come back with an update and a solution. To take it short, I added a new source of power to the circuit and I am only turning the servo on when needed to rotate, then turn it off again. The code can be seen below:
#include <Servo.h>
#include <SoftwareSerial.h>
int rxPin = 2;
int txPin = 3;
int digitalPin = 7; // KY-028 digital interface
int analogPin = A2; // KY-028 analog interface
int servoPin = 11;
int angle = 0;
int temp;
const int minTemp = 150;
const int maxTemp = 350;
const int minAngle = 0;
const int maxAngle = 180;
const char sendDataPackageStartByte = 'T';
const int receiveDataPackageStartByteVal = 83; //"S"
const int receiveDataPackageEndByteVal = 13;
const int communicationDelay = 1000;
const int servoDelay = 100;
SoftwareSerial BT(rxPin,txPin);
Servo servo;
void setup() {
pinMode(digitalPin, INPUT);
pinMode(analogPin, INPUT);
Serial.begin(9600);
BT.begin(9600);
}
void loop() {
if(BT.available() <= 0)
{
temp = analogRead(analogPin);
BT.print(sendDataPackageStartByte);
BT.print(temp/100);
BT.print(temp/10%10);
BT.print(temp%10);
BT.println();
delay(communicationDelay);
}
else
{
readData();
}
}
void readData()
{
if (BT.available())
{
char temp[3];
while(BT.available() > 0)
{
char crtByte = BT.read();
if (crtByte == receiveDataPackageStartByteVal)
{
temp[0] = BT.read();
temp[1] = BT.read();
temp[2] = BT.read();
if(BT.read() != receiveDataPackageEndByteVal)
{
return;
}
break;
}
}
int desiredTemp = atoi(temp);
int desiredAngle = map(desiredTemp, minTemp, maxTemp, minAngle, maxAngle);
printDataToSerial(desiredTemp, desiredAngle);
turnServo(desiredAngle); //attach servo, write value, dettach
}
}
void printDataToSerial(int desiredTemp, int desiredAngle)
{
Serial.println("Desired Temperature:");
Serial.println(desiredTemp);
Serial.println("Desired Angle:");
Serial.println(desiredAngle);
}
void turnServo(int angle)
{
servo.attach(servoPin);
delay(servoDelay);
servo.write(angle);
delay(servoDelay);
servo.detach();
delay(servoDelay);
}
Also, here would be the layout of my final circuit:

Basically what I wanted to achieve was sending and displaying the current temperature from an Arduino device to an Android one, then allow the user to adjust the temperature, simulating this with a servo commanded over Bluetooth. For those interested in the Android part as well (and the whole project actually), here is the link to the project repository on GitHub. I hope this helps anyone landing here, good luck! :D