首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Arduino Uno模拟引脚作为具有pyfirmata的数字引脚

如何使用Arduino Uno模拟引脚作为具有pyfirmata的数字引脚
EN

Stack Overflow用户
提问于 2015-07-20 23:59:39
回答 1查看 2.8K关注 0票数 2

我正在尝试使用Arduino模拟引脚(A0-A5)作为数字引脚(D14-D19)与pyfirmata。我正在用D14 (或A0)做一个简单的眨眼测试来测试这个:

代码语言:javascript
复制
#!/usr/bin/python

# Blink test with analog as digital pins

# Import required libraries
from pyfirmata import Arduino, util
from pyfirmata import INPUT, OUTPUT, PWM  
from time import sleep

# Associate port and board with pyFirmata
port = '/dev/cu.usbmodem1451'
board = Arduino(port)

# Pause to sync
sleep(1)

led = board.get_pin('d:14:o')
time = 1

while True:
    led.write(1)
    print ("On")
    sleep(time)
    led.write(0)
    print ("Off")
    sleep(time)

为了启用模拟引脚作为数字引脚,我进入pyfirmata的boards.py文件(如https://github.com/tino/pyFirmata/blob/master/pyfirmata/boards.py上的github代码库所示),并将第3行从

digital': tuple(x for x in range(14)),

digital': tuple(x for x in range(20)),

当我运行我的python脚本时,我没有得到一个错误,但是LED没有闪烁(不用担心,我确信LED在正确的方向上)。

有人知道如何使用pyfirmata有效地将数字引脚14实例化为输出引脚(就像在led = board.get_pin('d:14:o')行中一样)

顺便说一句(我并不认为这会有任何影响),但我在Yosemite上运行的是Mac OSX。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 18:17:11

我们在Arduino中使用的标准firmata默认输入所有模拟引脚。因此,不用修改boards.py文件中的任何内容,而是转到arduino ide中的标准firmata文件,并找到以下内容...

代码语言:javascript
复制
switch (mode) {
    case PIN_MODE_ANALOG:
      if (IS_PIN_ANALOG(pin)) {
        if (IS_PIN_DIGITAL(pin)8) {
         pinMode(PIN_TO_DIGITAL(pin), INPUT);

现在注释pinMode行,这样firmata不会进行任何模拟引脚输入,现在转到void setup()函数并显式定义模拟引脚的性质,如下所示。

代码语言:javascript
复制
Firmata.begin(57600);
  while (!Serial) {
  }
  pinMode(14,OUTPUT);
  pinMode(15,INPUT);
  pinMode(16,INPUT);
  pinMode(17,INPUT);
  pinMode(18,INPUT);
  pinMode(19,INPUT);
  digitalWrite(14,LOW);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31521109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档