基於SnapDragonBoard410C的機械臂(一)

今天我就基於高通410c的開發板開發的機械臂給大家分享下我們的開發過程。在開發中遇到最大的問題就是我麼的智能小車是採用舵機控制的,導致我們往裏面寫一個值的時候電機一直以這個值做功。所以我們每次進行控制的時候都要先給每個點擊上電,讓每個電機都工作起來。

這裏寫圖片描述

我們的誰被有6個電機分別爲其分配了6個驅動節點分別如下:

    private static String one = "/sys/class/pwm/pwmchip1/pwm4/duty";//500000-2700000
    private static String two = "/sys/class/pwm/pwmchip1/pwm5/duty";//1000000-2300000
    private static String three = "/sys/class/pwm/pwmchip1/pwm6/duty";//500000-26500000
    private static String four = "/sys/class/pwm/pwmchip1/pwm7/duty";//800000-2800000
    private static String five = "/sys/class/pwm/pwmchip1/pwm8/duty";//500000-2600000
    private static String six = "/sys/class/pwm/pwmchip1/pwm9/duty";//600000-1600000

節點操作工具:

  public static void WriteData(String path, String content) {
        FileOutputStream fos = null;
        File file = new File(path);
        if (file.exists()) {
            try {
                fos = new FileOutputStream(file);
                Log.e("File", "FileWriter" + content);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            byte[] array = content.getBytes();
            try {
                fos.write(array);
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fos.flush();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

    public static String Redata(String path) {
        String content = new String();
        String line = new String();
        InputStreamReader is = null;
        File file = new File(path);
        if (file.exists()) {
            try {
                is = new InputStreamReader(new FileInputStream(file));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            BufferedReader bufferedReader = new BufferedReader(is);
            try {
                while ((line = bufferedReader.readLine()) != null) {
                    content = content + line;

                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return content;
    }

主要的邏輯:

        one.setProgress(50);
        two.setProgress(50);
        three.setProgress(50);
        four.setProgress(50);
        five.setProgress(50);
        six.setProgress(50);
        //每個電機在設置一個progressbar 如下:
         private void initevent() {
        one.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(1, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        two.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(2, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        three.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(3, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        four.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(4, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        five.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(5, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        six.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (!isfirst) {
                    Config.writeALL(0);
                    isfirst = true;
                }
                Config.writeArm(6, 500000 + 22000 * progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }
發佈了38 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章