飞凌嵌入式
直播中

jf_39110170

1年用户 330经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计
私信 关注
[技术]

【飞凌i.MX9352开发板试用】+机械臂游戏2游戏操纵杆控制四自由度机械臂(开源)原创首发

NXP遥控机械臂

接上一篇:【飞凌i.MX9352开发板试用】+机械臂游戏1开箱—游戏操纵杆(开源)原创首发 - 飞凌嵌入式 - 电子技术论坛 - 广受欢迎的专业电子论坛! https://bbs.elecfans.com/jishu_2362224_1_1.html

ADC测量,并控制LED灯亮灭 源代码:

#!/bin/bash
 # 定义SPI通信参数
 CHANNEL=0 CLK_SPEED=1000000 
# 定义LED控制脚 LED_PIN=18 
# 读取ADC数值
 adc_value=$(gpio -x mcp3008:100:0 aread $CHANNEL)
 # 将ADC数值转换为电压值
 voltage=$(echo "scale=2;$adc_value*3.3/1024" | bc)
 # 判断ADC测量值,并控制LED灯亮灭
 if (( $(echo "$voltage > 2.5" | bc -l) )); then gpio -g write $LED_PIN 1 
# 点亮LED 
else gpio -g write $LED_PIN 0
 # 关闭LED 
fi

if (( $(echo "$adc_value < 500" | bc -l) )); then  
       echo 1 > /sys/class/leds/led1/brightness 
else
       echo 0 > /sys/class/leds/led1/brightness
fi

控制四自由度机械臂 源代码:

#!/bin/bash
port="/dev/ttyUSB2"
baudrate="9600"
echo none > /sys/class/leds/led1/trigger
while true
do
adc_value=$(cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw)
echo "ADC value: $adc_value"
if (( $(echo "$adc_value < 500" | bc -l) )); then
 echo "A" > "$port"
      # echo 1 > /sys/class/leds/led1/brightness
elif(( $(echo "$adc_value > 3900" | bc -l) )); then
       echo "b" > "$port"
       #echo 0 > /sys/class/leds/led1/brightness
fi


adc_value2=$(cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw)
echo "ADC value2: $adc_value2"
if (( $(echo "$adc_value2 < 500" | bc -l) )); then
 echo "C" > "$port"
      # echo 1 > /sys/class/leds/led1/brightness
elif(( $(echo "$adc_value2 > 3900" | bc -l) )); then
       echo "d" > "$port"
       #echo 0 > /sys/class/leds/led1/brightness
fi


adc_value3=$(cat /sys/bus/iio/devices/iio\:device0/in_voltage2_raw)
echo "ADC value3: $adc_value3"
if (( $(echo "$adc_value3 < 500" | bc -l) )); then
 echo "e" > "$port"
      # echo 1 > /sys/class/leds/led1/brightness
elif(( $(echo "$adc_value3 > 3900" | bc -l) )); then
       echo "f" > "$port"
       #echo 0 > /sys/class/leds/led1/brightness
fi


adc_value4=$(cat /sys/bus/iio/devices/iio\:device0/in_voltage3_raw)
echo "ADC value4: $adc_value4"
if (( $(echo "$adc_value4 < 500" | bc -l) )); then
 echo "g" > "$port"
      # echo 1 > /sys/class/leds/led1/brightness
elif(( $(echo "$adc_value4 > 3900" | bc -l) )); then
       echo "h" > "$port"
       #echo 0 > /sys/class/leds/led1/brightness
fi


sleep 0.018
done

循环读取ADC测量值并发送到串口 源代码:

#!/bin/bash

# 设置串口号和波特率
port="/dev/ttyUSB2"
baudrate="9600"

# 循环读取ADC测量值并发送
while true
do
    # 读取ADC测量值
    adc_value=$(cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw)

    # 将ADC测量值转换为字符串
    adc_string=$(echo "$adc_value" | tr -d '\n')


# 发送ADC测量值到串口
    echo "$adc_string" > "$port"

    # 等待1秒钟
    sleep 1
done

NXP遥控舵机

更多回帖

发帖
×
20
完善资料,
赚取积分