你能学到什么

阅读完这篇文章,你将收获如下的知识点:

  1. 如何在MacOS中编写C程序源文件
  2. 如何将C程序源文件从MacOS中传输到树莓派
  3. 如何从MacOS编译树莓派上的C程序源文件
  4. 如何从MacOS执行树莓派上的程序

环境介绍

MacOS环境

在本文中,我拿到的是一台2020版13吋的MacBook Pro,操作系统是MacOS Monterey,版本号是12.2.1. CPU是英特尔的I5处理器,主频2G Hz,内存是16G。

树莓派环境

本文使用的树莓派型号是3B+,其CPU型号是四核Broadcom BCM2835 64位处理器,通过命令cat /proc/cpuinfo可以查看详细信息如下图。

树莓派安装的OS是官方系统Buster,这个系统有点老了,现在最新的系统是Bullesys。不过没有关系,老点就老点,并不影响本文要介绍的知识。

程序设计

在本文中,我将用C语言编写一个程序,用GPIO1(物理管脚12)制作一颗呼吸灯。

树莓派一共有40个IO口,其中GPIO1是唯一支持PWM输出的IO口,呼吸灯的制作,需要用到IO口的PWM特性。

电路连接是这样的,将一颗LED灯串接在树莓派的12管脚(GPIO1)与9管脚(GND)之间,由GPIO1对LED灯进行供电,通过控制PWM的宽度,即可控制LED灯的亮度。

再进行程序编写之前,有必要介绍一下用到的wiringPi库函数,有关wiringPi介绍及安装,请参考《精通树莓派-使用C语言控制GPIO之wiringPi库》。

void pinMode (int pin, int mode)

这个函数用于设置IO口的工作模式,在本文的例子中,我将树莓派的12号管脚设置为PWM输出模式,代码语句为pinMode(PIN12, PWM_OUTPUT)。

void pwmWrite (int pin, int value)

这个函数用于设置12号管脚的脉冲宽度,value的取值范围是0到1024.

下面直接奉送代码。

将程序文件传输到树莓派

我是直接使用Apple的Xcode创建的程序文件,命名为BreathingLED.c,现在介绍如何将这个程序文件输出到树莓派。

首先,从控制台中找到Terminal终端,打开它。

接着,使用命令 scp BreathingLED.c pi@192.168.3.249:~ 将程序文件传送到树莓派的主目录,这个命令的语法是这样的:scp -r 文件夹目录 用户名@树莓派IP地址:目标路径

从MacOS上编译树莓派的C文件

如果从Windows电脑登录树莓派系统,你可能需要安装Putty工具,才能进行SSH连接,但MacOS其实已经自带SSH工具,你只需要从Terminal终端里面直接连就可以了,不需要安装额外的工具。

命令的语法是这样的:ssh 用户名@树莓派IP地址,比如我的树莓派的登录用户名是pi,IP地址是192.168.3.249,那么这条登录命令就是ssh pi@192.168.3.249,然后根据提示输入密码,就远程登录到了树莓派系统。

编译C文件

编译的命令是gcc -o BreathingLED BreathingLED.c -l wiringPi.

最后,通过命令sudo ./BreathingLED直接运行刚刚编译出来的可执行文件。

使用树莓派GPIO控制LED灯https://www.zhihu.com/video/1481042684127731712