Edison上程序开发——决战四驱车

2015-09-302.8万
精华项目
AI 快速预览详细 收起
本文介绍了使用Edison进行四驱车程序开发的过程。首先,组装小车框架并连接四个直流电机、LED、Button和Buzzer等传感器。然后,通过编写Python代码控制这些传感器,实现四驱车的基本功能。例如,通过传递on/off参数来控制四个PWM输出端口,从而控制四驱车的直流电机工作。此外,还展示了如何使用button控制LED和buzzer发出音调。这个项目适合STEM教育场景,帮助孩子动手实践,激发对编程的兴趣。


1, 翻箱倒柜的找到封尘依旧的一两小车的框架,4个直流电机,四个轱辘,两个亚克力板,组装如下:
Edison上程序开发——决战四驱车图1Edison上程序开发——决战四驱车图2

相信论坛里好多朋友们也都玩过的,没什么花头。
因为不是按照Edison设计的,所以好不容易才能斜着把Edison固定在上面。

2, 噼里啪啦一顿接线,现在是这个样子:
Edison上程序开发——决战四驱车图3Edison上程序开发——决战四驱车图4


细数下,有如下传感器:
1, 直流电机 x 4
2, LED
3, Button
4, Speaker
5, LCD

然后我们一个一个的讲这些传感器用起来:

3, PWM 输出控制直流电机
  1. #!/usr/bin/python
  2. import mraa
  3. import time
  4. import sys
  5. x1 = mraa.Pwm(3)
  6. x1.period_us(0)
  7. x1.enable(True)
  8. x2 = mraa.Pwm(5)
  9. x2.period_us(0)
  10. x2.enable(True)
  11. x3 = mraa.Pwm(6)
  12. x3.period_us(0)
  13. x3.enable(True)
  14. x4 = mraa.Pwm(9)
  15. x4.period_us(0)
  16. x4.enable(True)
  17. if len(sys.argv) > 1:
  18.     switch = sys.argv[1]
  19. else:
  20.     switch = 'off'
  21. print switch
  22. if switch == 'on':
  23.     x1.write(1)
  24.     x2.write(1)
  25.     x3.write(1)
  26.     x4.write(1)
  27. else:
  28.     x1.write(0)
  29.     x2.write(0)
  30.     x3.write(0)
  31.     x4.write(0)
复制代码

这里的code就不一一解释了,简单说几句吧:
1) Edison默认GPIO 3、5、6、9支持PWM,一共就4个PWM我们都占掉了2)将文件命名为 pwm.py,可以通过传递on/off来使得直流电机工作了:
     ./pwm.py on      关闭使用: ./pwm.py off

4, 使用button控制LED:
  1. import time
  2. import pyupm_grove as grove
  3. # Create the Grove LED object using GPIO pin 2
  4. led = grove.GroveLed(3)
  5. # Create the button object using GPIO pin 0
  6. button = grove.GroveButton(7)
  7. # Read the input and print, waiting one second between readings
  8. while 1:
  9.     print button.name(), ' value is ', button.value()
  10.     time.sleep(1)
  11.     if button.value():
  12.         led.on()
  13.     else:
  14.         led.off()
复制代码
说明:当按下button的时候,LED会点亮,松开的时候,LED灭掉

5, 使用buzzer发出音调:
  1. import time
  2. import pyupm_buzzer as upmBuzzer
  3. # Create the buzzer object using GPIO pin 5
  4. buzzer = upmBuzzer.Buzzer(6)
  5. chords = [upmBuzzer.DO, upmBuzzer.RE, upmBuzzer.MI, upmBuzzer.FA,
  6.           upmBuzzer.SOL, upmBuzzer.LA, upmBuzzer.SI, upmBuzzer.DO,
  7.           upmBuzzer.SI];
  8. # Print sensor name
  9. print buzzer.name()
  10. # Play sound (DO, RE, MI, etc.), pausing for 0.1 seconds between notes
  11. for chord_ind in range (0,7):
  12.     # play each note for one second
  13.     print buzzer.playSound(chords[chord_ind], 1000000)
  14.     time.sleep(0.1)
  15. print "exiting application"
  16. # Delete the buzzer object
  17. del buzzer
复制代码
运行python脚本,buzzer会发出1(dou),2(ruai),3(mi),4(fa),5(sao)

好了基本上就这样吧,作为一个初步的demo,小车的基本功能已经差不多了,后面我们会慢慢的在这辆限量版的纯手工打杂的小车上安装更多的好玩的东东,大家有什么好玩法欢迎留言!
这个时候感觉到3D打印的必要行了。这一堆线挺丑的,一不小心就碰掉哪一个了。



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
david.ding
david.ding
准备自己搞个小车平台
先学习一下
qq865650214158
qq865650214158
辛苦,学习学习
孙毅
孙毅
作者
回复qq865650214158
有好玩的,可以share吗?公司不允许?
qq865650214158
qq865650214158回复孙毅
看你们玩就行了,最近在玩虫子
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
lianuo
lianuo
扬声器是直接接到DAC上了么?
孙毅
孙毅
作者
回复lianuo
哦,我是不是忘记提这个事情了?!
扬声器需要接在PWM上,对于Edison,也就是pin脚 3,5,6,9
Juice
Juice
亚克力板透明的真好看啊~~~~只是线确实暴露太多了~~哈哈
hnyzcj
hnyzcj回复孙毅
额额额
孙毅
孙毅
作者
回复hnyzcj
关键是DF的周末也没见你玩啊。。。。
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
besteast
besteast
:victory:踩踩踩
luna
luna
放假默默的放教程~
孙毅
孙毅
作者
回复luna
你不也在默默的看教程吗。嘻嘻嘻
qq815076543322
qq815076543322
哈哈 到是有一个想法 吼吼 不知道能不能行
qq815076543322
qq815076543322回复孙毅
一个电机控制两个电机转动 做成轴动的 前面可以用一个马达控制转向
孙毅
孙毅
作者
回复qq815076543322
说说看什么想法啊。。。
qq815076543322
qq815076543322
有一个问题 就是小车跑直线的问题能否有问题呢 直流电机问题不是没有的
Chan陈陈陈
Chan陈陈陈回复孙毅
嗯嗯,一定的 嘿嘿:lol
孙毅
孙毅
作者
回复Chan陈陈陈
WOW,你还是大学生?!强悍,要是正好有什么课程设计之类的,欢迎分享。
共6条回复,已加载2条,点击查看更多共6条回复,已加载全部
- 没有更多了 -