Hi guys. I'm trying to control my servos that are connected to the Arduino mega using Simulink via Xbee modules.
The problem is that there is a huge delay between the physical servo rotation and the instructions pushed out from simulink. I've used a scope block in Simulink to track the instruction being sent to the Serial Block and can visually see the delay in servo response vs the signal being sent out.
Attached is my extremely simple Simulink Model to test the servo response.
And here's my code that I upload to Arduino board:
//This script works with SysIDModel.mdl
//The script simply reads the serial data received as the elevator
//deflection and pass it to the 'myservo' object.
#include <Servo.h>
Servo myservo; //create servo object
int ElevDefl; //variable to store servo rotation angle
void setup()
{
Serial3.begin(38400); // initialize serial ports 0 & 3
Serial.begin(9600);
myservo.attach(44); //attach servo object to pin 44 (i.e. OUT1)
}
void loop()
{
if (Serial3.available() > 0)
{
ElevDefl = Serial3.read();
Serial.println(ElevDefl);
myservo.write(ElevDefl);
}
}
Any help will be very much appreciated.
VerySimpleModelPic.bmp (1.04 MB)