真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#串口控制舵機(jī)、arduino源碼及C#源碼及界面-創(chuàng)新互聯(lián)

1.舵機(jī)原理簡(jiǎn)介

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、衡山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為衡山等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

    C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。

舵機(jī)的控制一般需要一個(gè)20ms左右的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍內(nèi)的角度控制脈沖部分,總間隔為2ms。以180度角度伺服為例,那么對(duì)應(yīng)的控制關(guān)系是這樣的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

2.arduino下位機(jī)源碼

相關(guān)源碼已壓縮上傳,需要請(qǐng)下載對(duì)應(yīng)附件

#include  //庫(kù)文件
Servo servo1;     
static int v=0;
String mycommand="";
void setup()
  {
    Serial.begin(9600);//此處為串口設(shè)置的波特率 ,可以修改 必須同上位機(jī)設(shè)置的波特路一致。
    servo1.attach(3);  // 控制的端口是~3號(hào)
    servo1.write(90);
  }
void loop() 
 {
    while(Serial.available()>0)
    {
      mycommand+=char(Serial.read());
      delay(2);
    }
    for(int m=0;m= 5 || v <= 175 )   
                         servo1.write(v); // 讓A從66度旋轉(zhuǎn)到9度 (可修改角度)                     
                         //用于設(shè)定舵機(jī)旋轉(zhuǎn)角度的語(yǔ)句,可設(shè)定的角度范圍是0°到180°,“V”得到所輸入的值而改變角度,比如85a為85度角
                         Serial.println(v+"°");//舵機(jī)角度改變后 發(fā)送改變的角度到上位機(jī)。
                         v = 0;
                          break;
                     }
   
          }  
   mycommand="";
}

   C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

我選擇我的是arduino Uno,舵機(jī)的接線方法是紅色(VCC)端接控制板的5V處,棕色端接板子的GND,舵機(jī)的橙色線為信號(hào)線,接板子上的3號(hào)口;

3.C#上位機(jī)源碼及界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 舵機(jī)上位機(jī)源碼
{
    public partial class Form1 : Form
    {
        bool open = false;
        public delegate void HandleInterfaceUpdataDelegate(string text);
        private HandleInterfaceUpdataDelegate interfaceUpdataHandle;
        int a;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());//從系統(tǒng)獲取已有串口
            if (comboBox1.Items.Count > 0)
            {
                comboBox1.SelectedIndex = 0;//串口變量初始化
                serialPort1.RtsEnable = true;//DataReceived事件委托
                serialPort1.ReceivedBytesThreshold = 1;//設(shè)置 DataReceived 事件發(fā)生前內(nèi)部輸入緩沖區(qū)中的字節(jié)數(shù)
                serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
                comboBox2.SelectedIndex = 6;
            }
            else
            {
                MessageBox.Show("未檢測(cè)到設(shè)備\r\n");
            }
        }
        //監(jiān)聽(tīng)串口
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            try
            {
                string text = string.Empty;
                byte[] result = new byte[serialPort1.BytesToRead];
                serialPort1.Read(result, 0, serialPort1.BytesToRead);
                text = Encoding.UTF8.GetString(result);
            }
            catch 
            {
               
            }
        }
        //串口刷新按鈕
        private void button2_Click(object sender, EventArgs e)
        {
            comboBox1.Items.Clear();
            comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
            if (comboBox1.Items.Count > 0)
            {
                comboBox1.SelectedIndex = 0;
            }
            else
            {
                MessageBox.Show("未檢測(cè)到串口\r\n");
            }
        }
        
        //打開(kāi)串口
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (open == false)
            {
                
                if (serialPort1.IsOpen)
                {
                    MessageBox.Show("串口已經(jīng)打開(kāi)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //串口
                if (comboBox1.Text == string.Empty)
                {
                    MessageBox.Show("請(qǐng)選擇串口", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //波特率
                if (comboBox2.Text == string.Empty)
                {
                    MessageBox.Show("請(qǐng)選擇波特率", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                serialPort1.BaudRate = int.Parse(comboBox2.Text);
                try
                {
                    serialPort1.PortName = comboBox1.SelectedItem.ToString();
                    serialPort1.Open();
                }
                catch
                {
                    try
                    {
                        comboBox1.SelectedIndex = comboBox1.SelectedIndex + 1;
                    }
                    catch
                    {
                        comboBox1.SelectedIndex = 0;
                    }
                    serialPort1.Close();
                }
                btnOpen.Text = "關(guān)閉";
                comboBox1.Enabled = false;
                comboBox2.Enabled = false;
                open = true;
                trackBarSend_Scroll(this, null);
                btnReserch.Enabled = false;
                btnsend.Enabled = true;
                tbxSend.Enabled = true;
                trackBarSend.Enabled = true;
                pictureBox1.BackColor = Color.Lime;
            }
            else
            {
                try
                {
                    serialPort1.Close();
                    btnOpen.Text = "打開(kāi)";
                    open = false;
                    comboBox1.Enabled = true;
                    comboBox2.Enabled = true;
                    btnReserch.Enabled = true;
                    btnsend.Enabled = false;
                    tbxSend.Enabled = false;
                    trackBarSend.Enabled = false;
                    pictureBox1.BackColor = Color.Silver;
                }
                catch
                {
                }
            }
        }
        private void trackBarSend_Scroll(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                a = trackBarSend.Value;
                string duojiA = trackBarSend.Value.ToString() + "a";
                try
                {
                    serialPort1.WriteLine(duojiA);
                    tbxSend.Text = a.ToString(); ; ;
                }
                catch
                {
                }
            }
        }
        private void btnsend_Click(object sender, EventArgs e)
        {
            try
            {
                byte[] SendBuf = new byte[100000];
                SendBuf = System.Text.Encoding.Default.GetBytes(tbxSend.Text+"a");
                serialPort1.Write(SendBuf, 0, SendBuf.Length);
            }
            catch (Exception err)
            {
                if (serialPort1.IsOpen)
                    serialPort1.Close();//如果是寫數(shù)據(jù)時(shí)出錯(cuò),此時(shí)窗口狀態(tài)為開(kāi),就應(yīng)關(guān)閉串口,防止下次不能使用,串口是不能重復(fù)打開(kāi)和關(guān)閉的
                MessageBox.Show(err.ToString(), "錯(cuò)誤");
            }
        }
        private void tbxSend_ValueChanged(object sender, EventArgs e)
        {
            trackBarSend.Value = (int)tbxSend.Value;
        }
    }
}

C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

                                                            未連接設(shè)備狀態(tài)

C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

                                                                連接設(shè)備后

C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

                                            這是自己做的機(jī)械臂控制軟件 相關(guān)源碼也有

C#串口控制舵機(jī)、arduino源碼 及C#源碼及界面

                                                            這是wifi智能小車控制軟件

第一次寫博文,有不好的地方還請(qǐng)多多包涵。

附件:http://down.51cto.com/data/2366150

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:C#串口控制舵機(jī)、arduino源碼及C#源碼及界面-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/docdpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部