问题标签 [wiringpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 WiringPI 创建共享库
我想创建一个共享库,因为 JNI 需要它。
我有两个文件
压电扬声器.c
和
压电扬声器.h
我用 gcc 编译这个
我成为错误,符号未定义。gcc 命令是错误的,因为它不包含wiringPi 库。如何链接包含 WiringPi Lib 的库?
c++ - WiringPi C++串口函数随机停止工作
启动 GPS Ros 节点时,大部分时间从 Raspberry 串行端口读取数据有效,但有时在重新启动后,它无法正确读取数据并一次又一次地溢出相同的字符(总是“?”)。只有在重新编译或重新启动节点后,它才能重新开始工作。
gcc - WiringPi库的交叉编译
我正在尝试从 Linux Ubuntu VirtualBox 安装中设置针对 Raspberry Pi 的交叉编译流程。我克隆了工具 repo(而不是建立一个完整的 crosstool-ng 构建)并且能够编译一个基本的 hello world 应用程序并在我的 pi 上运行它。我现在正在尝试通过我通过 cmake 的交叉编译流程编译wiringpi库来获得更复杂的示例,遵循本教程: https ://medium.com/@au42/the-useful-raspberrypi-cross-compile-指南-ea56054de187
不幸的是,它不起作用 - 由于未声明的函数,我收到编译错误,这些函数看起来像标准 C 库 (time.h)。第一个 c 文件 (softpwm.c) 编译相对容易,但第二个 (wiringPi.c) 错误,因为它包含 time.h - 并引用其中定义的常量。
据我所知,gcc 的交叉编译版本没有在适当的目录中查找系统库头文件(usr/include/linux|sys|bits)。我已经验证 time.h 确实位于传递给 cmake 的工具链文件指定的 sysroot 路径中。
请注意,我在这里没有编写任何代码,我只是想重现本教程,该教程使用交叉编译工具链构建 WiringPi 的交叉编译版本。
我试图在我的 CMakeLists.txt 文件中添加特定的包含目录,但这会产生其他编译错误。第一个库无法构建,因为现在它无法找到 pthreads 包。
我还使用我的交叉编译流程使用基本 time.h 成功构建了一个 GNU 示例,以查看工具安装是否存在问题。这编译得很好。
我打开了详细的 makefile、-v 和 -Wall 选项,以努力了解正在发生的事情以及可能缺少的内容。
还有我的 Toolchain-rpi.cmake 文件:
错误:
c - ODROID-C2上的wiringPi库的问题-未在此范围内声明的函数
我使用 ODROID-C2。我已经按照说明安装了wiringPi库(来自页面https://wiki.odroid.com/odroid-c2/application_note/gpio/wiringpi):
$ sudo apt install git
$ git clone https://github.com/hardkernel/wiringPi
$ cd wiringPi
$ sudo ./build
最后我得到了“全部完成”的信息。然而,在不同常见警告(例如“ ignoring return value of ...
”)之间的安装过程中,我收到以下警告(例如):“ implicit declatration of function 'pinMode' [-Wimplicit-function-declaration]
”。在库安装过程中会多次出现与不同功能相关的类似警告。安装后,使用该命令gpio readall
可以获取整个引脚图。C
此外,如果我在( )中将库添加到我的程序中#include <wiringPi.h>
,则程序编译成功。但是,当我使用库中的命令(例如wiringPiSetup();
)时,编译失败并出现以下错误:
16: error: 'wiringPiSetup' was not declared in this scope
. 我的简单代码如下:
如何解决wiringPi库的问题?
c - 使用rpi 2b上的wiringPi从C读取GPIO端口总是说没有信号
我正在尝试使用 C 从树莓派 2B 读取 GPIO 端口。我正在使用wiringPi 模块,并且我编写了一个小程序来尝试它,但它总是打印0,即使我直接将引脚连接到3.3 或5V。我也试过把它拉起来,但它总是说 1,即使我尝试将它直接接地。当我尝试用 python 读取 pin 时,它工作正常,所以我不知道出了什么问题。代码如下:
我正在运行 raspbian 7 (wheezy)
c - 如何在C中使用wiringpi确定按钮按下持续时间
对于 aspberry pi 项目,我有连接到 GPIO 的按钮,我想根据按下按钮的时间采取不同的操作。以下 python 代码(摘录)按预期工作:
我想把它转换成C程序(别问为什么,我真的不喜欢python而且我对C更熟悉,所以我想用C来做)
尝试使用wiringPi将其转换为C,我想出了这个,但它没有按预期工作:
似乎应该等待按钮释放的循环没有被执行,或者 while 条件总是为真,因此,持续时间总是为零。
该digitalRead(BUTTON_2_PIN)
函数是否完全等同GPIO.input(channel)
于python代码中的函数?
如果有人能指出我如何检测按钮按下(软件去抖动)并测量 C 中按钮按下的持续时间的正确方向。
非常感谢。
编辑:工作解决方案
在玩了很多之后,在 Francesco Boi 的帮助下,我找到了一个可行的解决方案,虽然我真的不明白为什么与 python 代码相比,为什么使用 HIGH / LOW 的比较逻辑被交换(我认为按下按钮会导致引脚下降到低并释放它会将其提升到高......)
c++ - 如何使用 JUCE 构建 WiringPi?
我已经在运行流畅的树莓派 b+ 上成功构建和编译了 JUCE。现在我正在尝试在 JUCE 中使用带有旋钮/旋转编码器的 WiringPi 在液晶显示器上显示文本。一切正常,但是当我尝试在我的 juce 应用程序中调用wiringPi 函数时,我得到wiringPi 的“未定义引用错误”。
我的问题是,我如何同时构建 WiringPi 和 Juce,以便我可以在 JUCE 中调用 WiringPi 方法/函数。下面是我的代码片段
这是我得到的错误:
源代码:
和:
c - 在 serialPutchar() 速度之后切换 Raspberry Pi 上的 GPIO 引脚
我正在尝试使用 2000000 的波特率与我的 Raspberry Pi 3B+ 上的编码器通信。来自 Pi 的信号正在使用需要芯片的芯片从 RS-232 转换为 RS-485 信号选择切换以允许以一种或另一种方式进行通信。从 RS-232 -> rs-485 线路需要很高,所以我将其设置为高并发送通信,效果很好。问题是编码器在约 4us 内响应,并且似乎写入命令花费的时间太长,无法允许随后的数字写入将芯片选择切换为低电平以允许 RS-485 -> RS-232 的响应只有一点点位,所以我们正在丢失前几位。我想知道是否有任何方法可以加快 GPIO 引脚的写入或切换速度。根据对 GPIO 引脚的测试,我可以在 0.1us 左右切换它,这就是为什么我相信它是写命令的原因。
我试图删除我正在使用的wiringPi库,并自己创建串行端口以获得相同的最终结果。
对于下图,黄线是发送和接收线,一切都是十六进制的。0x54 是我发送的命令,0xD7 和 0x3A 是响应。如您所见,芯片选择在响应的前几位变为低电平,导致数据丢失。
java - 树莓派上的 PWM 频率总是很低
我使用 pi4j 库在 java 中编写了一个程序,我尝试将分频器设置得尽可能低,但我得到的输出频率约为 1Hz,我似乎无法再高了。有什么想法吗?
c++ - 带有 Linux 的 Raspberry 上基于事件的 UART 输入
我想将我的项目移植到新的技术堆栈。
当前堆栈:
- C#
- UWP
- 视窗物联网
- 树莓派 3
新堆栈
- C++
- 接线Pi
- Linux(可能是 Raspbean)
- 树莓派 3
我想这样做的原因之一:我需要用于监听 UART 的循环:
但是,我在 WiringPi 中发现的是类似的:
返回串行设备上可用的下一个字符。如果没有可用数据,此调用将阻塞最多 10 秒(当它返回 -1 时)
从这里得到
有没有类似跟随代码的东西?
我想要基于事件的 UART 处理而不是while(true)
样式。