今天我就基於高通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) {
}
});
}