|
BB Black 入门基础之Eclipse C++ 控制LED灯(下)
[复制链接]
本帖最后由 lonerzf 于 2014-1-13 10:29 编辑
今天趁时间还有一些赶紧把下写完。
还记得昨天的两篇吗? 如果成功了,就做这个吧,点亮LED灯。
LED灯在哪呢,其实人家做BeagleBone的时候都考虑得很好啦,许多东西都已经做好了,GPIO什么的直接写参数就能配置。以后还会遇到 Device Tree 这类的东西呢。当然,现在用不着这么急写驱动,也没必要,这东西得慢慢来嘛,先上手再说。可以看看,在/sys/class/ 下有不少有用的东西。
进入这个目录,咱们选择LED3
cd /sys/class/leds/beaglebone\:green\:usr3
复制代码 然后使用超级用户进行操作 sudo -s
注意:并不建议把文件权限改成可读。还是用sudo吧
试试这条指令
sudo -s echo 1 > brightness
复制代码 怎么样,LED3点起来了没?
关闭LED3就是这个指令
有兴趣的可以去看看,文件brightness其实就0或1而已,控制LED 开关。
上面几步没问题吧?那好,写程序啦(帖子不支持井号,这里用?代替)
- ?include <iostream>
- ?include <stdio.h>
- ?include <unistd.h>
- using namespace std;
-
- int main() {
- cout << " BeagleBone Black! " << endl;
- cout << " LEDs Flash Start!" << endl; // prints !!!Hello World!!!
- FILE *LEDHandle = NULL;
- char *LEDBrightness = "/sys/class/leds/beaglebone\:green\:usr3/brightness"; //这个就是咱们刚才进的目录啊。brightness是要操作的文件
-
- for(int i =0; i<10; i++)
- {
- if( (LEDHandle = fopen(LEDBrightness, "r+")) != NULL )
- {
- fwrite("1", sizeof(char), 1, LEDHandle); //写1 表示点亮LED
- fclose(LEDHandle);
- }
- sleep(1);
-
- if( (LEDHandle = fopen(LEDBrightness, "r+")) != NULL )
- {
- fwrite("0", sizeof(char), 1, LEDHandle); //写0表示关LED
- fclose(LEDHandle);
- }
- sleep(1);
- }
-
- cout << " LEDs Flash Stop!" << endl; // prints !!!Hello World!!!
- return 0;
- }
复制代码
然后就是那一系列的过程了。这里就不调试了,直接Run。那么注意配置要稍稍改下。
这里我还是不好把握,就这样吧。为了方便,默认就这样了,要做修改的时候再说。呵呵。
这里讲一个实用操作,有时候要运行程序没必要在切换到其他终端下操作,Eclipse就成。
我是这么做的。
运行下试试。
???
灯闪了没?
有字符显示,但是LED没有闪?那就对了。上面已经提到过了,权限不够嘛。
怎么办?
1 进入终端去运行
2 SSH以root用户登录(先给你的ROOT用户设置密码 sudo -s passwd root 两条指令)
然后Remote System 属性里边将登录ID改成root.
准备好Run了没?
Go!!!
庆祝吧,乡亲们~
好了,LED就这么轻松点亮了。有时候看着挺难的东西,就差有人指点一下,知道了以后发现原来很简单。这一点我深有体会,所以希望更多的人能分享交流,大家共同进步。
这部分到这里吧,就到这里了。{:soso_e100:}
|
|