标签: gpio

Python Key press和Key Release Listener

我正在使用python代码控制远程玩具车.截至目前,代码如下

def getkey():
        fd = sys.stdin.fileno()
        old = termios.tcgetattr(fd)
        new = termios.tcgetattr(fd)
        new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
        new[6][TERMIOS.VMIN] = 1
        new[6][TERMIOS.VTIME] = 0
        termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
        c = None
        try:
                c = os.read(fd, 1)
        finally:
                termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
        return c

def car():
    while True:
        key = getkey()
        if key == 's': #Down arrow
            print "Down"
            Backward()
        elif key == 'w': #Up arrow
            print "Up"
            forward()
        elif key == 'a': 
            print "left"
            Left()
        elif key == 'd': 
            print "Right" …
Run Code Online (Sandbox Code Playgroud)

python gpio raspberry-pi

6
推荐指数
1
解决办法
2万
查看次数

如何在嵌入式Linux中检测GPIO线路上的中断?

pandaboard OMAP4中,GPIO_39每隔10ms产生一次中断.我在Linux驱动程序代码中为此注册了一个处理程序,但由于未检测到中断,因此未调用处理程序.

我确保在硬件级别(通过探测gpio引脚)确实正在生成中断.只是软件无法检测到它.

我在驱动程序代码中有以下内容.

#define GPIO_NO     39

  iowrite16(0x3, gpio_39_address + 2); /* Configured the pin 22 to be used as gpio. */

  ret = gpio_request(GPIO_NO, "Claiming GPIO");
  if(ret < 0)
  {
    printk(KERN_ALERT "%s: Claiming GPIO_%d failed\n", __func__, GPIO_NO);
    return -1;
  }
  else
  {
    printk(KERN_INFO "%s: Claiming GPIO_%d successful\n", __func__, GPIO_NO);
  }

  ret = gpio_direction_input(GPIO_NO);  
  if(ret < 0)
  {
    printk(KERN_INFO "%s: Setting GPIO direction to input failed\n", __func__);
    return -1;
  }
  else
  {
    printk(KERN_INFO "%s: Direction of …
Run Code Online (Sandbox Code Playgroud)

c linux interrupt gpio pandaboard

6
推荐指数
1
解决办法
1797
查看次数

"此GPIO引脚已存在:"第二次GPIO 1异常

我正在使用Raspberry pi和java来使LED闪烁使用pi4j,一切都清除并且工作正常,LED按照代码闪烁但是当我第二次运行它会导致以下错误,我有搜索很多有很多相同的问题没有明确的答案如何解决它,任何帮助将不胜感激

final GpioController gpio = GpioFactory.getInstance();
            final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(
                    RaspiPin.GPIO_01, "PinLED", PinState.HIGH);
            System.out.println("light is: ON");
            Thread.sleep(2000);


            pin.low();
            System.out.println("light is: OFF");
            Thread.sleep(1000);


            System.out.println("light is: ON for 1 second");
            pin.pulse(1000, true);

            pin.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF);
            gpio.shutdown();
Run Code Online (Sandbox Code Playgroud)

这是我得到的完整错误

com.pi4j.io.gpio.exception.GpioPinExistsException: This GPIO pin already exists: GPIO 1
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionPin(GpioControllerImpl.java:507)
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:645)
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:672)
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:684)
    com.restFulService.Controller.LedControl.ledTestFun(LedControl.java:52)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180)
    org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:439)
    org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:178)
Run Code Online (Sandbox Code Playgroud)

java gpio raspberry-pi raspbian

6
推荐指数
1
解决办法
4041
查看次数

GPIO如何映射到内存中?

