树莓派c语言 设置并使用树莓派进行Python和C语言编程

发布时间:2017-03-01

来源:服务器之家

设置并使用树莓派进行Python和C语言编程 (下)

Python部落组织翻译, 禁止转载

关键字

条件关键字

下表列出了和条件语句有关的关键字和它们的简要描述

if 用来决定将要执行哪条语句

else 可选,条件为false时,执行else关键字后的语句

elif 代表else if。如果上一个测试结果为false,则执行这条语句

not 非运算符

or 或运算符

and 与运算符

is 测试对象标识

TRUE 布尔值真

FALSE 布尔值假

循环关键字

下表列出了和循环语句有关的关键字和它们的简要描述

for 按照出现的顺序遍历集合里的所有元素

while 控制程序的流程

break 结束循环,跳出循环体

as 用来给模块添加别名

continue 结束本次循环,开始下次循环

内建函数关键字

下表列出了和内建函数有关的关键字和它们的简要描述

print 向控制台输出

pass 不做任何事

del 删除对象

类模块相关关键字

下表列出了和类、模块有关的关键字和它们的描述

class 用来创建用户定义的对象

def 用来创建用户定义的函数

global 访问函数外定义的全局变量

lambda 创建一个匿名函数

exec 动态执行Python代码

yield 构造器使用

import 向Python脚本里导入其他模块

return 退出函数并返回一个值

from 从一个模块里导入指定的变量、类或者函数

错误处理关键字

下表列出了和错误处理有关的关键字和它们的简要描述

try 指定异常处理程序

except 捕获异常,执行相应代码

finally 总会在最后被执行,用来清理资源

raise 创建用户定义的异常

assert 断言

设置编程环境

安装VIM

很多人都熟悉Vi编辑器。VIM编辑器是Vi的升级版本,不仅包含Vi的所有功能,还添加了一些功能,并对Vi进行了改进

以下是安装vim的命令

sudo apt-get install vim

使用下述命令用vim编辑文本

vim mynewProgram.py

Vim有一个带图形界面的版本,可以分别安装。这个版本打开一个支持鼠标操作的新窗口

sudo apt-get install vim-gnome

安装Python

通常情况下,树莓派已安装了Python的最新版本。如果没有,你可以通过下述命令来安装或更新Python

sudo apt-get install python-dev

安装RPi.GPIO

安装完Python后,可以安装RPi.GPIO模块,该模块用于控制树莓派的输入输出接口

下面是安装或升级模块的名令:

sudo apt-get install python-rpi.gpio

Python调试:

写代码时经常会遇到错误,需要调试找到问题的原因。

IDLE的交互模式是调试Python的最佳工具。调试菜单里有一些工具用来分析代码/程序,也可以通过逐条执行代码来观察每步变量的变化,和其它高级语言和它们的集成编译环境一样。

语法错误 最常见的错误,容易被改正。通常是拼错或误用关键字

语义错误 逻辑错误,即程序语法正确但是结果错误。通常难于定位错误,IDLE可以通过逐条执行代码来帮助我们发现原因

就像高超的编程能力一样,高超的调试能力也很重要,需要多年的练习和经验。下面是一些调试练习用于帮助我们在树莓派上调试Python程序

调试技巧

1. 使用print()函数输出代码指定位置的执行情况

2. 使用_preint()+输出变量的值

3. 检查空格是否正确

4. 行首有时会显示解释器检查出的语法错误,此时我们需要返回并且检查语法错误

5. 注意全局变量和局部变量的使用

6. 括号应该匹配

7. 不确定操作符优先级时使用括号来保证执行顺序

1. 比如:5+8*3和(5+8)*3不一样

C语言编程

安装BCM2835-C

树莓派的C库可以从下面的链接里下载

以下引用airspyace对于该库的说明

“这是一个针对树莓派的C库。用于控制通用输入输出接口和Broadcom BCM2835芯片上的其他输入输出功能,可以通过RPi板上的26个接口控制GPIO接口,因此你可以控制并访问多种外部设备。

提供函数用于SPI和I2C的数据存取,以及控制系统定时器。支持轮询式引脚事件检测(不支持中断)

