查看: 1961|回复: 0

[原创] 【 钛极小龟】LED控制

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-8 16:17
  • 签到天数: 971 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2018-11-22 16:59:36 | 显示全部楼层 |阅读模式
    分享到:
    钛极小龟的开发,要添加必需的Library
    在工程属性中找到“Java Build Path" 中Libraries中选择"Add Library" 文件
    1.png

    LED的控制需要用到 以下两个库
    import tijos.framework.devicecenter.TiGPIO;import tijos.framework.transducer.led.TiLED;


    具体代码如下:
    1. import java.io.IOException;

    2. import tijos.framework.devicecenter.TiGPIO;
    3. import tijos.framework.transducer.led.TiLED;
    4. import tijos.framework.util.Delay;

    5. public class TiJOSLED {

    6.         public static void main(String[] args) {
    7.                 // TODO Auto-generated method stub
    8.                 try {
    9.                         /*
    10.                          * 定义使用的TiGPIO port
    11.                          */
    12.                         int gpioPort0 = 0;
    13.                         /*
    14.                          * 定义使用的TiGPIO Pin
    15.                          */
    16.                         int gpioPin2 = 2;
    17.                         /*
    18.                          * 资源分配, 将gpioPort与gpioPin0分配给TiGPIO对象gpio2
    19.                          */
    20.                         TiGPIO gpio0 = TiGPIO.open(gpioPort0,gpioPin2);
    21.                         /*
    22.                          * 资源绑定, 创建TiLED对象red并将gpio0和gpioPin2与其绑定
    23.                          */
    24.                         TiLED redRelay = new TiLED(gpio0,gpioPin2,true);
    25.                         /*
    26.                          * 资源使用, 控制灯的亮与灭
    27.                          */
    28.                         while(true) {
    29.                                 redRelay.turnOn();
    30.                                 System.out.println("redRelay is turned on");
    31.                                
    32.                                 Delay.msDelay(5000);
    33.                                
    34.                                 redRelay.turnOff();
    35.                                 System.out.println("redRelay is turned off");
    36.                                 Delay.msDelay(5000);
    37.                         }
    38.                 }catch(IOException ex) {
    39.                         ex.printStackTrace();
    40.                 }
    41.         }

    42. }
    复制代码
    我们更好奇的是
    import tijos.framework.devicecenter.TiGPIO;import tijos.framework.transducer.led.TiLED;
    这两个库是怎么实现的,
    TiGPIO没有找到任任何资料,至于 TiLED 的代码如下:
    1. package tijos.framework.transducer.led;

    2. import java.io.IOException;

    3. import tijos.framework.devicecenter.TiGPIO;

    4. public class TiLED {
    5.         /**
    6.          * TiLED pin id
    7.          */
    8.         private int ledPin;
    9.         /**
    10.          * TiLED high level active flag
    11.          */
    12.         private boolean highActive;
    13.         /**
    14.          * TiLED turned on flag
    15.          */
    16.         private boolean ledOn;
    17.         /**
    18.          * TiGPIO object
    19.          */
    20.         private TiGPIO gpioObj;

    21.         /**
    22.          * TiLED initialization, default:highLevel=false
    23.          *
    24.          * @param gpio
    25.          *            TiGPIO object[IN]
    26.          * @param signalPinID
    27.          *            signal pin id[IN]
    28.          * @throws IOException
    29.          */
    30.         public TiLED(TiGPIO gpio, int signalPinID) throws IOException {
    31.                 this(gpio, signalPinID, false);
    32.         }

    33.         /**
    34.          * TiLED initialization
    35.          *
    36.          * @param gpio
    37.          *            TiGPIO object[IN]
    38.          * @param signalPinID
    39.          *            signal pin id[IN]
    40.          * @param highLevel
    41.          *            true:high level active, false:low level active[IN]
    42.          * @throws IOException
    43.          */
    44.         public TiLED(TiGPIO gpio, int signalPinID, boolean highLevel) throws IOException {
    45.                 gpio.setWorkMode(signalPinID, TiGPIO.OUTPUT_PP);
    46.                 gpio.writePin(signalPinID, highLevel ? 0 : 1);
    47.                 gpioObj = gpio;
    48.                 ledPin = signalPinID;
    49.                 highActive = highLevel;
    50.                 ledOn = false;
    51.         }

    52.         /**
    53.          * Turn on
    54.          *
    55.          * @throws IOException
    56.          *
    57.          */
    58.         public void turnOn() throws IOException {
    59.                 synchronized (this) {
    60.                         gpioObj.writePin(ledPin, highActive ? 1 : 0);
    61.                         ledOn = true;
    62.                 }
    63.         }

    64.         /**
    65.          * Turn off
    66.          *
    67.          * @throws IOException
    68.          *
    69.          */
    70.         public void turnOff() throws IOException {
    71.                 synchronized (this) {
    72.                         gpioObj.writePin(ledPin, highActive ? 0 : 1);
    73.                         ledOn = false;
    74.                 }
    75.         }

    76.         /**
    77.          * Turn over
    78.          *
    79.          * @throws IOException
    80.          *
    81.          */
    82.         public void turnOver() throws IOException {
    83.                 synchronized (this) {
    84.                         if (ledOn)
    85.                                 gpioObj.writePin(ledPin, highActive ? 0 : 1);
    86.                         else
    87.                                 gpioObj.writePin(ledPin, highActive ? 1 : 0);
    88.                         ledOn = !ledOn;
    89.                 }
    90.         }

    91.         /**
    92.          * Check if turned on
    93.          *
    94.          * @return true or false
    95.          */
    96.         public boolean isTurnedOn() {
    97.                 synchronized (this) {
    98.                         return ledOn;
    99.                 }
    100.         }

    101.         /**
    102.          * Gets the signal pin id
    103.          *
    104.          * @return pin id
    105.          */
    106.         public int getSignalPinID() {
    107.                 return ledPin;
    108.         }
    109. }
    复制代码
    运行一下,看到继电器的灯5秒亮 5秒灭的循环。

    整体的工程文件如下
    HelloTiJOS.rar (6.26 KB, 下载次数: 0, 售价: 1 与非币)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 04:11 , Processed in 0.119424 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.