用树莓派学习C++,Java编程可以吗

树莓派晚上可以用来做什么? - 文章 - 伯乐在线
& 树莓派晚上可以用来做什么?
树莓派是一种十分有用的小计算机。我有好几个呢,因为我会把它用到我的白天的工作中,我想是时候用一个在晚上了。
我也很喜欢养热带昆虫,特别是甲虫。这些可不是你家花园里那些甲虫,除非你刚好生活在雨林。我现在手上的这些是,它们来自美洲中南部。下面放照:
这只是雄性的象甲虫,香蕉用来做参照。
这些昆虫通常是夜行的。在白天它们通常喜欢在垫草(苔藓)下面挖洞,或者挂在树杈上。但到了晚上,它们就变得十分活跃。我之所以知道这一点,是因为
当我早上起来,我发现它们箱子里的树枝都被重新排列了。
现在来说说我的树莓派项目,我想用树莓派的摄像头来做一部网络相机,也想做一些延时摄影的视频,因为我真的不想盯着屏幕12小时来看看这些小家伙都在晚上干了点啥。于是就有了Beetlecam(甲虫相机)这个项目,它会时不时在进行直播。默认情况下,Beetlecam会每30秒拍一张照片,也可以根据给定的时长生成延时影片。下面是经过24小时拍摄的镜头压缩到20分钟左右的视频。
在这篇文章里我将告诉你如何用你的树莓派来组装并运行一个Beetlecam。
Beetlecam 硬件
要运行一个Beetlecam,你需要下面3样东西:
一个树莓派(任何型号,除了树莓派 zero,因为它不支持摄像头)
一个树莓派摄像头
一箱子热带昆虫
或许你没有第三项,别担心,它可以用到任何你想要延时摄影的地方。
一个常规的树莓派摄像头就够了,但我用的是红外线版,因为它可以在全黑的情况下进行拍摄。如果你要拍的对象是在夜间活动的,那么红外线版本就必不可少了。下面是我的小派和摄像头(注意摄像头左右各有一个红外LED)。
树莓派外接红外摄像头
安装树莓派十分简单,我用了魔术贴来把它粘在箱子上面,也方便移动位置。下面是安装好的:
安装好的树莓派和红外摄像头
Beetlecam 软件
Beetlecam软件分为两部分,一部分是一个web应用,用来展示最后拍下的图像,另一部分是一个脚本每隔一段时间就拍一张照片然后上传。这两部分都在.
要运行Beetlecam,你还需要一些额外的类库。你可以用树莓派桌面上的terminal(终端)应用来安装它们,或者用/来远程连接到树莓派上。不管你用哪种,运行下面的命令:
sudo apt-get update
sudo apt-get install python-dev python-pip python-lxml libjpeg-dev
sudo pip install moya picamera
<div class="crayon-num" data-line="crayon-58b6dd<div class="crayon-num crayon-striped-num" data-line="crayon-58b6dd<div class="crayon-num" data-line="crayon-58b6dd
sudo apt-get updatesudo apt-get install python-dev python-pip python-lxml libjpeg-devsudo pip install moya picamera
这可能要花一些时间,来杯咖啡吧。
当上面的命令都完成,你就能运行这个命令了moya -v
下一步是从Github上获取Beetlecam的源码,通过以下命令获取:
sudo apt-get install git
git clone /moyaproject/beetlecam.git
sudo apt-get install gitgit clone https://github.com/moyaproject/beetlecam.git
这个命令会在你当前路径下创建一个beetlecam文件夹,并用cd beetlecamcd到这个目录下。
在这个目录里,你应该可以找到一个叫做beetlecam.py的Python文件。这是一个周期性拍照并上传照片的脚本。这个所做的是拍摄照片并发送POST请求给web应用。当你在一个网页上填表单时,浏览器就会发出一个POST请求。Beetlecam所做的,就是给填数据。
通过下面命令运行 beetlecam.py:
python beetlecam.py run -r 30
<div class="crayon-num" data-line="crayon-58b6dd
python beetlecam.py run -r 30
你将会看到命令行有错误提示,那是因为我们还没有运行Beetlecam的web应用部分。
要运行web应用,需要打开一个新的Terminal(终端)窗口,或者SSH实例。这样我们就可以让beetlcam.py一直在小派上运行。cd到beetlecam路径下然后运行:
<div class="crayon-num" data-line="crayon-58b6dd<div class="crayon-num crayon-striped-num" data-line="crayon-58b6dd
cd sitemoya init
这个命令会初始化web应用并创建数据库。接着,用下面的命令来运行web应用:
moya runserver -t --host 0.0.0.0
<div class="crayon-num" data-line="crayon-58b6dd
moya runserver -t --host 0.0.0.0
然后你就应该可以用浏览器打开
看到beetlecam.py拍摄的照片了。也许你用的是网络里面的另外一台机器,那就应该用树莓派的主机名替换URL,默认情况下是 。
第二部分?
如果大家还感兴趣的话,我将告诉大家如何创建一个延时摄影视频,并将介绍更多 beetlecam.py 的细节,以及web应用的实现。
关于作者:
可能感兴趣的话题
"并用cd beetlecamcd到这个目录下。" 为啥那个cd beetlecam的的样式没有了?
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选文章
&#8211; UI,网页,交互和用户体验
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2017 伯乐在线  回复第85楼(作者:@treestart 于
14:42)  转行成功了吗?转行成功了,可是没编程,做办公用品销售了!  ==========  
  回复第88楼(作者:@treestart 于
00:17)  @q楼
02:14:50  毕业一年,失业3个月……  ==========贷款恐怕得不偿失  
  楼主是被IT所谓的“高薪”蒙蔽了双眼吧,说实话。搞开发重要的是思想,但这个思想是日积月累的,30岁学,即使学出来别人也只能从底层开始,不可能哪家公司招一个刚学出来的去搞架构....等你日积月累到一定时间又到了退休年龄了,公司会想方设法炒掉你。
  我更愿意看到转行后的你事业成功  
  回复第1楼,
