io控制
机械臂底部Basic和末端Atom上都有引脚,可以通过io控制设置引脚的高低电平,控制系泵等工具(引脚号可以查看Basic和Atom引脚处贴的引脚标签,输入输出共用)。
1 M5Stack-basic io控制(m5)
1.1 设置输出io高低电平
SetBasicOut(byte pin_number, byte pin_signal)
返回值:无
参数说明:参数1:引脚号(basic输出引脚号),参数2:状态(0--低电平,1--高电平)
案例:
mc.SetBasicOut(2, 1);
Thread.Sleep(100);
mc.SetBasicOut(5, 1);
Thread.Sleep(100);
1.2 获取输入io状态
GetBasicIn(byte pin_number)
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(basic输入引脚号)
案例:设置输出引脚2为高电平
Console.WriteLine(mc.GetBasicIn(35));
Thread.Sleep(100);
Console.WriteLine(mc.GetBasicIn(36));
Thread.Sleep(100);
2 Atom io控制
注意:320m5无atom io,所以不需要用到此模块API
2.1 设置输出io高低电平
SetDigitalOut(byte pin_number, byte pin_signal)
返回值:无
参数说明:参数1:引脚号(atom输出引脚号),参数2:状态(0--低电平,1--高电平)
案例:
mc.SetDigitalOut(23, 0);
Thread.Sleep(100);
mc.SetDigitalOut(33, 0);
Thread.Sleep(100);
2.2 获取输入io状态
GetDigitalIn(byte pin_number)
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(atom输入引脚号)
案例:
Console.WriteLine(mc.GetDigitalIn(19));
Thread.Sleep(100);
Console.WriteLine(mc.GetDigitalIn(22));
Thread.Sleep(100);
3 完整使用案例
using System;
using System.Threading;
namespace Mycobot.csharp
{
    class Test
    {
        static void Main(string[] args)
        {
            MyCobot mc = new MyCobot("COM57");//树莓派机械臂串口名称:/dev/ttyAMA0
            mc.Open();
            Thread.Sleep(5000);//windows打开串口后,需要等待5s,Windows打开串口底部basic会重启
            //set basic output io
            /*mc.SetBasicOut(2, 1);
            Thread.Sleep(100);
            mc.SetBasicOut(5, 1);
            Thread.Sleep(100);
            mc.SetBasicOut(26, 1);
            Thread.Sleep(100);*/
            //get basic input io
            Console.WriteLine(mc.GetBasicIn(35));
            Thread.Sleep(100);
            Console.WriteLine(mc.GetBasicIn(36));
            Thread.Sleep(100);
            //set atom output io
            /*mc.SetDigitalOut(23, 0);
            Thread.Sleep(100);
            mc.SetDigitalOut(33, 0);
            Thread.Sleep(100);*/
            //get m5 input io
            /*Console.WriteLine(mc.GetDigitalIn(19));
            Thread.Sleep(100);
            Console.WriteLine(mc.GetDigitalIn(22));
            Thread.Sleep(100);*/
            mc.Close();
        }
    }
}