1

I have a stepper motor and at present it is controlled by a sketch all working fine. I need now to add it to a Win32 app to control it in circuit with existing Servo Motor. The servo Motor is working well via Firmata from Win32 app as follows

in setup part

arduino.pinMode(9, Arduino.SERVO);

In loop

 private void btn_set_servo_Click(object sender, EventArgs e)
 {
 int angle = Convert.ToInt32(Math.Round(numupdwn_degrees.Value, 0));
 arduino.servoWrite(9, angle);//tell the servo motor go to the position
 }

How do you drive the stepper motor using Firmata has anyone got an example I can see please?

asked Jun 28, 2021 at 14:34
4
  • You're saying it's working fine. So what is your problem? Commented Jun 28, 2021 at 19:22
  • 1
    The servo motor is working fine but the stepper motor is not working at all. A Servo motor and a Stepper motor are two different animals. I need both to work from the same Win10 controller. Commented Jun 29, 2021 at 5:34
  • I don't have any of these, so I can only guess. I think you need the AccelStepper firmata module. What client library are you using on the PC? Commented Jun 29, 2021 at 6:13
  • Thanks for help and understood but that is a library for a sketch not running Firmata protocol that will allow me to run from C# Win32 app with the other items. Commented Jun 29, 2021 at 7:40

1 Answer 1

0

Update: I have created a C# .Net App to connect and control the stepper Motor. The code and a Readme file is available at

https://github.com/zizwiz/Arduino_Projects/tree/main/FirmataStepperMotorTest


Initial Answer:

After a bit of thinking time I have managed to start the stepper motor running with Firmata protocol from my C# Win32 app. This post is just a basic outline I use to get it running I need lots more thinking and tinkering till I get what I need but in case this is helpful here it is.

Create a button to press to start. Create a thread when the button is clicked

 private void btn_stepper_start_Click(object sender, EventArgs e)
 {
 var thread = new Thread(() =>
 {
 while (true)
 {
 RunStepper();
 }
 });
 
 thread.IsBackground = true;
 thread.Start();
 }

In the function RunStepper() create the following

 private void RunStepper()
 {
 while (true)
 {
 arduino.digitalWrite(7, Convert.ToByte(255));
 arduino.digitalWrite(8, 0);
 arduino.digitalWrite(9, 0);
 arduino.digitalWrite(10, 0);
 Task.Delay(10);
 arduino.digitalWrite(7, 0);
 arduino.digitalWrite(8, Convert.ToByte(255));
 arduino.digitalWrite(9, 0);
 arduino.digitalWrite(10, 0);
 Task.Delay(10);
 arduino.digitalWrite(7, 0);
 arduino.digitalWrite(8, 0);
 arduino.digitalWrite(9, Convert.ToByte(255));
 arduino.digitalWrite(10, 0);
 Task.Delay(10);
 arduino.digitalWrite(7, 0);
 arduino.digitalWrite(8, 0);
 arduino.digitalWrite(9, 0);
 arduino.digitalWrite(10, Convert.ToByte(255));
 Task.Delay(10);
 }
 }

As mentioned this small basic example is just a start to prove I may be able to do what I need.

answered Jun 29, 2021 at 11:44

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.