话说上回我们提到Edison一共就这么7组API: Aio I2c Gpio Pwm Spi Uart Common
光有API可能同学们还不是很容易接受,来我们马不停蹄的来看下各自的例程,希望对大家有所帮助:p
1, GPIO
首先看看最最最最简单的一个例子
- import mraa
-
- print (mraa.getVersion()) #打印mraa的版本
- x = mraa.Gpio(13) #创建一个GPIO对象
- x.dir(mraa.DIR_OUT) #设置GPIO为输出
- x.write(1) #写入1 这是你会看到Arduino for Edison扩展板上有一个LED灯来起来了。
复制代码
2, AIO
第二个当然是同样简单低调的模拟IO
- import mraa
-
- print (mraa.getVersion())
-
- x = mraa.Aio(0) #创建一个模拟IO,接口0
- print (x.read()) #读取pin 0上的模拟数据
- print ("%.5f" % x.readFloat()) #打印读到的数据
复制代码
3, UAT
- import mraa
-
- u = mraa.Uart(0)
- print u.getDevicePath() #正常情况,会打印出/dev/ttyMFD1
复制代码
4, SPI
执行这个例子,请短接Arduino for Edison上的pin11 和 pin12,分别 MISO(TDX) 和 MOSI(RDX)
这个例子是自己 写->读 数据100次,并且检查写的数据跟读出来的数据是否相等。
如果没有任何输出,说明你的程序是正确的,否则报错,说明SPI是有问题的。
- import mraa as m
- import random as rand
-
- dev = m.Spi(0)
-
- for x in range(0,100):
- txbuf = bytearray(4)
- for y in range(0,4):
- txbuf[y] = rand.randrange(0, 256)
- rxbuf = dev.write(txbuf)
- if rxbuf != txbuf:
- print("We have an error captain!")
- break
- exit(1)
复制代码
5, I2C
这个例子是使用I2C来改变Grove-LCD 套件的背光。
- import mraa
-
- x = mraa.I2c(0) #创建I2C
- x.address(0x62) #设置地址
-
- #初始化设备
- x.writeReg(0, 0)
- x.writeReg(1, 0)
-
- # 发送RGB数据
- x.writeReg(0x08, 0xAA)
- x.writeReg(0x04, 255)
- x.writeReg(0x02, 255)
复制代码
6, PWM
提到PWM最先想到的多半就是控制直流电机了。
这个例子是,让点击从停止慢慢加速到最大速度,然后在慢慢停止下来,然后循环往复。
具体函数,之前已经有帖子详细说明了,不详述了这里。
- import mraa
- import time
-
- x = mraa.Pwm(3)
- x.period_us(700)
- x.enable(True)
- value= 0.0
-
- while True:
- x.write(value)
- time.sleep(0.05)
- value = value + 0.01
- if value >= 1:
- value = 0.0
复制代码
好了,如果大家能把这几个例子花几分钟细心看下,然后顺便执行一下,详细Edison上使用python编程就基本上没有什么问题了。
剩下的就是去查找具体API了。
|