@浮生若梦今天  java.  C++  .net  php  C#  嵌入式  有没有高人告诉我,它们区别在哪?哪个应用更多些,学哪个发展前景更好?  --------------------------  @masaneey 44楼
22:38:51  我也30岁了,辞掉以前的工作,现在在学编程,虽然以前工资不低,但是我受够了老板的脸色,靠技术不会顾及那么多人的脸色(可能我不太会处理人际关系吧,或者我心胸不够强大。)我学了一个半月php,现在出来找份5000的起步工资应该不是问题。  -----------------------------  请问你现在是什么情况,请给我们这些想转行学的人点建议啊,谢谢。
  @liujun楼
17:10:26  我的天呐,你的经历竟然和我一模一样,想法也和我一样,只不过我29,现在也在自学JAVA,培训班报不起哦,太贵了  -----------------------------  兄弟学得怎么样了啊,又一个一模一样来了。
  回复第106楼(作者:@小平阿飞 于
19:04)  @liujun楼
17:10:26  我的天呐,你的经……  ==========  同是天涯沦落人  
  回复第103楼(作者:@wjh0856 于
22:39)  楼主是被IT所谓的“高薪”蒙蔽了双眼吧,说实话。搞开发重要的是思想,但这个思想是日积月累的,30……  ==========  当时就是你说的这个想法,幸好当时没有确定转行,不然现在肯定后悔  
  回复第75楼(作者:@qaqaqa1976 于
07:19)  回复第1楼,@浮生若梦今天  java.   C++   .net   php   C……  ==========  谢谢,回复的晚了点,几近弃楼  
  我外甥就是做编程的,去招聘会的时候,人家公司一看是培训学校出来的,连简历都不收。
  楼主,两年前我也跟你有同样的想法,可两年后我却进了工地!不知道你现在近况如何?  
  楼主现在咋样了,做什么行业?
  @wowatmel 56楼
14:14:38  我今年24岁,心中也是想学编程,一心想做个程序员,别人问我为什么?我会说我很感兴趣,不知道我还来得及么?  -----------------------------  来得及!很定来得及的
  t没有理论支撑也只能搞搞边角,成不了大器  
  @sjupup 111楼
