地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机

地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机

  • 引脚对照表
  • 点亮RGB小灯
  • 安装旭日X3派WiringPi
  • 使用WiringPi点亮RGB小灯
  • 使用软件PWM功能

官方用户手册中只有python控制教程,没有c语言控制教程。且官方的教程中并没有软件pwm功能。本教程在开发版上安装WiringPi,使用WiringPi来控制GPIO引脚,并使用软件模拟PWM。

引脚对照表

地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机_第1张图片
地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机_第2张图片

点亮RGB小灯

根据官方的python用户手册可以点亮小灯。建议参考。注意在python中,使用的包为Hobot.GPIO,在这个包中不支持软件模拟PWM功能(官方手册中如是说)
将RGB小灯的G口使用杜邦线连接到开发版的29号引脚,并接GND。然后运行程序,灯将绿色闪烁。

#!/usr/bin/env python3

import Hobot.GPIO as GPIO
import time

# 定义使用的GPIO通道为29
blue_pin = 29 # BOARD 编码 29
def main():
    # 设置管脚编码模式为硬件编码 BOARD
    GPIO.setmode(GPIO.BOARD)
    # 设置为输出模式,并且初始化为低电平
    GPIO.setup(blue_pin, GPIO.OUT, initial=GPIO.LOW)
    print("Starting demo now! Press CTRL+C to exit")
    try:
        while True:
            GPIO.output(blue_pin, GPIO.HIGH)
            time.sleep(1)
            GPIO.output(blue_pin, GPIO.LOW)
            time.sleep(1)
    finally:
        GPIO.cleanup()
if __name__=='__main__':
    main()

安装旭日X3派WiringPi

参考官方教程可顺利安装。注意在WiringPi中,默认使用BCM引脚编号。在上图中,BCM引脚为5是,对应GPIO119,BOARD物理编号为29 。

使用WiringPi点亮RGB小灯

编译下面的c代码,然后使用sudo权限运行可执行程序。灯将绿色闪烁。
编译命令参考

 /usr/bin/g++ -fdiagnostics-color=always -g /home/sunrise/Documents/step_motor/cycle50.cpp -o /home/sunrise/Documents/step_motor/cycle50 -lwiringPi -lpthread
#include 
#include 
int green_pin = 5;
int main(void)
{
	wiringPiSetup();
    pinMode(green_pin, OUTPUT);
	while(1)
	{
		digitalWrite(green_pin,HIGH);
		delay(1000);
		digitalWrite(green_pin,LOW);
		delay(1000);
	}
	return 0;
}

使用软件PWM功能

将伺服电机SG90信号线连接开发版36引脚,也就是BCM编码下16引脚。并连接地线和电源线。编译下面代码。sudo执行编译后文件。电机将正转180度后反转180度。

/usr/bin/g++ -fdiagnostics-color=always -g /home/sunrise/Documents/step_motor/cycle50.cpp -o /home/sunrise/Documents/step_motor/cycle50 -lwiringPi -lpthread
#include 
#include 
#include 

#define pwm_pin 16

int main(void)
{
    wiringPiSetup();                 // 初始化wiringPi库
    softPwmCreate(pwm_pin, 0, 100);  // 创建软件PWM对象,设置占空比范围为0-100
    int val = 5;
    while (1)
    {
        // 切换占空比值
        if (val == 25)
            val = 5;
        else
            val = 25;
        softPwmWrite(pwm_pin, val);  // 设置PWM引脚的占空比
        delay(400);                  // 延迟一段时间
    }
    return 0;
}

你可能感兴趣的:(ubuntu,嵌入式硬件)