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
更多回帖