20:39:08  楼主,两年前我也跟你有同样的想法,可两年后我却进了工地!不知道你现在近况如何?  -----------------------------  兄弟,工地如何?听说工地都是89千上万的
  @浮生若梦今天 1楼
21:32:27  java.  C++  .net  php  C#  嵌入式  有没有高人告诉我,它们区别在哪?哪个应用更多些,学哪个发展前景更好?  -----------------------------  懂 电子技术
就做 嵌入式 开发,这个也不错 。有兴趣可以 交流下
  苦,脏,累!无休息,一般瓦工木工三百左右一天,也看老板给吧,一般都两百以上,我小工,啥都不会,跟人后面当学徒  
  @浮生若梦今天 1楼
21:32:27  java.  C++  .net  php  C#  嵌入式  有没有高人告诉我,它们区别在哪?哪个应用更多些,学哪个发展前景更好?  -----------------------------  兄弟,怎么没有更新了,我今天遇到了你一样的困境,准备去学了,你学的怎么样了啊
  mark,30岁是个尴尬的年纪,后悔当初没有早点折腾稳定下来
  @楚乔942 83楼
16:28:27  楼主30岁还有激情,梦想赞一个  不过30岁开始学技术,坦白的说,晚了点。毕竟在这个行业永远都不缺乏有技术有活力的年轻人,你和他们完全没有竞争力。他们有完整的计算机体系的培养,了解操作系统,算法,数据库,甚至编译。所谓的C++,PHP,java仅仅是一门语言而已。你仅仅学了语言,没有基础知识的积累,就算语言学好了,也只能做码农,系统架构离你相当遥远。而且计算机是青春饭,年龄越大越吃亏。年纪大的技术的出路......  -----------------------------  我也是在做IT相关管理,可是想赚代码。
  说真的 不看好你。去学了就知道了,学得精要有一定的天赋。  之前我也去短期培训,最后坚持下来的 几个。一本身敢兴趣。  二有一定的数学基础。  培训班也有几个 像你年龄大的。其中一个卖房地产中介的 学了几天就不学了。好像退了一半以上的学费。 总之这些年龄大
最后都放弃了。  本身程序员是吃青春饭的。过了年龄没上管理层,比什么都难都辛苦。  嘴上有决心 到时候学习过程 你就知道痛苦。没有基础没天分 只能是普通以下的水平。
  30岁0基础,还不如找个应届毕业生,至少人家年轻。
  看你的钻研能力了。
  @浮生若梦今天 哥们,现在IT学的怎么样了?
  原来销售上去了
  不如去学PLC编程,说实话,可编程控制器太难学,逻辑思维要非常好  
  如果LZ所说的是真的话,那么我拿我自己的亲身经历来现身说法一下吧,本人83年的屌丝一枚,11年结的婚,结婚才知道什么叫压力,上有老,下有小,我从08年就开始接触编程,一直是搞PHP的,不过中间因为财政原因,停了两三年,也就是说我用在PHP上的时间差不多不到三年,我可以用我的人格担保,LZ如果从培训学校出来,就凭你从培训学校那里学到的那么一点点皮毛,你是绝对不可能进入编程这个行业的,原因很简单,你没有经验,所以,你花了一万块钱去学JAVA,其实你这种情况学PHP会稍微好一点,如果你非做编程不可的话,如果你真的铁了心的要学JAVA,我可以用我的人格向你担保,你绝对入不了门,再加上你是零基础,就更别想了,像我跟PHP纠缠了那么多年,拿起来又丢,丢了又拿,拿起来再去啃,现在都还只是个只会套模版的小菜鸟,更何况我在大学还有C的基础,都是这幅屌样,LZ你要真去学的话,我只能替你和你家人捏把汗了, 是一大把汗!!!所以,大家都是苦命人,我不想去忽悠,你还不如拿这一万块钱去创业,摆个小摊什么的,绝对比你学JAVA靠谱一百倍!!!真的,我都想做点小生意了!!!
  不看好!  
  两年半了,不知道LZ现在是什么情况了?做了哪行了?我也遇到这样的问题了,求过来人指点一下
  @lmg4-12-09 16:24:56  两年半了,不知道LZ现在是什么情况了?做了哪行了?我也遇到这样的问题了,求过来人指点一下  -----------------------------  每天被各种技术问题困扰
