Sun SPOT外部接口 University Outreach Programs in China 蒋清野(John) Sun 中国技术社区,高级经理 John.Jiang@Sun.Com http://www.qyjohn.net/ Qingye Jiang (John) Senior Manager Sun Developer Network, China 1
Sun SPOT外部接口 6 个模拟信号输入(A0-A5) 5 个GPIO(D0-D4) 2 个按钮开关(SW1-SW2) LED1 LED8 A4 A5 GND +3 P1 D4 +5 VH H0 H1 H2 H3 D0 D1 D2 D3 A0 A1 A2 A3 6 个模拟信号输入(A0-A5) 5 个GPIO(D0-D4) 2 个按钮开关(SW1-SW2) 4 个高电流(100mA)输出(H0-H3) 8 个RGB LED(LED1-LED8) 1 个+3伏直流电压输出(+3) 1 个+5伏直流电压输出(+5) import com.sun.spot.sensorboard.io.*;
Sun SPOT模拟信号 引针编号A0 - A5 输入信号范围0 到3 伏 读数精度为10位 使用IScalarInput类读取数据 编程方法: EDemoBoard db = EDemoBoard.getInstance(); IScalarInput analog = db.bindScalarInput(EDemoBoard.A0); int analogValue = analog.getValue();
Sun SPOT电压输出 引针VH为外接输入电压 引针H0到H3为输出电压 输出电压等于输入电压 +3伏和+5伏引针可以作为输入电压 编程方法: EDemoBoard db = EDemoBoard.getInstance(); IOutputPin[] pin = db.getOutputPins(); pin[EDemoBoard.H0].setHigh(); // 设定为高电平输出 pin[EDemoBoard.H0].setLow(); // 设定为低电平输出
Sun SPOT直流马达 假设马达的工作电压为5V 假设马达的控制引针为H0 将+5V 引针和VH引针相连接 将GND 引针和马达的电源负极相连接 编程方法: EDemoBoard db = EDemoBoard.getInstance(); IOutputPin[] pin = db.getOutputPins(); pin[EDemoBoard.H0].setHigh(); // 驱动马达 pin[EDemoBoard.H0].setLow(); // 停止马达
Sun SPOT直流马达 编程方法: EDemoBoard db = EDemoBoard.getInstance(); 马达一 马达二 编程方法: EDemoBoard db = EDemoBoard.getInstance(); IOutputPin[] pin = db.getOutputPins(); pin[EDemoBoard.H0].setHigh(); // 驱动马达 pin[EDemoBoard.H0].setLow(); // 停止马达
Sun SPOT直流电机 假设电机的工作电压为5V 假设电机的控制引针为H0 将+5V 引针和VH引针相连接 电机电源 电机负极 假设电机的工作电压为5V 假设电机的控制引针为H0 将+5V 引针和VH引针相连接 将H0引针和电机的信号输入端相连接 将GND 引针和电机的电源负极相连接 电机还需要外接电源 编程方法: EDemoBoard db = EDemoBoard.getInstance(); Servo myServo = new Servo(pin[EDemoBoard.H0]); myServo.setValue(1500); // 设定脉冲宽度 myServo.setPosition(0.01); // 设定相对0 点的位置(0~1之间)
Sun SPOT数字信号 引针编号D0 - D4 使用TTL信号() 读取输入信号,判断电平高低 编程方法: EDemoBoard db = EDemoBoard.getInstance(); IIOPin[] pin = db.getIOPins(); pin[EDemoBoard.D0].isHigh(); // 判断是否为高电平输入 pin[EDemoBoard.D1].isLow(); // 判断是否为低电平输入 pin[EDemoBoard.D0].setHigh(); // 设定为高电平输出 pin[EDemoBoard.D1].setLow(); // 设定为低电平输出 int pulse = db.getPulse(pin[EDemoBoard.D0], true, 0); // 测量输入脉冲信号长度
Sun SPOT数字信号 引针编号D0 - D4 使用TTL信号() 读取输入信号,判断电平高低 编程练习: 将+3V与某个模拟接口对接,测量+3V的实际输出电压 将H0与D0对接,设定H0输出固定长度的脉冲,用D0进行测量H0的输出信号
Sun SPOT数字信号 直接作为UART使用 接收D0(RX) 发送D1(TX) 可以经TTL/RS-232转接到DB-9接口 编程方法: EDemoBoard db = EDemoBoard.getInstance(); db.initUART(38400, true); //设定UART通讯参数 db.sendUART('A'); // 发送字符'A' db.sendUART('T'); // 发送字符'T' byte b = db.receiveUART(); // 接收下一个字符 int length = db.UARTAvailable(); // UART缓冲区内的字符数
串口通讯调试方法 将RX和TX对接,TX发送的内容由RX接收(loop back device) 两个SPOT设备相互通讯 利用TTL/RS-232电平转换器,通过终端模拟器进行调试 Windows的超级终端 Linux的minicom
Sun SPOT外部接口 编程练习: 1 利用Sun SPOT的高电流输出驱动一只小型直流马达,使得马达转动10秒 后停止转动,等待10秒后又继续转动。 2 基于练习1 设计一个遥控马达,其中一只Sun SPOT控制马达,另外一只 Sun SPOT作为遥控器。当遥控器端按下SW1的时候,控制切换远程马达的 运行状态。 3 基于Sun SPOT编写一个串口回显设备。该设备接收RS-232数据线发送 过来的数据,并且按照同样的序列将数据回显给发送数据的设备。(使用超 级终端进行调试。) 4 驱动一个简单的步进电机HS-85 MG(舵机)。
Sun SPOT外部接口 University Outreach Programs in China 蒋清野(John) Sun 中国技术社区,高级经理 John.Jiang@Sun.Com http://www.qyjohn.net/ Qingye Jiang (John) Senior Manager Sun Developer Network, China 13