Arduino读取键盘[转载]

Arduino读取键盘

Arduino_and_Keypad
这里提供两种方式从Arduino读取键盘。第一种方式是使用矩阵式(Matrix)键盘,另一种方式是使用PS2键盘。
矩阵键盘(Matrix keypad)
首先必须安装Arduino Keypad键盘库(Keypad library),Arduino Keypad键盘库可以从Arduino Playground下载。Arduino Keypad键盘库让你读取矩阵式键盘而不用编写复杂的代码,此键盘库可以读取3×4, 4×4以及各种矩阵结构的键盘。
使用Arduino Keypad键盘库注意事项
  • 该键盘库是属于无阻塞式,按下谋键不放,其余(接下来)的代码还是会继续运行
  • 如果编写控制键盘处运用到delay(),这将造成键盘反应迟顿
  • 按下谋键,getKey()只返回一个键值,而不是自动重复。松开按键时,可以追踪其RELEASED event

安装Arduino Keypad键盘库

  • 下载Arduino Keypad键盘库
  • 将下载了的文件(keypad.zip)解压至Arduino软件的libraries文件夹,如图
Arduino_keypad_library
  • 打开Arduino软件
  • 选择File>Examples>Keypad,将会看见以下画面,表示Arduino Keypad键盘库安装成功
Arduino_keypad_examples
4×4矩阵keypad示范
根据下面接线连接键盘至Arduino
4x4_matrix_membrane_keypad_pinout
Arduino
4×4 Keypad
D2
1
D3
2
D4
3
D5
4
D6
5
D7
6
D8
7
D9
8
上载以下代码至Arduino
#include <Keypad.h>

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

//Define the keymap
char keys[ROWS][COLS] = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};

//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {6,7,8,9};

// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {2,3,4,5}; //connect to column pinouts

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
Serial.begin(9600);
}

void loop(){
char key = keypad.getKey();

if (key != NO_KEY){
Serial.println(key);
}
}

使用Arduino软件自带的串口监视器(Serial Monitor)来测试此程序(Baud rate必须设成9600)。当按下谋键时,其返回值将显示在串口监视器。


PS2键盘
首先必须安装Arduino PS2键盘库(PS2keyboard library),Arduino PS2键盘库可以从这里下载
安装Arduino PS2键盘库
  • 下载Arduino PS2键盘库
  • 将下载了的文件(PS2keyboard.zip)解压至Arduino软件的libraries文件夹
  • 安装方法与安装keypad相似,请参考之。
 
PS2键盘示范
根据下面接线连接键盘至Arduino
PS2_keyboarad_pinout
Keyboard
Arduino
4 (+5V)
5V
3 (GND)
GND
5 (Clock)
Digital Pin 3
1 (Datak)
Digital Pin 4

上载以下代码至Arduino

#include <PS2Keyboard.h>

const int DataPin = 8;
const int IRQpin = 5;

PS2Keyboard keyboard;

void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
Serial.begin(9600);
Serial.println(“Keyboard Test:”);
}

void loop() {
if (keyboard.available()) {

char c = keyboard.read();  // read the next key

// check for some of the special keys
if (c == PS2_ENTER) {
Serial.println();
} else if (c == PS2_TAB) {
Serial.print(“[Tab]”);
} else if (c == PS2_ESC) {
Serial.print(“[ESC]”);
} else if (c == PS2_PAGEDOWN) {
Serial.print(“[PgDn]”);
} else if (c == PS2_PAGEUP) {
Serial.print(“[PgUp]”);
} else if (c == PS2_LEFTARROW) {
Serial.print(“[Left]”);
} else if (c == PS2_RIGHTARROW) {
Serial.print(“[Right]”);
} else if (c == PS2_UPARROW) {
Serial.print(“[Up]”);
} else if (c == PS2_DOWNARROW) {
Serial.print(“[Down]”);
} else if (c == PS2_DELETE) {
Serial.print(“[Del]”);
} else {
Serial.print(c);  // otherwise, just print all normal characters
}
}
}

使用Arduino软件自带的串口监视器(Serial Monitor)来测试此程序(Baud rate必须设成9600)。当按下谋键时,其返回值将显示在串口监视器。


增加按键音效
按照下面图象连接PC扬声器(此PC扬声器可以从废棄的电脑主板拆岀来),然後稍微更改代码。由于没有此PC扬声器的规格说明,估计供电5V且功率非常小,能够直接由Arduino驱动。如果不放心,可以在Aruino pin10与扬声器之间添加一个100欧姆电阻器。

Connecting_PC_speaker_to_Arduino

代码方面使用了tone()函数,具体可以浏览Arduino Reference网站
http://arduino.cc/en/Reference/Tone