有时只能一个人琢磨。
老板催,客户催,这种压力可想而知。 要学的东西也很多
  @浮生若梦今天   我支持你学技术。如果你想学,可以加入我们庭博网校,我以最低的价格最优质的服务手把手,一对一的带你。  电话:(湖北荆门) QQ
  楼主,请问你现在转型成功了吗?我也是零基础,想转行去搞软件。
  @q12-05-23 02:14:50  毕业一年,失业3个月,性格内向,做不了销售。,我也想学编程,可惜没钱去培训。,现在愁死了。唉。  -----------------------------  那你只能自学了
  学技术,还是新东方!!!  开个玩笑,我也是30岁了。现在和你一样考虑这个问题,自己先看完了C#基础视频,感觉没有完全消化,SQL数据库什么的还没来得及看,现在也在上班自学,感觉时间根本就不够用。
  呵呵。光学个java,能学到啥?没基础估计听都听不懂。还一万块……  
  @chhem
10:28:22  你开始学了吗,楼主?  -----------------------------  我真的很想念她,我现在才知道,原来想见一个人见不到的感觉是这样的《在说一次我爱你》
  好一记洛阳铲!  
  现在的我的处境就是几年前楼主的情况,做了12年销售,突然觉得销售很基层,想转职业,但找了三个月工作都做不到,都是没有相关工作经验而失败,我妈、我老婆、我岳母都对我有微言,老叫我快点找到工作,还找不到就回去干老本行!我现在很烦恼!  
  @灌水网名
20:00:05  学什么也别学IT,本人顶级IT行家,顶级通信专家给年轻人的肺腑忠言  -----------------------------  @布偶猫i
16:02:09  为啥不要学IT,想看你详细观点,可以吗  -----------------------------  奇怪,能干到顶级IT专家的人,居然不爱这一行,而且还觉工作痛苦
  @知足常乐了吗