我最近正在浏览pi2的GPIO驱动程序,我发现用户空间pi2 GPIO lib(如python的RPi.GPIO 0.5.11)/dev/mem用于BCM2708(从0x20000000开始,GPIO从0x200000开始相对)来mmap用户空间内存区域为了处理GPIO.但是我drivers/gpio在linux中发现源码树是专门为处理而设计的/sys/class/gpio/*.我发现没有像I/O端口映射喜欢request_io_region__io_remap.我的问题是BCM2708的GPIO如何映射到内存中?还有其他司机吗?我可以通过R&W来处理GPIO /sys/class/gpio/*吗?

mmap linux-device-driver gpio ioports raspberry-pi2

6
推荐指数
1
解决办法
5484
查看次数

覆盆子pi上的多个热电偶

我是覆盆子Pi的GPIO部分的新手.当我需要引脚时,我通常只使用Arduino.但是如果可能的话,我真的希望将这个项目合并到一个平台上,我想在PI上完成所有这些工作.

所以我有三(3)个MAX31855板和K型热电偶.我只是不知道在哪里连接其他两个.我不知道我是否可以使用任何其他引脚(电源和接地引脚除外)用于MISO,CSO和SCLK引脚.这可能听起来像一个菜鸟问题,但就像我说我习惯使用arduino这个东西.任何输入都表示赞赏.提前致谢.

我正在使用https://github.com/Tuckie/max31855中的代码

from max31855 import MAX31855, MAX31855Error

cs_pin=24
clock_pin=23
data_pin=22
unit="f"
thermocouple1=MAX31855(cs_pin, clock_pin, data_pin, units)
print(thermocouple.get())
thermocouple.cleanup()
Run Code Online (Sandbox Code Playgroud)

python temperature python-3.x gpio raspberry-pi

6
推荐指数
1
解决办法
3833
查看次数

模拟Raspberry Pi GPIO信号

我是Raspberry Pi的新手,我想知道我们如何模拟/模拟传感器(或GPIO),这样我就可以测试我的python代码,模拟引脚的高点和低点?

提前致谢!

python simulation mocking gpio raspberry-pi

5
推荐指数
1
解决办法
4424
查看次数

按钮 GPIO.FALLING 事件被触发两次

这是我第一次尝试对 Raspberry Pi 和面包板上的硬件按钮进行编码。程序很简单,当检测到按下按钮时,打开面包板上的 LED 1 秒钟。我的代码似乎有效,但奇怪的是,每隔一个按钮就会触发回调函数两次。我是一个完全的编程菜鸟,所以我不确定问题是否出在我的代码上,或者硬件或按钮是否实际上以某种方式掉落了两次。我希望这里有人能帮助我解决这个奇怪的问题。这是我的代码:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time


LedPin = 11    # pin11 --- led
BtnPin = 12    # pin12 --- button

def setup():
    GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
    GPIO.setup(LedPin, GPIO.OUT)   # Set LedPin's mode is output
    GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Set BtnPin's mode is input, and pull up to high level(3.3V)
    GPIO.output(LedPin, GPIO.HIGH) # Set LedPin high(+3.3V) to off led

def Light(ev=None):
        print 'A button press was detected'
        GPIO.output(LedPin, 0) …
Run Code Online (Sandbox Code Playgroud)

python gpio raspberry-pi raspberry-pi2

5
推荐指数
1
解决办法
4500
查看次数

虚拟GPIO仿真

是否存在用于编程需求的虚拟GPIO驱动程序?

我必须在我的Linux PC上开发一个软件,然后在一些带有物理GPIO的嵌入式系统上试用它(CHIP,OpenWRT等等)?

谢谢!

linux emulation gpio

5
推荐指数
1
解决办法
2848
查看次数

USB 转 GPIO/SPI/I2C/UART 适用于常规 Windows 10 PC?类似于 Raspberry Pi 40 针接头

有谁知道有一家公司销售适用于普通非物联网 Windows 10 PC 的 USB 电缆,该电缆可以将 USB 转换为 40 针 Raspberry pi 接头上的所有以下总线?示例:USB->GPIO、I2C、SPI、UART 等。

我能找到的最接近的是:

Digilentinc.com 的数字发现逻辑分析仪

这可以将 PC USB 转换为 GPIO/I2C/SPI 等...除了我正在寻找更小、电线更少的东西...只有 40 针接头或更少...类似于树莓派 40 针接头,除了被驱动从连接到 PC 的 USB 改为...有人见过这种类型的待售产品,它可以通过所有列出的总线从 PC-USB 转换为 40 针接头吗?

另外,我希望能够使用“Windows.Devices”Api 而不是专有驱动程序 DLL API 通过Windows UWP对该 USB 转换设备进行编程...还没有真正找到...示例:

// C# Program GPIO connected to USB dongle of regular PC...
using Windows.Devices.GPIO;
...
private void InitGPIO()
{
    var gpio_ctrl = GpioController.GetDefault();
    // Check GPIO state
    if (gpio_ctrl == null)
    {
        this.pin = null; …
Run Code Online (Sandbox Code Playgroud)

c# windows spi i2c gpio

5
推荐指数
1
解决办法
9578
查看次数

改变树莓派3上串口的波特率

我在raspberry pi 3上安装了lineage os 14我连接了一个带有UART端口的gps模块,然而,GPS的波特率是9600但是/ dev/ttyS0的波特率是115200我想改变ttyS0的波特率以便读取GPS数据我试过stty命令

stty -F /dev/ttyS0 9600
Run Code Online (Sandbox Code Playgroud)

但是,当我再次使用此命令检查
stty -F /dev/ttyS0速度值为115200 时,这不会改变波特率.如何更改/ dev/ttyS0的波特率我也找到了一些带有串行命令的解决方案serial /dev/ttyS0 9600但是它不存在于adb shell.任何帮助都会感激不尽

gps android uart gpio raspberry-pi3

5
推荐指数
1
解决办法
1766
查看次数