tone()用法

  • tone(pin, frequency)
  • tone(pin, frequency, duration)
  1. pin是连接扬声器的引脚
  2. frequency是输出频率,频率越低,音频就越低。
  3. duration音频输出持续时间
  1. #include <Keypad.h>
  2. const byte ROWS = 4; // Four rows
  3. const byte COLS = 4; // Four columns
  4. //Define the keymap
  5. char keys[ROWS][COLS] = {
  6. {‘1′,’2′,’3′,’A’},
  7. {‘4′,’5′,’6′,’B’},
  8. {‘7′,’8′,’9′,’C’},
  9. {‘*’,’0′,’#’,’D’}
  10. };
  11. //// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
  12. byte rowPins[ROWS] = {6,7,8,9};
  13. // Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
  14. byte colPins[COLS] = {2,3,4,5}; //connect to column pinouts
  15. // Create the Keypad
  16. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  17. void setup(){
  18. Serial.begin(9600);
  19. }
  20. void loop(){
  21. char key = keypad.getKey();
  22. if (key != NO_KEY){
  23. delay(50); //act as debounce
  24. beep();
  25. Serial.println(key);
  26. }
  27. }
  28. #define SPEAKER_PIN 10
  29. void beep(){
  30. tone(SPEAKER_PIN,2000,90);
  31. delay(20);
  32. noTone(SPEAKER_PIN);
  33. }
转自
http://ediy.com.my/index.php/2012-10-21-15-15-03/2013-04-14-05-06-50/item/65-arduino%E8%AF%BB%E5%8F%96%E9%94%AE%E7%9B%98

君心似兰草,秋水作文章

在这个光怪陆离的人间,没有谁可以将日子过得行云流水。但我始终相信,走过平湖烟雨,岁月山河,那些历尽劫数、尝遍百味的人,会更加生动而干净。时间永远是旁观者,所有的过程和结果,都需要我们自己承担。
——白落梅 《因为懂得所以慈悲:张爱玲的倾城往事》

台风 台风 灿鸿来了

最近接连三个台风在太平洋共舞之后,开始分头向广东、福建进军了,灿鸿、莲花、浪卡这些名字都很有特色,还有之前听到的海燕、蔷薇之类的,就在网上搜了一下,发现台风的命名很有意思。

据专家介绍,西北太平洋地区是世界上台风(热带风暴)活动最频繁的地区,每年登陆我国就有六、七个之多。多年来,有关国家和地区对出没这里的热带风暴叫法不一,同一台风往往有几个称呼。我国按其发生的区域和时间先后进行四码编号,前两位为年份,后两位为顺序号。设在日本东京的世界气象组织属下的亚太区域专业气象台的台风中心,则以进入东经180度、赤道以北的先后顺序编号。美国关岛海军联合台风警报中心则用英美国家的人名命名,国际传媒在报道中也常用关岛的命名。还有一些国家或地区对影响本区的台风自行取名。为了避免名称混乱,有关国家和地区举行专门会议决定,凡是活跃在西北太平洋地区的台风(热带风暴),从去年起一律使用亚太14个国家(地区)共同认可、具有亚太区域特色的一套新名称,以便于各国人民防台抗灾、加强国际区域合作。 每个国家提供10个,台风委员会命名表共有140个名字,分别由亚太地区的柬埔寨、中国、朝鲜、中国香港、日本、老挝、澳门、马来西亚、密克罗尼西亚联邦、菲律宾、韩国、泰国、美国和越南提供。从头轮到尾,用完了再从头开始。

台风委员会命名表将用于通过国际媒体以及向国际航空和航海界发布的预报、警报和公报中,也供各成员用当地语言发布热带气旋警报时使用。这将有助于人们对逐渐接近的热带气旋提高警觉,增加警报的效用。台风委员会仍将继续使用热带气旋编号。

为避免一名多译造成的不必要的混乱,中国中央气象台和香港天文台、澳门地球物理暨气象台经过协商,已确定了一套统一的中文译名。从2000年l月1日起,中央气象台发布热带气旋警报时,除继续使用热带气旋编号外,还将使用热带气旋名字。如2000年的第1号热带气旋名字为“达维”,由柬埔寨提供。 而2012年第10号台风也叫”达维”,因为从2000年开始,140个名字已经用完了,所以从头开始。2013年龙王名字最后改成了海葵。

附命名表:

序号 英文名 中文名 名字来源 意 义
1-1 Damrey 达维 柬埔寨 大象
1-2 Longwang 龙王 中国 神话传说中的司雨之神
1-3 Kirogi 鸿雁 朝鲜 一种侯鸟,在朝鲜秋来春去
1-4 Kai-tak 启德 中国香港 香港旧机场名
1-5 Tembin 天秤 日本 天秤星座
1-6 Bolaven 布拉万 老挝 高地
1-7 Chanchu 珍珠 中国澳门 珍珠
1-8 Jelawat 杰拉华 马来西亚 一种淡水鱼
1-9 Ewiniar 艾云尼 密克罗尼西亚 传统的风暴神(Chuuk语)
1-10 Bilis 碧利斯 菲律宾 速度
1-11 Kaemi 格美 韩国 蚂蚁
1-12 Prapiroon 派比安 泰国 雨神
1-13 Maria 玛莉亚 美国 女士名(Chamarro语)
1-14 Saomai 桑美 越南 金星

2-1 Bopha 宝霞 柬埔寨 花儿名
2-2 Wukong 悟空 中国 孙悟空
2-3 Sonamu 清松 朝鲜 一种松树,能扎根石崖,四季常绿
2-4 Shanshan 珊珊 中国香港 女孩儿名
2-5 Yagi 摩羯 日本 摩羯星座
2-6 Xangsane 象神 老挝 大象
2-7 Bebinca 贝碧嘉 澳门 澳门牛奶布丁
2-8 Rumbia 温比亚 马来西亚 棕榈树
2-9 Soulik 苏力 密克罗尼西亚 传统的Pohnpei酋长头衔
2-10 Cimaron 西马仑 菲律宾 菲律宾野牛
2-11 Chebi 飞燕 韩国 燕子
2-12 Durian 榴莲 泰国 泰国人喜爱的水果
2-13 Utor 尤特 美国 飑线(Marshalese语)
2-14 Trami 潭美 越南 一种花

3-1 Kong-rey 康妮 柬埔寨 高棉传说中的可爱女孩儿
3-2 Yutu 玉兔 中国 神话传说中的兔子
3-3 Toraji 桃芝 朝鲜 朝鲜深山中的一种花
3-4 Man-yi 万宜 中国香港 海峡名,现为水库
3-5 Usagi 天兔 日本 天兔星座
3-6 Pabuk 帕布 老挝 大淡水鱼
3-7 Wutip 蝴蝶 澳门 一种昆虫
3-8 Sepat 圣帕 马来西亚 一种淡水鱼
3-9 Fitow 菲特 密克罗尼西亚 一种美丽芬香的花(Yapese语)
3-10 Danas 丹娜丝 菲律宾 经历
3-11 Nari 百合 韩国 一种花
3-12 Vipa 韦帕 泰国 女士名字
3-13 Francisco 范斯高 美国 男子名(Chamarro语)
3-14 Lekima 利奇马 越南 一种水果

4-1 Krosa 罗莎 柬埔寨 鹤
4-2 Haiyan 海燕 中国 一种海鸟
4-3 Podul 杨柳 朝鲜 一种在城乡均有种植的树
4-4 Lingling 玲玲 中国香港 女孩儿名
4-5 Kajiki 剑鱼 日本 剑鱼星座
4-6 Faxai 法茜 老挝 女士名字
4-7 Vamei 画眉 澳门 一种鸟
4-8 Tapah 塔巴 马来西亚 一种淡水鱼
4-9 Mitag 米娜 密克罗尼西亚 女士名字(Yap语)
4-10 Hagibis 海贝思 菲律宾 褐雨燕
4-11 Noguri 浣熊 韩国 狗
4-12 Ramasoon 威马逊 泰国 雷神
4-13 Chataan 查特安 美国 雨(Chamorro语)
4-14 Halong 夏浪 越南 越南一海湾名

5-1 Nakri 娜基莉 柬埔寨 一种花
5-2 Fengshen 风神 中国 神话中的风之神
5-3 Kalmaegi 海鸥 朝鲜 一种海鸟
5-4 Fung-wong 凤凰 中国香港 山峰名
5-5 Kammuri 北冕 日本 北冕星座
5-6 Phanfone 巴蓬 老挝 动物
5-7 Vongfong 黄蜂 澳门 一类昆虫
5-8 Rusa 鹿莎 马来西亚 鹿
5-9 Sinlaku 森拉克 密克罗尼西亚 传说中的Kosrae女神
5-10 Hagupit 黑格比 菲律宾 鞭子
5-11 Changmi 蔷薇 韩国 花名
5-12 Megkhla 米克拉 泰国 雷天使
5-13 Higos 海高斯 美国 无花果(Chamarro语)
5-14 Bavi 巴威 越南 越南北部一山名

6-1 Maysak 美莎克 柬埔寨 一种树
6-2 Haishen 海神 中国 神话中的大海之神
6-3 Pongsona 凤仙 朝鲜 一种美丽的花
6-4 Yanyan 欣欣 中国香港 女孩儿名
6-5 Kujira 鲸鱼 日本 鲸鱼座
6-6 Chan-hom 灿鸿 老挝 一种树
6-7 Linfa 莲花 澳门 一种花
6-8 Nangka 浪卡 马来西亚 一种水果
6-9 Soudelor 苏迪罗 密克罗尼西亚 传说中的Pohnpei 酋长
6-10 Imbudo 伊布都 菲律宾 漏斗
6-11 Koni 天鹅 韩国 一种鸟
6-12 Hanuman 翰文 泰国 有趣的猴子
6-13 Etau 艾涛 美国 风暴云(Palauan语)
6-14 Vamco 环高 越南 越南南部一河流

7-1 Krovanh 科罗旺 柬埔寨 一种树
7-2 Dujuan 杜鹃 中国 一种花
7-3 Maemi 鸣蝉 朝鲜 一种蝉
7-4 Choi-wan 彩云 中国香港 天上的云彩
7-5 Koppu 巨爵 日本 巨爵星座
7-6 Ketsana 凯萨娜 老挝 一种树
7-7 Parma 芭玛 澳门 澳门的一种烹调风格
7-8 Melor 茉莉 马来西亚 一种花
7-9 Nepartak 尼伯特 密克罗尼西亚 著名的勇士(Kosrae语)
7-10 Lupit 卢碧 菲律宾 残酷
7-11 Sudal 苏特 韩国 水獭
7-12 Nida 妮妲 泰国 女士名字
7-13 Omais 奥麦斯 美国 漫游(Palauan语)
7-14 Conson 康森 越南 古迹

8-1 Chanthu 灿都 柬埔寨 一种花
8-2 Dianmu 电母 中国 神话中的雷电之神
8-3 Mindule 蒲公英 朝鲜 一种小黄花
8-4 Tingting 婷婷 中国香港 女孩儿名
8-5 Kompasu 圆规 日本 圆规星座
8-6 Namtheun 南川 老挝 河
8-7 Malou 玛瑙 澳门
8-8 Meranti 莫兰蒂 马来西亚 一种树
8-9 Rananim 云娜 密克罗尼西亚 喂,你好(Chuukese语)
8-10 Malakas 马勒卡 菲律宾 强壮, 有力
8-11 Megi 鲇鱼 韩国 鱼
8-12 Chaba 暹芭 泰国 热带花
8-13 Kodo 库都 美国 云(Marshalese语)
8-14 Songda 桑达 越南 越南西北部一河流

9-1 Sarika 莎莉嘉 柬埔寨 雀类鸟
9-2 Haima 海马 中国 一种鱼
9-3 Meari 米雷 朝鲜 回波
9-4 Ma-on 马鞍 中国香港 山峰名
9-5 Tokage 蝎虎 日本 蝎虎星座
9-6 Nock-ten 洛坦 老挝 鸟
9-7 Muifa 梅花 澳门 一种花
9-8 Merbok 苗柏 马来西亚 一种鸟
9-9 Nanmadol 南玛都 密克罗尼西亚 著名的Pohnpei 废墟
9-10 Talas 塔拉斯 菲律宾 锐利
9-11 Noru 奥鹿 韩国 狍鹿
9-12 Kularb 玫瑰 泰国 一种花
9-13 Roke 洛克 美国 男子名(Chamarro语)
9-14 Sonca 桑卡 越南 一种会唱歌的鸟

10-1 Nesat 纳沙 柬埔寨 渔夫
10-2 Haitang 海棠 中国 花
10-3 Nalgae 尼格 朝鲜 有生气,自由翱翔
10-4 Banyan 榕树 中国香港 一种树
10-5 Washi 天鹰 日本 天鹰星座
10-6 Matsa 麦莎 老挝 女人鱼
10-7 Sanvu 珊瑚 澳门 一种水生物
10-8 Mawar 玛娃 马来西亚 玫瑰花
10-9 Guchol 古超 密克罗尼西亚 一种香料(调味品)(Yapese语)
10-10 Talim 泰利 菲律宾 明显的边缘
10-11 Nabi 彩蝶 韩国 蝴蝶
10-12 Khanun 卡努 泰国 泰国水果
10-13 Vicente 韦森特 美国 女士名(Chamarro语)
10-14 Saola 苏拉 越南 越南最近发现的一种动物

 

 

除了股票,我们还有诗和远方

pic2 pic3 pic1

 

2015/7/15补:第二幅图拍摄于2011年毕业西线游路上,当时路过比较急,没怎么看内容,今天google后发现还是有些意思,淘金时代很多开拓者倒在这个路上,

Grave of the Unknown Prospector
On To The Golden Hills
— RIP —
On this site is the grave of the unknown prospector. A reminder of the great sacrifices made by our ancestors, who explored and settled the western frontier, and especially to the memory of each and all of the pioneers of Mono County, whose resting place is known only to God. May they rest in peace.
Erected 2003 by E Clampus Vitus, Bodie Chapter No. 64.

Location. 37° 53.2′ N, 119° 5.403′ W. Marker is near Lee Vining, California, in Mono County. Marker is at the intersection of State Highway 120 and State Highway 395/120 on State Highway 120. Click for map. The marker is approximately 5 miles south of Lee Vining. Marker is in this post office area: Lee Vining CA 93541, United States of America.

原链接:http://bo.tactical.digital/Marker.asp?Marker=49976 或者 http://www.hmdb.org/Marker.asp?Marker=49976

还有http://www.placesearth.com/usa/california/mono/historic/historic0.shtml

 

在树莓派上的XBMC增加一个静音按钮(mute button for XBMC on Raspberry Pi)

也许有人会问有了手机控制或者红外控制为什么还要有一个物理的静音按钮呢?设想一下以下场景:

当你在电视上看大片看得正爽的时候,来了个电话,是到手机上找app来控制呢,还是手忙脚乱的找遥控器来静音,或者直接到电视机边上按个静音键方便呢?

正是因为如此,才有了这个创意。

基本思路:一个简单的轻触式按钮连接到Pi的gpio口,在Pi上运行一个python程序,当按钮按下时,给XBMC发送静音指令。

附加功能:每按一次,LED闪一下

扩展功能:不满足于静音功能的,还可以多增加几个按钮来完成其他的功能,比如播放、暂停、快进、发送邮件、甚至求救报警功能。

开始动手

原料:

树莓派 1个(这个你肯定有了吧,没有就入一个吧)

轻触式按钮 1个

LED 1个

3k3电阻 2个

洞洞板、连接线、面包板之类,看自己情况使用。

步骤1:

焊洞洞板,示意电路图如下:

dianlu

 

为了防止LED以及GPIO口电流太大,加了限流电阻。

board1

实际焊接图,请忽略左边五个按钮和左边的电阻,这是我留着备用的。

按照电路图连接到Pi上。

步骤2,安装python的gpio库,如果已经安装了,请跳过此步

cd /tmp
cd gpio
wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.7.tar.gz
tar xvzf RPi.GPIO-*.tar.gz
cd RPi.GPIO-*/
sudo python setup.py install
如果安装的时候出现错误:
source/py_gpio.c:23:20: fatal error: Python.h: No such file or directory
这是因为缺少Python.h文件,没安装python编译环境:
sudo apt-get install python-dev
步骤3:开始我们的python程序吧
#!/user/bin/env python

import RPi.GPIO as GPIO
import time
import urllib
import urllib2
import json

def mute():
url=’http://你的Pi的ip地址:8080/jsonrpc’
values = {“jsonrpc”:”2.0″,”method”:”Application.SetMute”,”id”:1,”params”:{“mute”:”toggle”}}

jdata = json.dumps(values)
req = urllib2.Request(url, jdata)
req.add_header(‘Content-Type’,’application/json’)
response = urllib2.urlopen(req)
return response.read()

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(12,GPIO.IN)
while True:
in_value= GPIO.input(12)
if in_value ==False:
mute();
GPIO.output(11,False)
time.sleep(0.5)
GPIO.output(11,True)
while in_value == False:
in_value = GPIO.input(12)

然后运行python key.py,按下按钮看看屏幕右上角已经有了静音标志了?再按一下,又消失了。
还可以在这个代码基础上修改做别的操作,希望这个能够起到抛砖引玉的作用。

[转]汉字简化十大错,你知道吗?

十【使汉字的可识别性大大降低】

汉字简化以後,使原来差别很大的字变得非常相像,导致经常被人搞错。

如:鳳(凤)和風(风)厲(厉)和歷(历)

特别是“凤”

九【有些字笔画本不多,完全没必要简化】

如:減(减)涼(凉)於(于)時(时)國(国)

八【简化后出现表音错误】

如:鄰(邻)賓(宾)

韵母本是in,但简化字是用韵母为ing的字作偏旁,容易让人读错。

七【毫无道理地将汉字进行切割,音形皆损】

如:掛(挂)蠍(蝎)槨(椁)櫬(榇)

六【同音字合并,字义混乱】

汉字本来是有精确分工的,非要人为地让一个字去承担本不该它应该具有的含义。如:

后:前后皇后原本为前後皇后

发:发现头发原本为發現頭髮

面:面部面粉原本为面部麵粉

板:木板老板原本为木板老闆

五【合并偏旁,字不达意】

像“貓(猫)和“豬(猪)”简化以后都成了狗类了,实在是太滑稽了。

四【形体笔画比较丑陋】

许多汉字原来是非常方正美观的,简化以后字形变得极为难看。如:

讠(言)钅(金)车(車)龙(龍)汉(漢)

刘(劉)华(華)长(長)拣(揀)东(東)

三【割裂了整个汉字体系】

许多汉字是自成体系的,常用字简化后割裂了与非常用字的联系,致使从小学简化字的人一辈子也记不住一些使用频率较低的字。如:会写 “扑(撲)” 不会写 “璞”和“蹼”,会写 “还(還)”和“环(環)”不会写 “寰”和“鬟”。其他还有:

仅(僅)谨瑾盘(盤)磐牺(犧)曦

彻(徹)澈撤蜡(蠟)猎(獵)鬣

歼(殲)纤(纖)谶伤(傷)殇(殤)觞(觴)

声(聲)馨磬罄梦(夢)懵甍

二【无理简化,莫名其妙】

许多汉字的部首被毫无道理地用“又”字和叉代替,使优美的汉字变得不伦不类,莫名其妙。如:

鳳(凤)風(风)漢(汉)僅(仅)難(难)

權(权)歡(欢)聖(圣)對(对)樹(树)

一【失去了表音功能】

许多汉字原来是形声字,简化后失去了表音功能,而这正是汉字有别于其他文化的特点。如:

際(际)價(价)標(标)僅(仅)歡(欢)

隊(队)屬(属)劉(刘)燭(烛)敵(敌)

 

原文地址:http://toutiao.com/a4506608589/

[翻译]通过树莓派发送短信Send SMS Messages from Raspberry Pi

本站首发,转载请注明作者及引用网址

原文地址:

https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=69286&sid=89b99af621144e400c588b4ef6cad708

 

写这篇文章背景故事很简单。我有一个树莓派,花了35刀的一个超小的arm计算机。我用它运行Nagios来监控我的服务器(因为过段时间我要出去旅行)。我希望当我的服务器有警报信息的时候,它会给我发一条短信,而我实在不原意在花钱买个SMS网关,太奢侈了,实际上email就可以了,但我更喜欢短信。然后我就开始找解决方案。

我在githut上找到一个允许我通过简单的python脚本来发送短信,地址是https://github.com/korylprince/pygvoicelib。下面的步骤将讲述如何如何通过pi来发送短信。步骤1:确保你的PI已经安装了系统并且有internet连接
步骤2:注册一个google voice帐号,这里需要一个gmail的帐号。
步骤3:在你的google帐号里面允许2步验证,地址是https://accounts.google.com/b/0/IssuedAuthSubTokens

步骤4:创建一个指定应用的密码,打开https://accounts.google.com/b/0/IssuedAuthSubTokens,移到最下面,在name框里填上Raspberry Pi(或者任何你想要的名字来标示你的设备),然后点击生成密码。
你将会得到一个一次性的密码

步骤5:登陆到你的Pi打开命令行或者通过putty连接到SSH

然后进入到你的home目录,比如我的是/home/pi

cd /home/pi

步骤6: 从github克隆所有代码

首先运行下面的指令来阻止ssl错误

export GIT_SSL_NO_VERIFY=1

然后运行下面的指令来克隆

 

git clone https://github.com/korylprince/pygvoicelib.git

步骤7:让Pi得到google的授权

cd到刚创建的pygvoicelib目录
运行以下指令:

python get_auth.py

将会提示你输入你gmail帐号和你在第四步得到的的应用的密码。在你输入这些信息以后,你会看到很多参数显示在终端上。记住以下参数,你在后面的步骤里将会用到
username
apppass
auth_token
rnr_se

步骤8:创建一个脚本来发送短信

运行下面的指令,你也可以用nano来编辑

vi text.py

将下列的代码贴到你创建的文件里面

#!/usr/bin/python
import pygvoicelib
number = raw_input(‘number:’)
txtmsg = raw_input(‘message:’)
client = pygvoicelib.GoogleVoice(username,apppass,auth_token,rnr_se)
client.sms(number,txtmsg)

用你在第7步创建的的username,apppass,auth_token,和rnr_se来替换这个文件中的参数
示例Example:

#!/usr/bin/python
import pygvoicelib
number = raw_input(‘number:’)
txtmsg = raw_input(‘message:’)
client = pygvoicelib.GoogleVoice(‘name@gmail.com’,'asdfahrwsthjtrh’,’4k3EozF_Qmrg3tD2_m56nQtFHCVSaTdUxb7HvcaN6g3PV929VH0eH4GGVOVpbVK2O6EaGFzMDYA6PhPjaEHr0ZGjO1GQN3RGhQLXqePWfglbXnA2n7XpUophOk5qztQyv2fYM7eYgtVCYeO6txTqbDQAAANsAAABZ7d0GTL2pJsUauPkH4Z3cpbJFqjfLZYfhok1b11pIMDnEOypZgIcOVdPEt8jEMx7oY9hHJeJoDQZYndDJDu8uoDbDWgxl87GMy990snKWR8iy8VIB17769eVWboa3224U8DLZLUWMpP0d4hfsDK5MQ’,'L6tph126BjmNjDcfTZGaWYeb+sk=’)
client.sms(number,txtmsg)

步骤9:发送短信

运行以下的指令

python text.py

它将提示你输入电话号码以及短信内容

步骤10:庆祝,打开一瓶啤酒然后好好的享受吧。

我另外也在我的blog写了这个操作步骤:http://citycorpse.com

精彩回复:

by default_user8 » Wed Feb 12, 2014 7:10 pm
Try sms via email key
here is a list by provider
Provider Format
Sprint phonenumber@messaging.sprintpcs.com
Verizon phonenumber@vtext.com
T-Mobile phonenumber@tmomail.net
AT&T phonenumber@txt.att.net
AIM +1phonenumber
by drgeoff » Thu Feb 13, 2014 10:16 am
DougieLawson wrote:I don’t think using Google Voice to send SMS messages is available outside the US & Canada. 我觉得这个除了美国和加拿大以外的地方都用不了

For 99% of the population of USA and Canada, that is the whole world. :lol:

对于美国和加拿大的99%人口来说,这就是整个世界了。
老美的傲慢和自豪感觉得他们的世界就是整个世界了,当然也是调侃的语气啦,至少人家分享的精神就很好。
至于说google voice不能在天朝用的问题,只能通过翻墙来解决了。可以在手机上装一个google voice的客户端,接受推送还是可以的。另外一个解决方案就是用飞信了,注册以后,发送邮件到13xxx@139.com,就可以收到短信了,完全免费哦,不过只能发送到移动号码,电信和联通的貌似也有类似功能,但是没有用过,可以试验一下。

钗头凤·红酥手

钗头凤·红酥手
朝代:宋代
作者:陆游

红酥手,黄縢酒,满城春色宫墙柳。东风恶,欢情薄。一怀愁绪,几年离索。错、错、错。
春如旧,人空瘦,泪痕红浥鲛绡透。桃花落,闲池阁。山盟虽在,锦书难托。莫、莫、莫!

钗头凤 唐氏
世情薄,人情恶,雨送黄昏花易落;晓风干,泪痕残,欲笺心事,独语斜栏,难!难!难!
人成各,今非昨,病魂常似秋千索;角声寒,夜阑珊,怕人询问,咽泪装欢,瞒!瞒!瞒!

 

历史背景
陆游的原配夫人是同郡唐姓士族的一个大家闺秀唐氏(有人说唐氏即陆游的表妹唐琬)。结婚以后,他们“伉俪相得”,“琴瑟甚和”,是一对情投意和的恩爱夫妻。不料,作为婚姻包办人之一的陆母却对儿媳产生了厌恶感,逼迫陆游休弃唐氏。

在陆游百般劝谏、哀求而无效的情况下,二人终于被迫分离,唐氏改嫁“同郡宗子”赵士程,彼此之间也就音讯全无了。几年以后的一个春日,陆游在家乡山阴(今浙江省绍兴市)城南禹迹寺附近的沈园,与偕夫同游的唐氏邂逅相遇。唐氏安排酒肴,聊表对陆游的抚慰之情。陆游见人感事,心中感触很深,遂乘醉吟赋这首词,信笔题于园壁之上。

果真是情深不寿,归去后唐氏不久就忧郁而死,留下陆游怅叹一生、追忆一生。在唐氏逝去四十年后的时候,陆游重游故园,挥笔和泪作《沈园》诗:

(其一)

城上斜阳画角哀,

沈园非复旧池台。

伤心桥下春波绿,

曾是惊鸿照影来。

(其二)

梦断香消四十年,

沈园柳老不吹绵。

此身行作稽山土,

犹吊遗踪一泫然!

到八十一岁时,这位孤独老人,还梦回沈园,写下:“城南小陌又逢春,只见梅花不见人。”直到离世前一年,陆游再度重游沈园,怀念唐氏,此情至死。

陆游一生以梅自喻,然而城南小陌的那株梅花难道不是他情系一生的唐氏吗?她心如日月、情比金坚,似一朵高洁的白梅,为情而落。这朵白梅,就落在陆游的心里,从此不再寂寞开无主,不再黄昏独自愁。就这样,为了一段承诺,他活到百发苍苍,只为守护那株清冷、冰洁的梅花。

参见:卜算子 咏梅

驿外断桥边,寂寞开无主。已是黄昏独自愁,更著风和雨。

无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故。

桃夭(TAO YAO) peach blossom

桃夭(TAOYAO) peach blossom

2389215
桃之夭夭

桃之夭夭,灼灼其华。之子于归,宜其室家。

tao zhi yaoyao, zhuozhuo qi hua. zhizi yugui, yi qi qhijia.

桃之夭夭,有蕡其实。之子于归,宜其家室。

tao zhi yaoyao, youfen2 qi shi. zhizi yugui, yi qi jiashi.

桃之夭夭,其叶蓁蓁。之子于归,宜其家人。

tao zhi yaoyao, qiye zhen1zhen. zhizi yugui, yi qi jiaren.

 

[注释 Comment]

夭夭(yao yao): 桃花怒放的样子, blooming aspect of the peach blossom

灼灼(zhuozhuo): 花开得很茂盛,broomy  flower

华(hua):花 ,same as 花(flower)

之子(zhizi):指出嫁的女子,the girl getting married

归(gui):女子出嫁,wedding,specially for a girl

宜(yi):和顺,和善, good for something

室家(shijia):指夫妇,the couple

蕡(fen): 果实肥硕的样子, fruitful,always represent a large family with many children.

蓁蓁(zhenzhen): 树叶繁盛的样子,flourishing leaves.

 

《孟子》:“丈夫生而愿为之有室,女子生而愿为之有家”,上指其夫,故专言家,下论夫妇之道,故兼言室家。

Meng said, A man is willing a home for Her, A woman is willing a family for Him. First line of the poem, indicates the man, talking about the home.  Second and third line talk about the way of the couple.

–王先谦《诗三家义集疏》

一场盛大的婚礼,一对璧玉的新人,在牵手走过红地毯的时候,唱响这一首歌曲,《桃夭》,在当年,或许就是我们今天的《婚礼进行曲》, 关于婚姻的一切,在这一刻得到了透彻的祝福。

–沈文婷《〈诗经〉是一枚月亮》

An image of the wedding ceremony, a new couple walk through the red carpet. Taoyao, just like the nowaday’s  Wedding March, describes the wish to the new marriage.

 

午夜小说 第一回

某无节操群,午夜俩死宅编排打趣、逗乐,整理如下:

层峦叠嶂,奇峰乱出。千年古道上,行走着一个弱女子,一席白衣,樱桃小口,柳叶岱眉,肌如凝脂,肤如白玉,眉宇间一股浓浓的媚气。在这荒凉古道上显得分外扎眼。
天色已黑,夜色渐浓。女子一路小碎步来到一破落村落前,败落的村口古藤盘踞,乌鸦乱飞,破败的牌坊上写着三个大字:情人涧。
月黑风高,村里全无人声,只有稀稀拉拉几声狗叫,此女子全然不怕,眉宇间一股阴森森的青气,她,是人,是鬼?
只见女子掏出一只奇香,点燃,插在村口破败的石碑上,然后慢慢坐在石碑下。全无一点生息,奇香忽明忽暗,散发出一股奇怪的香气。
呵呵呵呵呵呵…,不到一盏茶的功夫,村口突然响起一阵凄厉的怪笑,笑得让人毛骨悚然,更让人称奇的是,白衣女子尽然不怕,反而微微一笑,转过身来,张口说到:死鬼,这么晚才来。害我累死辣。待会罚你给我大保健。
顺着声音望去,只见村口石狮之上,坐着一个男子,两眼奇大,身形消瘦,十指尖尖,小腹微大,一看就是啤酒肚,身着一件天方地圆五行八卦大袍。后秀十二宫锦绣苗金画。难道此人就是传说中的情人涧鬼见愁,五行山人:吴老道?
冰冰,你怎么现在才来呀,想死牛鼻子我了,嘿嘿嘿嘿,快来让我亲亲抱抱。石狮上的男子一边说话,一个纵身,已然来到白衣女子前,一脸淫邪,流着口水,小手乱摸,小嘴乱亲。
白衣女子刚刚歇息完毕,气力恢复,无奈吴老道的淫邪之术,两腮绯红,两眼迷离,气喘不已,吴老道看在眼里,加大功力,欲在石碑旁就行了好事。突然,在这电光火石间,一道金光一闪,从两人眼前一晃,消失得无影无踪。白衣女子吓得花容失色,吴老道也吓得不轻,咬牙切齿的说到:tmd,村里不知道什么时候多了一只草泥马,来无踪去无影的,每次都在人眼前跑,吓死我了。
老道定睛一看,草泥马背上坐在俩人,一个就是那个秃和尚,一个是被绑着的爱婆。吴老道立马拉住缰绳,贼秃,放下爱婆,我就放你一条生路!
你不要放我生路,你放马过来。老和尚低下头,使劲吼,嘴巴都要碰到吴老道了。
接着身后传来一声娇叱,死和尚,坏和尚,死冤家,怎么说跑就跑了,只见爱娃气喘吁吁跑过来。
声音未落,只见爱娃一个来驴打滚,来到吴老道面前,一个猴子偷桃,俄~~~~!吴老道脸色惨白*****
爱娃拉住老道不断诉苦,我们家这个喜新厌旧的老秃驴,才和我过了没几天就看上了爱婆,这不带上爱婆,抛下我和大仙就跑了,可怜我们家大仙还没断奶。真要感谢老道士帮我拦住他。
这一招苦肉计果然奏效,吴老道放松警惕,突然,爱娃掏出一个手雷,以迅雷不及掩耳盗铃儿响叮当之势塞进了吴老道的裤裆。砰_____!一声巨响,情人涧里升起一朵蘑菇云。
这时秃驴一声喝道,爱娃,你不能这样,他才是我的真爱,你和爱婆照顾好大仙,我追随老道去了。说罢,和尚将爱婆往空中抛去,落下砸中自己脑袋,脑浆四溅。
5年后,大仙站在和尚老道坟前,你这老和尚,当年怎么就抛弃我娘爱娃和我姨爱婆追随这死道士去了。今天我带阿雅来看你了,昨天我把村长和村长儿子打跑了,从小我就暗恋她,我们现在终于在一起了,将来你就有后了,老和尚你可以安息了。
这时传来一声“你们不能在一起!”坟头窜出两道黑影
大家定睛一看,其中一人两眼奇大,身形消瘦,十指尖尖,小腹微大,一看就是啤酒肚,身着一件天方地圆五行八卦大袍。后秀十二宫锦绣苗金画。
另外一个穿着破烂袈裟,长着一蓬乱草一样头发的人站在大仙面前。
大家还未定神,老道已然开口说话:大侄子,你不能和阿雅在一起,他是你亲妹妹。
和尚指着大仙说到,阿雅她确实是你的亲妹妹,都怪当年我抵制住那黄皮子的诱惑,荒唐的那一夜,黄皮子有了她。生下她后皮子难产撒手妖寰。村头那庙不好养女孩,当年只好放到村长家当童养媳。
大仙哈哈笑道,你说的可是当真?这样我就可以开心的去抓兔子去了,不带这个鼻涕妹妹玩了。
然后,他和冰冰手牵手,蹦蹦跳跳,消失在乱坟岗。
老和尚和老道士脉脉的对视了一眼,天意难违啊,走,找爱婆爱娃喝酒去,闺女,咱一块去!

[转]断网自动重启树莓派

断网自动重启树莓派

原文地址:http://vanraspi.dnamer.net/wordpress/?p=10

作为服务器, 树莓派还不是很稳定, 主要体现在我的无线网卡时不时的会停止工作, 相信访问我网站的朋友有时会发现我的网站挂了, 不能访问。
但是我发现只要重新启动, 一般就能解决问题,而且重启速度很快, 大约在1分钟以内。 所以, 我们需要一个脚本来监视树莓派断网没有:

将上述脚本保存到/home/pi/mybash/checknet.sh, 并 chmod +xchecknet.sh使得可以执行。
最后你可以添加一条任务到crontab:
sudo scrontab e
然后在最后添加:
*/5 * * * * /bin/bash /home/pi/mybash/checknet.sh
至此你就可以每五分钟检查一次是否能ping通百度,如果不行则重启并将重启时间写入日志 /var/log/checknet.log.

Streets of London

你看见过一个老人在关闭的市场里,用他破旧的鞋子踢打报纸吗?他的眼光里没有骄傲,腋下夹着昨日的报纸讲着昨日的故事.
你怎么能说你就是孤单的,你的太阳并没有照耀着你?让我拉着你的手领你到伦敦的街头,那里有些人和事会改变你的看法.
午夜十一点半的咖啡馆,老人孤独地坐着,透过茶杯他凝视这世界,一杯茶捱过一个时辰,末了他一个人蹒跚回家....
这首名为《Streets of London》(伦敦街头)的歌,写的是伦敦街头的老人,以及歌手对老人的悲悯情怀,苍凉的画面、忧郁的吉他声,安抚着无数落寞的心。不知道几十年后我们不再年轻,那时回想起来会是何种心情,是否像歌里唱得那样,当繁华落尽,等待我们的将会是什么。雨带着一点怜悯在哭泣,为不止一个被忘却的英雄和不在乎他们的世界……

Ralph McTell – Streets of London 倫敦的街道

1370531339667263_21
Sprial Staircase


Have you seen the old man
你可曾见过那么老的一个人
In the closed down market
在市场打烊后
Kicking up the papers with his worn out shoes
拖着他破烂了的鞋子踢着被丢弃的报纸
In his eyes you see no pride
在他的眼睛里你看不到自豪的神采
Hands held loosely at his side
双手散漫的垂在身旁
Yesterday’s paper, telling yesterday’s news
过期的报纸上,写着过期的故事
So how can you tell me you’re lonely
你怎么能告诉我你是孤独的呢
And say for you that the sun don’t shine
说太阳都不肯为你散发光亮
Let me take you by the hand
让我牵着你的手
And lead you through the streets of London
带着你走过伦敦的街头吧
I’ll show you something
让你看看那儿发生的事情
To make you change your mind
它们会把你来改变
Have you seen the old girl
你可见过那年华不再的女子
Who walks the streets of London
姗姗走过伦敦的街头
Dirt in her hair and her clothes in rags
披着她灰脏的头发和碎破的衣服
She’s no time for talking
她没有空儿停下来聊点什么
She just keeps right on walking
就只是一劲儿向前走着
Carrying her home in two carrier bags
带着两只旅行包,那是她的全部家当
So how can you tell me you’re lonely
所以你怎么能告诉我你是孤独的呢
And say for you that the sun don’t shine
说连太阳都不肯把你照耀
Let me take you by the hand
让我牵着你的手
And lead you through the streets of London
带着你走过伦敦的街头吧
I’ll show you something
让你看看那儿发生的事情
To make you change your mind
它们会把你来改变
In the old night cafe at a quarter past eleven
十一点一刻,古旧的咖啡夜店里
The same old man sitting there on his own
还是那同一个老人独自坐在那儿
Looking at the world over the rim of his teacup
越过他茶杯的边缘看着这个世界
Each tea lasts an hour, and he wanders home alone
每一杯他都会喝一个小时,然后拖着孤独的脚步回家去
Have you seen the old man
你见过那些老去的男人们吗
Outside the seaman’s mission
他们结束了海上的漂泊使命
Memory fading with the minor ribands that he wears
记忆和他佩戴的缎带一起慢慢褪色
In our winter city the rain cries little pity
在这个城市的冬季,细雨呜咽出辛酸的惋惜
For one more forgotten hero
为着被遗忘的英雄
And a world which doesn’t care
和这毫不为此牵挂的世界
So how can you tell me you’re lonely
所以你怎么能告诉我你是孤独的呢
And say for you that the sun don’t shine
说连太阳都不肯把你照耀
Let me take you by the hand
让我牵着你的手
And lead you through the streets of London
带着你走过伦敦的街头吧
I’ll show you something
让你看看那儿发生的事情
To make you change your mind
它们会把你来改变

arduino 使用多个SPI设备 how to running multiple SPI device on arduino

how to running PN532 and W5100 on same board

最近研究arduino开发板,尝试将NFC板(PN532)和网络扩展板(w5100)组合在一起,碰到个问题,这两块板子都是通过SPI总线和arduino通信,同时占用pin10,11,12,13三个口,其中10是片选信号SS。这两个设备始终无法同时工作,出现很多莫名其妙的问题。

154149rr5dubo9wbj9wlrw

比如我编译IDE自带的webserver程序,设置了ip地址为192.168.1.15,启动以后,ping 192.168.1.15可以通,但在串口接收到 ip地址为192.139.1.15,甚至是192.192.192.192,或者其他乱七八糟的地址。在PC上访问http://192.168.1.15无法打开。拔除NFC扩展板,web访问正常。然后开始漫长google之路。

参考链接

http://arduino.cc/en/Main/ArduinoEthernetShield

1.首先确认两个设备不能使用同一个SS pin,将nfc的nss针插到其他pin(貌似1,2,4,不能使用,4是SD卡的片选),我选择5,然后在arduino的setup里面增加

pinMode(5,OUTPUT);

digitalWrite(5,HIGH);

测试同时连接NFC和网络,只初始化网卡,webserver正常;如果同时初始化网卡和NFC,依旧无法访问webserver

参考链接

http://www.circuitsathome.com/mcu/running-multiple-slave-devices-on-arduino-spi-bus

2.继续google,发现两个设备的setBitOrder似乎不同,PN532是LSBFIRST,而网络是WSBFIRST,

找到原因后就简单了,只需要启动不同设备的时候,不仅仅设置SS,还要重新设置SPI的参数。

找到PN532.cpp的begin(),大约在43行,将

pn532_SPI.setDataMode(SPI_MODE0);
pn532_SPI.setBitOrder(LSBFIRST);
/*Set the SPI frequency to be one sixteenth of the
frequency of the system clock*/
pn532_SPI.setClockDivider(SPI_CLOCK_DIV16);

注释掉,然后在自己的程序里面分别写上

void enablePN() {
digitalWrite(ETH_SS, HIGH);
digitalWrite(NFC_SS, LOW);
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(LSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
delay(10);
}

void enableETH() {
digitalWrite(ETH_SS, LOW);
digitalWrite(NFC_SS, HIGH);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPCR & SPI_MODE_MASK);
SPCR &= ~(_BV(DORD));
SPI.setClockDivider( SPCR & SPI_CLOCK_MASK);
delay(10);
}

需要网卡的时候enableETH,需要NFC的时候启用enablePN,完美解决。

 

 

完整测试代码如下:

/* Web Server
* A simple web server that shows the value of the analog input pins.
*/

 

#include <SPI.h>
#include <Ethernet.h>
#include <PN532.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192, 168, 1, 15 };

EthernetServer server(80);
#define NFC_DEMO_DEBUG 1
#define PN532_CS 5
PN532 nfc(PN532_CS);

void initNFC()
{
#ifdef NFC_DEMO_DEBUG
Serial.println(“Begin start NFC!”);
#endif
nfc.begin();

uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG
Serial.print(“Didn’t find PN53x board”);
#endif
//while (1); // halt
return;
// skip NFC, continue other step without NFC
}
#ifdef NFC_DEMO_DEBUG
// Got ok data, print it out!
Serial.print(“Found chip PN5”);
Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print(“Firmware ver. “);
Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print(‘.’);
Serial.println((versiondata>>8) & 0xFF, DEC);
Serial.print(“Supports “);
Serial.println(versiondata & 0xFF, HEX);
#endif
// configure board to read RFID tags and cards
nfc.SAMConfig();
}
void NFCReading()
{
uint32_t id;
// look for MiFare type cards
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

if (id != 0) {
#ifdef NFC_DEMO_DEBUG
Serial.print(“Read card #”);
Serial.println(id);
#endif
}
}
void WebPrint(EthernetClient client)
{

if (client) {
// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if we’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (c == ‘\n’ && current_line_is_blank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println();

// output the value of each analog input pin
client.print(“welcome to tinyos”);
client.println(“<br />”);
client.print(“//*************************************”);
client.println(“<br />”);
client.print(“www.tinyos.net.cn”);
client.println(“<br />”);
client.print(“//*************************************”);
client.println(“<br />”);
for (int i = 0; i < 6; i++) {
client.print(“analog input “);
client.print(i);
client.print(” is “);
client.print(analogRead(i));
client.println(“<br />”);
}
break;
}
if (c == ‘\n’) {
// we’re starting a new line
current_line_is_blank = true;
} else if (c != ‘\r’) {
// we’ve gotten a character on the current line
current_line_is_blank = false;
}
}
}
client.stop();
}
}
#define ETH_SS 10
#define NFC_SS 5
void enablePN() {
digitalWrite(ETH_SS, HIGH);
digitalWrite(NFC_SS, LOW);
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(LSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
delay(10);
}

void enableETH() {
digitalWrite(ETH_SS, LOW);
digitalWrite(NFC_SS, HIGH);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPCR & SPI_MODE_MASK);
SPCR &= ~(_BV(DORD));
SPI.setClockDivider( SPCR & SPI_CLOCK_MASK);
delay(10);
}
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
enableETH();
Ethernet.begin(mac, ip);
server.begin();
Serial.print(“server is at “);
Serial.println(Ethernet.localIP());
enablePN();
initNFC();
//digitalWrite(5,HIGH);
//digitalWrite(10,LOW);
}