17:42:07  我也想去学个技术,现在奔三年龄,晚上经常为工作的事失眠, 以前也有份稳定的工作,每天过着安稳的日子,对自己太过于自信, 现在辞职出来发现自己是太天真,回到以前的行业也不好找,想想都这个年龄了,怎么转行? 什么都要经验,到现在还在失业中.........  -----------------------------  @shmilywzh
10:20:20  同道中人  -----------------------------  我是女生
我也想转行学编程
  30岁不小了,确实需要抓紧时间了,自学时间太慢,还是去培训吧,我个人建议,动力节点java培训机构不错,可以去看一下。
  零基础开始学编程确实有一些难度,但并非不可能。  个人总结是3个关键字:兴趣+方法+坚持  兴趣就是从学习动力上有保证,是为了爱好而学习,不是为了赚钱。只有感受到乐趣,即使艰苦的过程也就能承受。  方法就是要有一条合适的学习路径以及学习方法,这个是新手最难把握的。编程也分很多方向/行业/技术,要选择一条难度曲线适合自己的路径,学习的过程中也要掌握一定的方法:多读,多练,多问,多想。后面我会介绍详细一条学习路径供参考。  坚持就不要说了,没有任何一种成功是随随便便的,都是需要付出艰苦的努力的。  最近我在写一个系列教程,大致计划如下:  第一部分:python编程入门和简单控制传感器  第一节课【0001 零基础的小白能学会编程吗?】:  主要说明为什么要学编程,零基础能不能学会编程,编写这个课程的一些初心,以及如何才能进入编程这个世界。  金刚经第一章的名字是【法会因由】,万事万物总有一个原因和源头,我们从这里出发,就是一种缘分。  第二节课【0002 真的吗,700元的电脑可以学会编程?】  主要说明学习这些课程需要具备的硬件设备条件,选择树莓派电脑,因为它非常适合初学者学习,同时它的扩展能力非常强,具备控制传感器的能力,能够用它做出一些非常好玩有趣的东东,并且是非常热门的一个极客工具,网络上的学习资料也非常多。所以我们的课程的基础都是依赖于它,说明了如何购买这些设备。  第三节课【0003 十分钟组装一台电脑开始编程】  硬件设备购买了之后,自然而然就是进行硬件组装。  第四节课【0004 如何编写人生的第一行代码helloworld】  主要说明进入操作系统之后常用的一些命令和工具软件该如何使用,重点是【LX终端】运行python命令,【Text Editor文本编辑器】用来编写程序。  第五节课【0005 键盘打字如何练成像黑客一样的飞速】  在正式开始学习之前,要解决一个键盘输入速度的问题。根据我给5年级小学生上编程课的经验,很多零基础的同学因为很少用电脑,打字速度非常慢,因此非常有必要说明一些训练打字速度的方法。然后顺便说明了如何在树莓派电脑上安装新软件的方法。  第六节课【0006 编程入门python语言之加法计算器】  从这节课开始就是真正的开始python编程了,为了降低学习曲线坡度,这节课的内容很简单,输入2个数字进行加法计算。虽然内容简单,但是因为很多基本的概念全都出现了,所以也是需要同学们多多思考这些概念:变量,赋值,函数,参数,输入,输出,字符串类型,整数类型。  第七节课【0007 编程入门python语言之四则运算器】  主要说明布尔类型,条件表达式,以及if判断语句。所有的程序主要就3种逻辑,顺序/分支/循环。因此if判断是非常非常重要的内容。这节课延伸了上节课的内容,在原来基础上修改程序,更有助于理解。课后开始有作业了,大家要坚持独立完成课后作业,反复练习才会有效果。  后面大概20节课的规划情况  第一部分,后面还有大概20节课,大概的思路是:  1.继续复习if判断语句,引入注释,引入更多组合条件表达式  2.循环语句,退出循环方式,while语法,循环和if判断组合使用,更多的练习  3.列表类型,利用新的数据类型精简以前的代码,数据类型转换  4.函数概念,改造以前的代码用函数来实现,以及进程概念  5.字符串数据类型深入学习  6.scratch做一个最简单的小游戏  7.树莓派控制第一个硬件led灯,各种闪亮的方式  8.树莓派控制蜂鸣器,温湿度传感器,单位数码管,双位数码管  第一部分学完之后,我们应该可以进行一些自由发挥了,可以自己去网上搜索一些树莓派教程,然后自己采购一些硬件组件,进行硬件连接以及编程程序控制这些传感器组件实现一些小小的功能了。  整个课程体系的设计思路  第一部分:python编程入门和简单控制传感器  准备学习工具环境  通过python学习编程基本概念,掌握基本语法  学会通过树莓派电脑控制各种传感器,从而激发更大的兴趣,获得一些成就感  第二部分:html+css静态网站和阿里云上线  学习做网站程序,学习html构造网页内容布局,css来控制网页显示效果  学会做好自己的个人网站,学习如何设计,开发,测试网页  学会在本地运行网页,以及如何讲网站部署到阿里云  第三部分:js游戏连连看  通过学习做一个网页游戏连连看,掌握javascript的基本知识和使用方法  以及学习如何进行游戏设计和开发  第四部分:php+mysql动态内容网站  学习一个新的语言php,掌握基本的语法格式,以及常用的编程写法  了解动态网站内容的实现原理  学习sql数据库的基本知识,如何编写简单的sql语句  学会安装mysql,创建数据库,表,记录等数据库知识  学会通过php访问和管理数据库  第五部分:网站集成(图书管理系统)  学习集成更多的知识,通过html+css+js+php+mysql实现一个完整的网站系统  图书管理系统:人员管理,图书管理,借书管理,还书管理,查询,新增,编辑,删除等等  第六部分:手机遥控小车  学习购买组装遥控小车,学习编程python程序控制小车电机  学习使用http服务通过wifi连接进行控制小车  第七部分:android开发遥控器+图书管理系统  学习android开发  学习开发一个安卓app控制前面做好的小车  将前面的网站图书管理系统功能做成一个安卓app  第八部分:ios开发遥控器+图书管理系统+Three游戏  学习ios开发  学习开发一个ios app控制前面做好的小车  将前面的网站图书管理系统功能做成一个ios app  学习实现一个Three游戏  第九部分:手机控制四轴飞行器  通过树莓派控制四轴飞行器  通过编写app进行遥控  第十部分:3D打印  学习3D打印机的基础知识  学习3D打印的设计打印控制等知识  然后在课程当中会根据进度情况插入一些小结,练习等内容  另外会写一些杂谈或者科普文,主要谈谈自己做过的一些项目,编程思路和如何实现  还会转载一些其它相关文章  如果感兴趣的话,可以微信公众号搜索:零基础学编程,目前课程仍然在陆续发布中。  我是学哥,希望能对您有所帮助。
