硬件接线
回顾香橙派的物理引脚对应:
所以将VCC接到1,GND接到6,I/O口接到7:
代码编写
香橙派的wiringOP库提供了很多的例程,可以将blink.c拷贝进自己的代码文件夹来修改:
小插曲---将手动对齐的Tab和自动对齐 从8个空格设置为4个空格 & 自动显示行号 的方法
sudo vim /etc/vim/vimrc set tabstop=4 设置tab键缩进4个空格 set shiftwidth=4 设置批量对齐时候的tab键空格数为4 set nu 这样用vi打开文件的时候会自动显示行号
然后vi blink.c进行修改:
#include <stdio.h>
#include <wiringPi.h>
#define BEEP 2 //娉ㄦ剰锛岃渹楦e櫒I/O鍙e搴旂殑鐗╃悊寮曡剼鐨?鍙凤紝鍏跺疄瀵瑰簲鐨剋Pi鐨勭2鍙?
int main (void)
{
wiringPiSetup () ; //鍒濆鍖杦iringPi搴?
pinMode (BEEP, OUTPUT); //閰嶇疆杈撳叆杈撳嚭妯″紡
while(1){
digitalWrite (BEEP, LOW) ; //铚傞福鍣ㄥ搷
delay (1000) ; // mS
digitalWrite (BEEP, HIGH) ; //铚傞福鍣ㄤ笉鍝? delay (1000) ;
}
return 0;
}
然后编译,但是此时不能单纯使用gcc,还需要链接“-lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt”6个库才能成功编译:
但是,每次编译都输入这么大一长串的库很麻烦,因此可以写一个脚本“build.sh”:
shell脚本插曲---脚本应该适用于各种程序名字:
shell脚本处理参数,可以通过$?来处理,这里的$1是要编译的文件
这里的“$?”就和之前的argv[?]是类似的概念
gcc $1 -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
但是发现无法编译:
原因是:创建出来的脚本是没有权限的,需要使用“chmod +x build.sh”来赋予他可以被执行的权限:
此时再按照格式编译,就成功生成了a.out文件!
注意,a.out要使用sudo来运行:
此时就可以听到蜂鸣器以固定间隔开始响了!
此时可以再次输入“gpio readall”来验证:
可见,PC9对应的Mode由“OFF”变成了“OUT”