忘備録-備忘録

技術的な備忘録

aiy voicebonnetのボタンのLEDをJavaで制御する

2018-11-26 20:37:00 | raspberry ...

/sys/class/leds/ktd202x:led1/device/reset ファイルに”1”を書き込むとリセット

/sys/class/leds/ktd202x:led1/device/registers ファイルにLEDの色データを書き込むとボタンの色が変更できます。

import java.io.*;

public class led
{
    /**
     * led クラスのインスタンスのためのコンストラクタ
     */
    public led()
    {
        // インスタンス変数の初期化
        try {
            PrintWriter leddev = new PrintWriter(new BufferedWriter(new FileWriter("/sys/class/leds/ktd202x:led1/device/reset")));
            leddev.print("1");
            leddev.close();
        } catch(Exception e) {
            System.out.println("LED write error" + e);
        }

    }

    /**
     * LEDの初期化
     *
     * @param  なし
     * @return   なし
     */
    public static void resetLed()
    {
         try {
            PrintWriter leddev = new PrintWriter(new BufferedWriter(new FileWriter("/sys/class/leds/ktd202x:led1/device/reset")));
             leddev.print("1");
            leddev.close();
        } catch(Exception e) {
            System.out.println("LED write error" + e);
        }
    }

    /**
     * LEDの明るさを変える
     *
      * @param  r,g,b   明るさ 赤 緑 青
     * @return        なし
     */
    public static void changeLed(int r,int g,int b)
    {
         if( r > 255 ) r = 255;
        if( r <   0 ) r = 0;
         if( g > 255 ) g = 255;
        if( g <   0 ) g = 0;
        if( b > 255 ) b = 255;
        if( b <   0 ) b = 0;

        try {
            PrintWriter leddev = new PrintWriter(new BufferedWriter(new FileWriter("/sys/class/leds/ktd202x:led1/device/registers")));
            leddev.print("led1=" + r + ";ch1_enable=1;led2=" + g + ";ch2_enable=1;led3=" + b + ";ch3_enable=1;");
             leddev.close();
        } catch(Exception e) {
             System.out.println("LED write error" + e);
        }
    }

    /**
     * メイン
     */
    public static void main(String args[])
    {
        led.changeLed(255,0,255);
        try {
            Thread.sleep(3000);
        } catch(Exception e) {
           
         }
        led.resetLed();
    }

}