注释
|
你好,我已经解决了逻辑问题和模拟读取问题,虽然我不太明白发生了什么。
该函数 我离开这个开放希望有人可以教育我。如果您觉得它离题,请继续并关闭它。 谢谢。 |
|
Arduino API 和 Grbl 不能混用。真的,省去麻烦,甚至不要尝试。 Arduino 从 Grbl 读取模拟输入的正确方法是这样的:
|
|
Grbl 不使用任何 arduino 代码,如果你这样做就会中断。它只是使用 arduino IDE,作为一种工具,可以轻松地将 Grbl 编译和闪存到 Arduino 兼容硬件。 |
|
是的,我知道与 Arduino 不兼容。我描述的路径帮助我解决了所有问题,但我不打算继续使用 Arduino 库或错误 GRBL 来解决问题。GRBL 很棒。如果其他人认为有用,我会分享我的发现。 感谢您的解释和一个伟大的项目。 |


你好,
我在这里认真地旋转我的轮子,希望我能得到一些帮助。我正在尝试为带有多个按钮、灯和电位器的 Sanguino/644p 定制 GRBL。(我正在用 GRBL 替换我自己开发的运动控制器,所有这些都是为了点动/覆盖控制。)
我的一些代码遇到了一个非常奇怪的问题。我已经从主协议循环中添加了对我的代码的调用,这里进行了简化以关注问题:
该
input_service()函数读取数字输入和一个模拟输入。数字输入状态存储在字节数组中。我跟踪当前和以前的状态,以便我可以响应上升沿和下降沿。当数字输入 6 变高时,该函数
input_edgeHigh返回一个非零值。2 个“if”块具有不同的行为。“if”块都打印出input_edgeHigh函数调用返回的值。第一个“if”块第一次打印“1”,然后多次打印“0”(只要引脚保持高电平)(println以二进制字符串形式写入串行)。第二个“if”块只打印一次“1”。这似乎是非常错误的(第一个块打印“0”),因为如果函数返回零,则不应输入该块。第二个“if”块的行为符合预期,以某种方式将结果分配给局部变量可以解决问题。如果你仍然和我在一起,这里是相关的代码,简化了。我将引脚的当前和先前状态存储在 buttonStates[] 中每个条目的最右边的 2 位中。
有趣的是,我有一个
input_edgeLow工作正常的功能……我更大的问题是,因为我没有解决办法,读取模拟输入总是返回 0。我已经在 Arduino 草图中测试了所有这些逻辑(除了串行之外不使用 Arduino.h 东西)并且一切正常完美无缺。
我已经浏览了 GRBL 代码并注释掉了与 IO 相关的所有内容,但行为没有变化的步进器除外。
任何人都可以解释发生了什么,或者给我一些读取模拟输入的方法吗?是否有 Arduino sketch 做了 GRBL 没有做的事情,或者 GRBL 做了 Arduino sketch 没有做的事情?
谢谢。
/达里尔