与C++相容,可以作为头文件和非共享库安装在在任何Linux发行版上(但是树莓派或其他BCM 2835板以外的开发板上不起作用)。”

以下是安装步骤。按照顺序逐条执行命令

从网站下载tar文件

解压库

tar -xvzf bcm2835-..tar.gz

进入解压后的文件夹

cd bcm2835-.

运行配置命令

./configure

编译库

make

检测编译

sudo make check

安装库

sudo make install

用下述程序测试安装,该程序设置树莓派上的LED灯每500毫秒闪烁一次

#include

#define MY_PIN RPI_GPIO_P1_11

BOOLEAN main(int argc, char **argv)

{

if (!bcm2835_init())

return FALSE;

bcm2835_gpio_fsel(MY_PIN, BCM2835_GPIO_FSEL_OUTP);

while (1=1)

{

bcm2835_gpio_write(MY_PIN, HIGH);

bcm2835_delay(700);

bcm2835_gpio_write(MY_PIN, LOW);

bcm2835_delay(700);

}

bcm2835_close();

return TRUE;

}

然后编译代码

gcc -o blink blink.c -lbcm2835

以管理员身份运行程序:

sudo ./blink

安装WiringPi

下面是开源项目WiringPi的链接以及对项目描述的引用

WiringPi是一个树莓派使用的C语言编写的BCM2835通用输入输出控制库。以GNULGPLv3许可证发行,可用于C和C++以及很多其他语言(经过适当封装),和Arduino的”wiring system1“相似

安装WiringPi的步骤

sudo apt-get update

sudo apt-get upgrade

apt-get install git-core

git clone git:wiringPi

cd wiringPi

git pull origin

cd wiringPi

./build

测试WiringPi是否安装成功

gpio -v

gpio readall

用C进行光传感器编程

下面这个程序读取光强并输出

#include

#include

#define G_1 0

#define G_2 1

#define G_3 2

typedef unsigned char gchar;

gchar get_Result(void)

