Управление сервоприводом

jon366
Offline
Зарегистрирован: 02.05.2011

 рябят! есть простенькая программа для серво, которая поворачивает его на 180 градусов и обратно. набираю соответствующий скетч в окне Arduino, компелирую - все работает..

вопрос такого плана..возможно самому сделать программу на ПК, с которой будет упраляться серво?..грубо говоря, нажал кнопку в окошке программы - серво начал поворачиваться (с учетом имеющейся уже проги)..нажал другую кнопку - серво остановился.. в первом же случае, пока USB не выдернешь - так и будет крутиться..

 

Starpom
Offline
Зарегистрирован: 06.03.2011

 А почему бы нет. Общая идея для связи с компом использования Serial соединения

jon366
Offline
Зарегистрирован: 02.05.2011

дело в том, я использую Freeduino 2009..а Serial соединение рассматривается восновном для платы Arduino Mega..

самое интересное, в дальнейшем моя задача сводится к тому, чтобы управлять сервоприводом ( с помощью выше описанной желаемой программы) через  Ethernet (кабель метров 5-7)  - получается, в сочетании Freeduino + Ethernet Sheild..вот и парюсь..блин..

Starpom
Offline
Зарегистрирован: 06.03.2011

 а тут нет никакой принципиальной разницы, просто Mega поддерживает несколько одновременных Serial соединений, а UNO и клоны только одно.

jon366
Offline
Зарегистрирован: 02.05.2011

ясно..тогда можно смело подключать библиотеки..спасибо..

..но а это опять же..рассматривается вариант в среде Arduino..мне не понятно как программу на компе сделать , чтобы через нее сервой двигать ( в том же сочетании)..? 

Ravenenok
Offline
Зарегистрирован: 03.06.2011

 Пока жду, когда приедут моторчики, развлекался просто со встроенным диодом. Написал программу на C#, пока кнопку держишь, диод горит, отпускаешь - тухнет. Использовал OnKeyUp и OnKeyDown, плюс добавил в функцию нажатия ключ, чтобы в ардуино не шла херова туча сообщений. 

Ravenenok
Offline
Зарегистрирован: 03.06.2011

Собственно сама программа

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace Arduino
{
    public partial class Form1 : Form
    {
        public int n = 0;


        public Form1()
        {
            InitializeComponent();
        }

        
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.N)
            {
                if (n == 0)
                {
                    SerialPort port = new SerialPort("COM3", 9600);
                    port.Open();
                    port.Write("n");
                    port.Close();
                    n = 1;
                }
                else
                { n = 1; }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview = true;
        }

        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            if (n == 1)
            {
                SerialPort port = new SerialPort("COM3", 9600);
                port.Open();
                port.Write("f");
                port.Close();
                n = 0;
            }
            else
            { n = 0; }

        }


    }
}

 

Zaliv
Offline
Зарегистрирован: 05.03.2011

 О это очень хороший пример. Спасибо. Как раз была мысль поспрягать с C#

Shurup
Offline
Зарегистрирован: 30.05.2011