使用“←”“→”快捷翻页
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)设置并使用树莓派进行Python和C语言编程
作者:Python程序员 微信公众号
Python部落()组织翻译, 禁止转载简介这篇文章用来帮助初学者设置树莓派开发环境,并使用Python和C语言在树莓派上进行编程开发主要内容如下, 主要关于树莓派,Python和C树莓派编程文件管理器网页浏览器文本编辑器shell命令行提示和技巧文件和文件系统树莓派和PythonPython版的Hello World方法1方法2多讲一点PythonPython函数关键字和条件语句有关的关键字和循环语句有关的关键字和内建函数有关的关键字和类、模块有关的关键字和错误处理有关的关键字设置树莓派编程环境安装VIM安装Python安装RPi.GPIO调试提示用C编程安装BCM2835-C安装WiringPiC语言写的光传感器程序背景如果你是第一次使用树莓派,请参考本文的姊妹篇--Raspbian版树莓派简介对树莓派进行设置,链接见下Raspbian版树莓派简介(/Articles/839230/Introduction-to-Raspberry-Pi-with-Raspbian-OS)树莓派编程请参考上面提到的文章对树莓派进行初次设置并启动进入系统树莓派设置完毕并且进入桌面环境LXDE(针对Raspbian的轻量级图形界面)后,先来快速浏览一些编程将会用到重要内容文件管理器你可以在“开始菜单”中找到它,完全可以把它当作windows文件浏览器,这意味着你可以使用鼠标进行文件移动,而不必依赖于命令行。借助文件管理器,你可以像其它带有图形界面的操作系统一样使用图标和文件夹浏览文件系统网页浏览器默认的网页浏览器是Midori,这是一款针对低性能处理器的轻量级浏览器。常见的浏览器,如Chrome,IE,Safari,会在后台运行很多任务而占用较多资源,对于树莓派来说,运行这些程序就会有些吃力了。但是“小身板”的Midori并没有实现前面几款“重量级”浏览器的所有功能比如:Midori不能运行FlashMidori不能运行Java插件Midori不支持全部HTML5标签,比如不支持VideoRaspbin系统上还自带另一款浏览器Netsurf文本编辑器Leafpad是Raspbian系统上的默认浏览器。传统的编辑器如VIM和emacs并没有预装,但是你可以手动安装Shell我们在树莓派上执行的大多数任务都是命令行程序,可以通过LXTerminal(一种虚拟终端)运行命令行程序。LXTerminal用于访问shell(又称命令行)。Raspbian系统上的默认shell是BASH.命令行提示和技巧在树莓派上编程会频繁使用命令行。默认可以通过LXTerminal访问命令行。这里有两个重要的技巧可以帮助我们更轻松地使用命令行自动补全:很多时候,我们可以只键入命令或者文件名称的几个字符然后敲击tab键,shell就会自动补全其余部分。shell基于当前环境比如所在文件夹或者常使用的文件夹如/bin和/usr/bin里的程序来尝试进行自动补全命令历史:这个技巧使我们可以再次使用以前运行过的命令。可以通过向上箭头键浏览以前的命令,最近使用的会先显示。当一条长命令里出现小错误而需要纠正时,你就可以不用再输入整条命令了。文件和文件系统下表列出了一些常用的文件夹,这其中的大部分符合Linux目录结构,但是也有一些是树莓派独有的。/sys文件夹里是树莓派上的所有硬件设备,你可以通过这个文件夹来使用它们/boot
放置Linux内核以及其他用来启动树莓派的软件包/bin
放置与Raspbian有关(包括运行图形界面所需的)的二进制可执行文件/dev
这是虚拟文件夹之一,用来访问所有连接设备,包括存储卡/etc
系统管理和配置文件/home
Linux上的我的文档,包含用户名命名的文件夹/lib
各种应用需要的代码库/lost+found
一般情况下是空的,当系统非法关机后,这里就存放了一些文件/media
放置可移动存储驱动器,比如USB和CD/mnt
用来手动挂在外部硬件驱动器或存储设备/opt
可选软件文件夹,非系统部分的软件将会放置在这里/proc
另一个虚拟文件夹,包含运行进程(或程序)的信息/selinux
由美国国家安全局开发的安全工具,用于增强Linux安全性/sbin
放置超级用户使用的系统管理命令/sys
放置操作系统文件/tmp
放置临时文件/usr
放置用户使用的程序/var
虚拟文件,用于程序保存数据提示符前面会显示当前路径。在Linux里,~代表主目录,当我们刚打开命令行时,显示内容如下pi@raspberrypi ~ $该行文本各部分的含义为pi
当前用户名,其后是@字符raspberrypi
设备或计算机名称。默认为Raspberry pi~
shell的当前工作目录,默认工作目录为主文件夹$
shell提示符,其后为命令。输入命令后按回车键执行命令接下来,了解如何用Python和C进行树莓派编程树莓派和PythonPython简单明了,并且Python社区庞大,可以向很多人寻求帮助,这使得Python被认为是最好的编程入门语言之一Python是一门解释型语言,这意味着代码运行前不需要编译,即程序直接执行而不需要编译为机器语言。这种语言用来编程更方便些。解释型语言还有一些隐藏的优点,比如不需要声明变量类型。我们不需要在程序中明确的声明变量是字符串还是数字或是列表,这些都由解释器在代码执行时确定。有两种启动Python解释器的方式:1. 作为交互式shell运行,一条一条地执行命令2. 作为命令行程序运行,执行Python编写的独立脚本Raspbian系统上的Python集成开发环境(IDE)是IDLE。下图展示了如何找到这个程序Python版的Hello World如前所述,Python程序可以有两种不同的运行/执行方式。接下来分别用两种方式说"Hello world"方法一:1. 通过桌面图标或开始菜单打开IDLE32.
IDE加载可能需要一点时间3.
IDE加载完成后会显示一个Python shell窗口4. 在Python shell窗口中键入如下命令print("Hello World")5. 按下回车键你将看到下方输出的Hello World方法二:1. 通过桌面图标或开始菜单打开IDLE32.
IDE加载可能需要一点时间3.
IDE加载完成后会显示一个Python shell窗口4. 在Python shell窗口中,点击菜单项“文件”,点击下拉菜单中的“新窗口”选项5. 在4中出现的新窗口里输入下面的代码print("Hello World")6. 保存文件并命名为HelloWorld.py7. 打开LXTerminal然后输入下面的命令来执行文件里的程序python HelloWorld.py多讲一些Python我们中有些人来自Arduino世界,习惯于写setup和loop,并且称它们为sketches对于Python,sketches被称为脚本,下面是一个Python版setup和loop的示例#setup partinitNum = 0#repenating loopWhile True:initNum = iniNum + 1if((initNum%2)==0):print(n)上面的程序将会打印所有的偶数。从IDLE里运行该脚本,可以运行菜单项里的运行模块并保存文件,下图展示了这个过程。可以按下Ctrl+C组合键停止shell里程序的执行在上面的程序里,我们没有使用括号而是用空白符分隔代码块。空白符是4个空格,在IDLE里按TAB键会输入4个空格Python函数Python是一门高度结构化的语言,空白用来决定逻辑行的缩进层次,从而决定语句的分组。同一层次的语句必须有相同的缩进,每一组这样的语句成为一个块,由空白把语句块从主程序里分离出来作为函数,可以在程序的任何地方调用函数。下面是一个使用函数的示例# global declarationi=0# define setup functiondef setup():global ii=100# define the loop functiondef loop():global ii=i+1if((i%2)==0):print(i)# main programsetup()while True:loop()可以注意到这个程序和上一个有些不同:1. 在定义函数前声明全局变量i2. 定义setup函数但不执行3. 定义loop函数也不执行4. 在两个函数里都通过global关键字加变量名的方式访问全局变量,这将避免创建一个和全局变量名称相同的局部变量(作用域被限制在函数内)5. 程序的主要部分调用setup函数一次,在无限while循环里调用loop()函数关键字条件关键字下表列出了和条件语句有关的关键字和它们的简要描述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.pyVim有一个带图形界面的版本,可以分别安装。这个版本打开一个支持鼠标操作的新窗口sudo apt-get install vim-gnome安装Python通常情况下,树莓派已安装了Python的最新版本。如果没有,你可以通过下述命令来安装或更新Pythonsudo apt-get install python-dev安装RPi.GPIO安装完Python后,可以安装RPi.GPIO模块,该模块用于控制树莓派的输入输出接口下面是安装或升级模块的名令:sudo apt-get install python-rpi.gpioPython调试:写代码时经常会遇到错误,需要调试找到问题的原因。IDLE的交互模式是调试Python的最佳工具。调试菜单里有一些工具用来分析代码/程序,也可以通过逐条执行代码来观察每步变量的变化,和其它高级语言和它们的集成编译环境一样。语法错误
最常见的错误,容易被改正。通常是拼错或误用关键字语义错误
逻辑错误,即程序语法正确但是结果错误。通常难于定位错误,IDLE可以通过逐条执行代码来帮助我们发现原因就像高超的编程能力一样,高超的调试能力也很重要,需要多年的练习和经验。下面是一些调试练习用于帮助我们在树莓派上调试Python程序调试技巧1. 使用print()函数输出代码指定位置的执行情况2. 使用_preint()+输出变量的值3. 检查空格是否正确4. 行首有时会显示解释器检查出的语法错误,此时我们需要返回并且检查语法错误5. 注意全局变量和局部变量的使用6. 括号应该匹配7. 不确定操作符优先级时使用括号来保证执行顺序1. 比如:5+8*3和(5+8)*3不一样C语言编程安装BCM2835-C树莓派的C库可以从下面的链接里下载/mikem/bcm2835以下引用airspyace对于该库的说明“这是一个针对树莓派的C库。用于控制通用输入输出接口和Broadcom BCM2835芯片上的其他输入输出功能,可以通过RPi板上的26个接口控制GPIO接口,因此你可以控制并访问多种外部设备。提供函数用于SPI和I2C的数据存取,以及控制系统定时器。支持轮询式引脚事件检测(不支持中断)与C++相容,可以作为头文件和非共享库安装在在任何Linux发行版上(但是树莓派或其他BCM 2835板以外的开发板上不起作用)。”以下是安装步骤。按照顺序逐条执行命令从网站下载tar文件wget /mikem/bcm2835/bcm.tar.gz解压库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 updatesudo apt-get upgradeapt-get install git-coregit clone git:git.drogon.net/wiringPicd wiringPigit pull origincd wiringPi./build测试WiringPi是否安装成功gpio -vgpio readall用C进行光传感器编程下面这个程序读取光强并输出#include #include #define
2typedefgchar get_Result(void){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))<<i);digitalWrite(G_2,1);delayMicroseconds(2);digitalWrite(G_2,0);delayMicroseconds(2);}digitalWrite(G_1,1);if(dat1==dat2) { return
dat1 ;}elsereturn 0;}int main(void){gchar rawVgchar calculate_Vif(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 - rawVprintf("Current calculate_Valueination : %d\n", calculate_Value);delay(500);}return 0;}下面是面包板的连接现在我们已经知道如何在树莓派上用python和C进行编程,在评论里告诉我你更喜欢哪种语言及其原因。英文原文: /Articles/850842/Setting-up-and-Programming-Raspberry-Pi-in-Python译者: cmsl
相关微信文章:
相关推荐:
本网站所有内容均采集自网络,如有侵权麻烦邮箱联系删除。

我要回帖

 

随机推荐