python如何代替arduino_【原创】用python和arduino超简单做一个小键盘/手柄(交流贴)...

Jumper 于 2012-8-28 15:44 编辑

自学了一阵python,但一直不精,一直想让python和arduino配合配合 这才发现了python的强大。

做了一个四个独立按键的小键盘。

我写的这个还不是很完善,也算不上教程。 就是大家交流交流。思路就是用arduino感应键盘,通过串口通讯发送到电脑,再用python模拟出来按键。

电路非常简单可以参考弘大的那篇帖子http://www.geek-workshop.com/thread-74-1-1.html

(ps本来想想偷懒用帖子里第一个方法的结果干扰太大没办法最后电阻电容一个都没少)

用的是2,3,4 ,5端口

151528pyzpggp7uf0yq9i7.png

arduino端代码

int key;

void setup()

{

pinMode(2,INPUT);

pinMode(3,INPUT);

pinMode(4,INPUT);

pinMode(5,INPUT);

Serial.begin(9600);

delay(1000) ;

}

void loop()

{

key=0;

if(digitalRead(2)==HIGH) //由于本例检测上升沿触发,所以先检测输入是否低电平,

{

delay(10); //然后延时一段时间,

if(digitalRead(2)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。

key=key+1;

}

if(digitalRead(3)==HIGH)

{

delay(10);

if(digitalRead(3)==HIGH)

key=key+2;

}

if(digitalRead(4)==HIGH)

{

delay(10);

if(digitalRead(4)==HIGH)

key=key+4;

}

if(digitalRead(5)==HIGH)

{

delay(10); ,

if(digitalRead(5)==HIGH)

key=key+8;

}

Serial.write(key);

}

这是python端的代码

需要用到pyserial和pywin32这两个模块

http://pypi.python.org/pypi/pyserial

http://sourceforge.net/projects/pywin32/

PYTHON 代码复制打印

import win32api

import win32con

import time

import serial

import string

key1=0

key2=0

key3=0

key4=0

#配置串口通信

ser = serial.Serial()

ser.baudrate = 9600#波特率

ser.port = 7#从0开始是COM1 这里7就是COM8

ser.open()#打开端口

time.sleep(1)#小憩一秒

while True:

date = string.atoi(ser.readline())#ser.readline()是读取一行数据 直到遇到/n ;string.atoi()是将字符串型转化为整形

if date%2!=key1:

key1=date%2

if key1:

win32api.keybd_event(65,0,0,0)#a键位码是86

else:

win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

if date%4/2!=key2:

key2=date%4/2

if key2:

win32api.keybd_event(66,0,0,0)#b键位码是66

else:

win32api.keybd_event(66,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

if date%8/4!=key1:

key3=date%8/4

if key3:

win32api.keybd_event(67,0,0,0)#c键位码是67

else:

win32api.keybd_event(67,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

if date/8!=key4:

key4=date/8

if key4:

win32api.keybd_event(68,0,0,0)#d键位码是68

else:

win32api.keybd_event(68,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

151314mkzwvkewwmd2badk.png

写在最后: 在执行那个ser.open()之前需要把arduino先插进电脑端口,而且没有其他程序占用。

对于arduino爱好者来说,电路完全没难度,可能python部分才是问题。。。。。。想我这样没有Leonardo,也不会焊电路的小白来说可能是最省事的方法了。还有经过测试。。。。。貌似按不住键盘。。。。可能python代码还有问题。。。。欢迎高手指导

如果不屑于本文的软件方法可以参考http://www.geek-workshop.com/thread-1192-1-1.html

附个键位码表:

字母和数字键 数字小键盘的键 功能键 其它键

键 键码 键 键码 键 键码 键 键码

A 65 0 96 F1 112 Backspace 8

B 66 1 97 F2 113 Tab 9

C 67 2 98 F3 114 Clear 12

D 68 3 99 F4 115 Enter 13

E 69 4 100 F5 116 Shift 16

F 70 5 101 F6 117 Control 17

G 71 6 102 F7 118 Alt 18

H 72 7 103 F8 119 Caps Lock 20

I 73 8 104 F9 120 Esc 27

J 74 9 105 F10121 Spacebar 32

K 75 * 106 F11122 Page Up 33

L 76 + 107 F12123 Page Down 34

M 77 Enter 108 -- -- End 35

N 78 - 109 -- -- Home 36

O 79 . 110 -- -- Left Arrow 37

P 80 / 111 -- -- Up Arrow 38

Q 81 -- -- -- -- Right Arrow 39

R 82 -- -- -- -- Down Arrow 40

S 83 -- -- -- -- Insert 45

T 84 -- -- -- -- Delete 46

U 85 -- -- -- -- Help 47

V 86 -- -- -- -- Num Lock 144

------------------------------------------------------------------------------------------------------------------------------

这是我写的用python获取cpu占用率 用串口发送到arduino上再通过5110显示出来。网友要是喜欢我抽空在写出来,大家交流交流。

1515294fjgwnjzjxn4w6kf.png

via - 极客工坊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值