{

gchar i;

gchar dat1=0, dat2=0;

digitalWrite(G_1, 0);

digitalWrite(G_2,0);

digitalWrite(G_3,1);

delayMicroseconds(2);

digitalWrite(G_2,1);

delayMicroseconds(2);

digitalWrite(G_2,0);

digitalWrite(G_3,1);

delayMicroseconds(2);

digitalWrite(G_2,1);

delayMicroseconds(2);

digitalWrite(G_2,0);

digitalWrite(G_3,0);

delayMicroseconds(2);

digitalWrite(G_2,1);

digitalWrite(G_3,1);

delayMicroseconds(2);

digitalWrite(G_2,0);

digitalWrite(G_3,1);

delayMicroseconds(2);

for(i=0;i<8;i++)

{

digitalWrite(G_2,1);

delayMicroseconds(2);

digitalWrite(G_2,0);

delayMicroseconds(2);

pinMode(G_3, INPUT);

dat1=dat1<<1 | digitalRead(G_3);

}

for(i=0;i<8;i++)

{

dat2 = dat2 | ((gchar)(digitalRead(G_3))<

digitalWrite(G_2,1);

delayMicroseconds(2);

digitalWrite(G_2,0);

delayMicroseconds(2);

}

digitalWrite(G_1,1);

if(dat1==dat2)

{

return dat1 ;

}

else

return 0;

}

int main(void)

{

gchar rawValue;

gchar calculate_Value;

if(wiringPiSetup() == -1){

printf("Failure with calling a wiringPi method!");

return 1;

}

pinMode(G_1, OUTPUT);

pinMode(G_2, OUTPUT);

while(1){

pinMode(G_3, OUTPUT);

rawValue = get_Result();

calculate_Value = 210 - rawValue;

printf("Current calculate_Valueination : %d\n", calculate_Value);

delay(500);

}

return 0;

}

下面是面包板的连接

现在我们已经知道如何在树莓派上用python和C进行编程,在评论里告诉我你更喜欢哪种语言及其原因。

python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...相关推荐

  1. android 屏幕最小宽度_最小宽度360dp Android屏幕适配—被偷走的dp - 硬件设备 - 服务器之家...

    最小宽度360dp Android屏幕适配-被偷走的dp 发布时间:2017-05-11 来源:服务器之家 一.Android手机屏幕DPI DPI概念自行百度 Android手机按照不同DPI分为: ...

  2. python硬件库网址_python dev安装包 Python安装第三方库 - 硬件设备 - 服务器之家

    python dev安装包 Python安装第三方库 发布时间:2017-05-10 来源:服务器之家 Ubuntu 12.04 LTS 默认安装Python 2.7.3,没有安装python-dev ...

  3. idcardweb装入失败_vpk安装错误0xffffe Android Crash问题分析以及解决 - 硬件设备 - 服务器之家...

    vpk安装错误0xffffe Android Crash问题分析以及解决 发布时间:2017-04-10 来源:服务器之家 1.问题介绍 Crash问题,无论是java侧还是native侧,在日常测试 ...

  4. nginx 限制文件上传速度_nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 - 硬件设备 - 服务器之家...

    nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 发布时间:2017-03-09 来源:服务器之家 下面通过文字说明给大家详解Nginx上传文件全部缓存解决方案. 因为应用服务器(Jett ...

  5. python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家

    卸载python后导致yum无法使用的解决办法 发布时间:2014-08-03 来源:服务器之家 由于服务器需要升级python,参照了一篇坑爹的文章卸载了旧版python # 卸载旧的python ...

  6. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

  7. python多行输入框_wxPython控件TextCtrl的多行及样式文本框 - Python - 服务器之家

    wxPython控件TextCtrl的多行及样式文本框 发布时间:2014-03-13 来源:服务器之家 #!/usr/bin/env python #coding:UTF-8 ''' Created ...

  8. 华为ac配置radius认证服务器_华为aaa配置 华为AAA认证典型配置举例 - 网络设备 - 服务器之家...

    华为aaa配置 华为AAA认证典型配置举例 发布时间:2017-03-06 来源:服务器之家 2.5 AAA典型配置举例 2.5.1 Telnet/SSH用户通过RADIUS服务器认证的应用配置 SS ...

  9. python2.7.3怎么安装_Linux系统如何编译安装python 2.7.3 - Python - 服务器之家

    Linux系统如何编译安装python 2.7.3 发布时间:2014-04-14 来源:服务器之家 下载了linux版的python 2.7.3的安装包,解压缩,./configure make和m ...

最新文章

  1. JAVA中 @Override 的作用
  2. docker 查看已安装容器_docker中的容器安装PHP扩展件
  3. ARM函数调用时参数传递规则
  4. 认识httphandler
  5. .so 依赖目录 cmake_cmake浅析
  6. C#完美实现透明窗体的绘制效果
  7. vue.js 入门,简介
  8. 电子商务网站评价研究与应用分析
  9. 关于typora的天坑
  10. GDPR全文翻译(一)
  11. vue中加载腾讯地图(html形式)
  12. 考研政治(一)马克思原理
  13. WEB实现Excel下载的一种方式--JAVA EXCEL
  14. linux查看以i开头的文件,Linux文件查找Day.13
  15. Mac下brew及brew-cask安装使用
  16. 有效icon设计的三个属性
  17. Apache Flink 在快手万亿级数据的应用实践总结
  18. 手机上能翻译C语言的app,如何在手机上实现中英在线翻译?
  19. 人工智能——主观贝叶斯方法(主要是公式)
  20. django-cas

热门文章

  1. ks检验正态分布结果_ks检验(转)
  2. PopupMenu源码分析
  3. linux远程建立目录,linux远程创建文件夹 linux 远程复制文件及文件夹
  4. 八、图(下):公路村村通
  5. 《战地4》停止工作的改善方法
  6. 艾瑞咨询:微信5.0带动“天天爱消除”和“打飞机”周边产品热潮
  7. GEEer成长日记五:Sentinel-2计算NDVI并逐月时间序列分析
  8. AltiumDesigner的PCB网格显示改点显示
  9. 北京何氏眼科专家:缓解眼干涩,为眼睛“加油”很重要!
  10. Netty教程02:Netty实战之TCP服务