Hi, i want to make servo position control with VB 2010. For first try, i want to control servo between 0 - 100 degrees. In VB 2010 i use trackbar to control servo, and i setting the trackbar value between 0 and 10. So, 1 trackbar value represent 10 degree of servo movement. When i tried the system, it works, but there is a problem, the system will works well if the trackbar value ranged between 0 - 9. When i move trackbar value to 10, the servo must be move to 100 degree, but it goes wrong, the servo move to 0 degree, looks like arduino read the trackbar value is 0 not 10.
Then i do other experiment, and the conclusion is arduino only execute trackbar value between 0 and 9. When it between 10-19, or 20 and 29, and so on, arduino will read it as 0 - 9.
Well, how to solve this problem?
Thank you
this is my Arduino Code:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int val,pos;
void setup()
{
myservo.attach(A0); // attaches the servo on pin 9 to the servo object
Serial.begin(115200); //begins serial communication
}
void loop()
{
serialControl();
myservo.write(val);
}
void serialControl() {
if (Serial.available()){
delay(100);
while(Serial.available()>0){
pos=int(Serial.read()); //reads the value sent from Visual Basic
if(pos=='0')
val=0; //rotates the servo 0 degrees
else if(pos=='1')
val=10;
else if(pos=='2')
val=20;
else if(pos=='3')
val=30;
else if(pos=='4')
val=40;
else if(pos=='5')
val=50;
else if(pos=='6')
val=60;
else if(pos=='7')
val=70;
else if(pos=='8')
val=80;
else if(pos=='9')
val=90;
else if(pos== '10')
val=100;
}
}
}
And this is my VB 2010 Code:
Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
Shared _continue As Boolean
Shared _serialPort As SerialPort
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com18" 'you need to check which com port your arduino is using, and change them if you need
SerialPort1.BaudRate = 115200
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default
End Sub
Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) Handles Label1.Click
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
SerialPort1.Open()
SerialPort1.Write(TrackBar1.Value)
SerialPort1.Close()
TextBox1.Text = TrackBar1.Value
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
End Sub
End Class