void loop()
{
// pinMode(4,HIGH);
//digitalWrite(5,HIGH);
//digitalWrite(10,LOW);
enableETH();
EthernetClient client = server.available();
WebPrint(client);
enablePN();
//delay(100);
//digitalWrite(5,HIGH);
//digitalWrite(10,LOW);
NFCReading();
//delay(100);
}

 

后记:通过这种方式实现了网络、NFC、SD卡读写的协同工作。

[转]缘是天意 份在人为

生命本是一场奇异的旅行,遇见谁都是一个美丽的意外。有愿才会有缘,如果无愿,即使有缘的人,也会擦身而过。缘是天意,份在人为。无论缘深缘浅,缘长缘短,得到即是造化。或许,真的,人生苦短,缘来不易,所以我们都应该好好珍惜,并用宽容与豁达,去对待生命的每一个人,每一件事……

德子之怨

昔日殷殷语
听声不见人
伊人来无踪
伊人去无痕

《阴阳师》这本书断断续续在kindle上看了两年多,可能因为是盗版或者翻译的也不怎么样。最终是以博雅和德子的故事结尾。
十二年前,二人因乐而识,互相仰慕,但博雅没有表达出自己当时的仰慕之心,错过了这段姻缘。德子却遭济时设计家境败落,委身于济时。之后济时又钟情于绫子,还将德子传家的琵琶送给绫子。德子疯癫变鬼找济时报仇,最后时刻听到博雅琵琶声清醒放弃逃回荒废的故居,想自杀后再找济时报仇,在博雅的表白中时而清醒时而混沌,在博雅的笛声唤醒,最终在笛声中离世。
从那时起,只要博雅夜晚独自吹起笛子,仍然是生成模样的德子就会显出身来,手抱琵琶,无言倾听笛子的清音,有时她也会应和着博雅的笛声弹起琵琶。她悠忽现出身影,须臾又消失不见。现身是“生成”模样的鬼脸,听完恢复伊人的容颜。

“为什么十二年前你不跟我说这些话呢?”
”那时,我还以为,时光会永远不变……”
“……”
”我为你吹起笛子,你在那里聆听……我以为这一切会永远延续下去……”
”无论怎样的时刻,都不会永远延续的。”
”连人的生命也是一样”