Итак, я снял видео с башней Майкла Ривза и захотел ограничить вращение сервопривода до **180 **градусов, чтобы кабели не образовывали петли сами по себе. (сервоприводы mg996r)
Я пробовал использовать if и пару других вещей, но безуспешно (я новичок в Arduino и C # с Arduino), и я просто ожидаю, что я все равно смогу управлять сервоприводами с помощью мыши, но когда он достигнет 180, он остановится, пока не переключится. стороны.
настройка в C#:
public Stopwatch watch { get; set; }
private Point previousMousePosition; // Store the previous mouse position
private bool servoMoving; // Flag to track if the servo is currently moving
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
watch = Stopwatch.StartNew();
port.Open();
previousMousePosition = Cursor.Position; // Initialize with the current mouse position
servoMoving = false;
}
мышь и управление вращением:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
writeToPort(new Point(e.X, e.Y));
}
public void writeToPort(Point coordinates)
{
if (watch.ElapsedMilliseconds > 15)
{
watch = Stopwatch.StartNew();
int servoX = (int)(coordinates.X * 180.0 / Size.Width); // Map X to 0-180 degrees
int servoY = (int)(coordinates.Y * 180.0 / Size.Height); // Map Y to 0-180 degrees
// Ensure servoX and servoY are within the valid range (0-180)
servoX = Math.Max(0, Math.Min(180, servoX));
servoY = Math.Max(0, Math.Min(180, servoY));
port.Write(String.Format("X{0}Y{1}", servoX, servoY));
servoMoving = true; // Set the flag to indicate the servo is moving
}
else
{
servoMoving = false; // Set the flag to indicate the servo has stopped moving
}
}
Подробнее здесь: https://stackoverflow.com/questions/770 ... he-purpuse
Как ограничить сервопривод, спроектированный на 360 градусов, сохраняя при этом цель этого кода? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение