Arduino Yun 开整 之 通过 Python 控制 D13 指示灯
2014-05-08 21:56
477 查看
Arduino Yun 开整
之
通过 Python 控制 D13 指示灯
入手 Arduino Yun 的原因,除了它集成 WIFI 之外,就是它支持与 Python 的交互了。了解 Arduino Uno 的同学,可能玩过驱动 D13 引脚的板载指示灯闪烁的栗子。下面,我们把这个栗子改成,通过 Python 程序开关 D13 指示灯。
概述
Arduino Yun 在一块板子上包括以下两个部分,这两部分的信息交互,由 Bridge 完成。8-Bit AVR MCU (ATmega32u4 with 32kB Flash and 2.5kB RAM running at 16MHz),即我们通常所说的 Arduino 部分。
32-Bit MIPS CPU (Atheros AR9331 with 16MB Flash and 64MB RAM running at 400MHz), 运行 OpenWRT(Linino)。
Arduino Yun 上的 Python,运行于 AR9331 的 Linino 上,需要通过 Bridge 包,才能够和 Arduino 引脚交互。详情可以参考Understanding Arduino Yún's bridge 这篇文章。
Arduino 端 Sketch
首先,需要在 Arduino IDE 中上传以下的 Sketch 代码,存储为 python_blink.ino。#include <Bridge.h> char D13value[2]; void setup() { pinMode(13,OUTPUT); Bridge.begin(); } void loop() { Bridge.get("key",D13value,2); int D13int = atoi(D13value); digitalWrite(13,D13int); delay(50); }
上传 Sketch 代码:
Linino 端 Python
其次,SSH 到 Arduino Yun 的 Linino 上:$ ssh -l root arduinoyun.local root@arduinoyun.local's password: BusyBox v1.19.4 (2013-08-07 16:16:02 CEST) built-in shell (ash) Enter 'help' for a list of built-in commands. ___ ___ ___ ___ /\__\ ___ /\__\ ___ /\__\ /\ \ /:/ / /\ \ /::| | /\ \ /::| | /::\ \ /:/ / \:\ \ /:|:| | \:\ \ /:|:| | /:/\:\ \ /:/ / /::\__\ /:/|:| |__ /::\__\ /:/|:| |__ /:/ \:\ \ /:/__/ __/:/\/__/ /:/ |:| /\__\ __/:/\/__/ /:/ |:| /\__\ /:/__/ \:\__\ \:\ \ /\/:/ / \/__|:|/:/ / /\/:/ / \/__|:|/:/ / \:\ \ /:/ / \:\ \ \::/__/ |:/:/ / \::/__/ |:/:/ / \:\ /:/ / \:\ \ \:\__\ |::/ / \:\__\ |::/ / \:\/:/ / \:\__\ \/__/ /:/ / \/__/ /:/ / \::/ / \/__/ \/__/ \/__/ \/__/ _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M root@Arduinoyun:~# python -V Python 2.7.3 root@Arduinoyun:~# which python /usr/bin/python root@Arduinoyun:~# cd /mnt/sda1 root@Arduinoyun:/mnt/sda1# cd workspaces/ root@Arduinoyun:/mnt/sda1/workspaces# vi blink.py
编辑 blink.py 内容如下:
#!/usr/bin/python ''' This file is used with sketch : python_blink.ino ''' import sys sys.path.insert(0, '/usr/lib/python2.7/bridge/') from bridgeclient import BridgeClient as bridgeclient if __name__ == '__main__': try: raw = sys.argv[1] except IndexError as e1: raw = raw_input('>>> Input (0 or 1) : ') _client = bridgeclient() _client.put('key', raw) print _client.get('key')
设置此文件为可执行:
root@Arduinoyun:/mnt/sda1/workspaces# ls blink.py root@Arduinoyun:/mnt/sda1/workspaces# chmod +x blink.py
打开 D13 指示灯:
root@Arduinoyun:/mnt/sda1/workspaces# ./blink.py 1 1
关闭 D13 指示灯
root@Arduinoyun:/mnt/sda1/workspaces# ./blink.py 0 0
代码地址
https://github.com/iascchen/arduino_study/玩的开心!
转载请注明出处
Author : iascchen(at)gmail(dot)com
Date : 2014-5-1
Github : https://github.com/iascchen/arduino_study
新浪微博 :
@问天鼓
CSDN : http://blog.csdn.net/iascchen
相关文章推荐
- python中sys.argv[]用法
- 《Python核心编程》第3章 习题
- python学习笔记——第八章 异常
- Python<2>异常基础
- 你可能不知道的30个Python语言的特点技巧
- 《Python核心编程》第2章 习题
- python 核心编程错误
- python小游戏之一--------猜数字
- Python发一个GET请求
- Python机器学习神器:sklearn&numpy
- python的学习日志<二>
- Mac安装macports和numpy
- python 通过UDP传输文件
- Python+Django+SAE系列教程14-----使表单更安全
- Python 练习 —— 2048
- Natural Language Processing With Python (3)
- 优秀Python学习资源收集汇总(强烈推荐)
- 学习python-安装和配置环境变量
- Python核心编程学习笔记(六)
- Python+Django+SAE系列教程13-----MySQL记录的添\删\改