Как заставить Arduino Nano управлять шаговым двигателем с помощью Firmata
У меня есть шаговый двигатель, и в настоящее время он управляется с помощью скетча, все работает нормально. Теперь мне нужно добавить его в приложение Win32, чтобы управлять им по схеме с существующим серводвигателем. Сервопривод хорошо работает через Firmata из приложения Win32 следующим образом
в части настройки
arduino.pinMode(9, Arduino.SERVO);
В цикле
private void btn_set_servo_Click(object sender, EventArgs e)
{
int angle = Convert.ToInt32(Math.Round(numupdwn_degrees.Value, 0));
arduino.servoWrite(9, angle);//скажите серводвигателю перейти в положение
}
Как управлять шаговым двигателем с помощью Firmata у кого-нибудь есть пример?
@user3884423, 👍1
Обсуждение1 ответ
Лучший ответ:
Обновление: Я создал C# .Сетевое приложение для подключения и управления шаговым двигателем. Код и файл Readme доступны по адресу
https://github.com/zizwiz/Arduino_Projects/tree/main/FirmataStepperMotorTest
Первоначальный ответ:
После некоторого размышления мне удалось запустить шаговый двигатель, работающий по протоколу Firmata, из моего приложения C# Win32. Этот пост-всего лишь базовый план, который я использую, чтобы запустить его, мне нужно еще много думать и возиться, пока я не получу то, что мне нужно, но в случае, если это полезно, вот оно.
Создайте кнопку, которую нужно нажать для запуска. Создайте поток при нажатии кнопки
private void btn_stepper_start_Click(object sender, EventArgs e)
{
var thread = new Thread(() =>
{
while (true)
{
RunStepper();
}
});
thread.IsBackground = true;
thread.Start();
}
В функции RunStepper() создайте следующее
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);
}
}
Как уже упоминалось, этот небольшой базовый пример-только начало, чтобы доказать, что я могу делать то, что мне нужно.
- Цифровые входные контакты на arduino nano со стандартными firmata и pyfirmata всегда «Нет»
- Перегорают ли мои шаговые двигатели? В чем здесь проблема?
- Запутанная реакция степпера на увеличение delayMicroseconds()
- Выбираю мотор для своего проекта
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
Ты говоришь, что это работает нормально. Так в чем же ваша проблема?, @PMF
Серводвигатель работает нормально, но шаговый двигатель вообще не работает. Серводвигатель и шаговый двигатель-это два разных животных. Мне нужно, чтобы оба они работали с одного и того же контроллера Win10., @user3884423
У меня нет ничего из этого, так что я могу только догадываться. Я думаю, вам нужен модуль AccelStepper firmata. Какую клиентскую библиотеку вы используете на ПК?, @PMF
Спасибо за помощь и понимание, но это библиотека для скетча, не работающего по протоколу Firmata, которая позволит мне запускать приложение C# Win32 с другими элементами., @user3884423