注释
|
是的,我有,我搜索出来了。 2015-03-20 8:07 GMT+01:00,DasWookie notifications@github.com:
|
|
代码是这样的,需要插在 这是代码: #ifdef signal_tower
} 将 signal_tower 的定义放置在 cpu_map.h 上, #define SIGNAL_TOWER_BIT 3 2015-03-20 11:17 GMT+01:00, Cri S phone.cri@gmail.com :
|
|
@DasWookie: Grbl 中没有这样的功能。它有意采用极简主义以避免软件膨胀,因此它可以专注于重要的事情。如果需要,添加起来相当简单。作为@cri-s如前所述,您可以在 protocol_realtime_execute() 中设置 LED,大多数状态机更改都发生在此处。 |
|
我担心软件膨胀!有这么多用户,每个人都有自己的特殊需求。状态灯似乎是人们可能想要的东西之一,考虑到这么多专业的 CNC 都有它们,而且 Grbl 中的许多变化似乎是为了尝试在那里保持平价……一个例子是门功能。 除了运算放大器之外,我的另一个想法是使用移位寄存器来控制灯,这需要使用 3 个而不是单个引脚输出来控制多个灯/状态消息。我的期望是在 cpu_map.h 和/或 config.h 中看到类似于支持它的东西,以及 report.c 中塔的相应代码……或者可能在某种 signal_tower.h 和 signal_tower.c 集合中文件。 我并不反对编写自己的实现代码并为 Grbl 的后续版本修补我的分支……我希望它可以在主线中得到支持。 |
|
@DasWookie:安全门功能是原始设备制造商向欧盟运送机器所需要的东西,所以这是一个关键的东西。另一方面,LED 并不是关键特性。的确,它的实现相当惰性且很小,但是 Arduino Uno 上的标准构建的 Grbl 没有支持它的引脚。我将其添加到待办事项列表中,但不能保证它会成功。 |
|
我知道这是从 2015 年开始的,但我也在寻找此功能。在我的例子中,我为 arduino uno 设计了一个新的基于螺丝的防护罩,并且非常喜欢工作警报 LED 指示灯的功能。考虑到许多商用 CNC 机器都有这样的状态灯,我也有点惊讶,至少没有将其添加为一个选项。 在我的新板上,我将一个 LED 连接到模拟引脚 4,因为它似乎在文档中被列为未使用并且可以配置为输出。 我可以理解这可能不是关键功能,而且 uno 在 328p 上的程序空间有限,但我不会考虑这种膨胀。然而,由于空间如此有限,我想此时任何东西都可以被认为是臃肿的。 我仍然希望这将被添加到上游开发中,并且可以通过快速评论/取消评论来启用。 上面的代码建议可能足以让我可以一起破解一些可行的东西,但我更熟悉 IDE 中的 aruino c 代码。我什至不确定此时 cpu_map.h 的 A4 值需要是多少。如果有人有更多代码建议,请告诉我。在我的例子中,当警报被触发时,我只需要一个琥珀色的 LED 灯来点亮,而不是一个带有 3 盏灯的整个 LED 灯塔。 这是我对任何感兴趣的人的盾牌: |
|
@cri-s,根据您上面的代码示例,我似乎有部分工作的模拟 4 LED 代码。但是,当没有警报状态处于活动状态时,LED 不会关闭。你能帮我吗?我对这个端口操作代码有点不适应。我不是一个程序员。感谢您的任何帮助,您可以提供。 @chamnit, 也欢迎您提供任何帮助。 这是我的部分工作代码: void protocol_exec_rt_system() /////////////////////// 如果(状态==STATE_ALARM)signal_light(开); uint8_t rt_exec;// 临时变量以避免多次调用 volatile。 和:
#define signal_light(on) (SIGNAL_LIGHT_DDR |= (1<<SIGNAL_LIGHT_BIT),SIGNAL_LIGHT_PORT |= (1<<SIGNAL_LIGHT_BIT)) |
|
对此进行了更多修改,我似乎得出结论,该代码中的 protocol.c 文件或 cpu_map.h 文件部分存在错误。当 cpu_map.h 中未定义关闭状态时,我可以使用此代码让 LED 打开 A4,但是当我去定义关闭状态时,代码似乎默认为 LED 最后编程的任何状态(在这种情况下)。 这会导致 LED 在状态更改时无法更改。我可以让 LED 在我们处于警报状态时持续点亮,或者无论状态如何都持续点亮,但不会按预期改变。我觉得我可能无意中将 LED 编程为永远保持亮起并且无法改变。也许类似于使用 = 而不是 ==。但如前所述,我不熟悉这种形式的 C 编程,只熟悉通过 IDE 和各种库的抽象简化的 arduino 编码。 任何帮助,将不胜感激。 void protocol_exec_rt_system() uint8_t rt_exec;// 临时变量以避免多次调用 volatile。
// 报警 LED 代码: 如果(状态==STATE_ALARM)signal_light(开); rt_exec = sys_rt_exec_alarm; // 复制易失性 sys_rt_exec_alarm。 和 //定义洪水和喷雾冷却剂启用输出引脚。
// #define signal_light(on) (SIGNAL_LIGHT_DDR |= (1<<SIGNAL_LIGHT_BIT), SIGNAL_LIGHT_PORT &= (1<<SIGNAL_LIGHT_BIT), SIGNAL_LIGHT_PORT |= (1<<SIGNAL_LIGHT_BIT) ) |
|
经过多次修改代码后,我似乎已经解决了自己的问题。最后我不得不去掉示例代码中编写的宏。学习一点 C/C# 编程中的位设置也没有坏处。无论如何,我仍然不是一个伟大的程序员,但我现在稍微好一点了。最后,KISS 方法帮助简化了代码,使我既了解代码在状态机中的作用,又能按预期工作。 所以……走我!好极了!:) 这是工作的简化代码: 对于 cpu_map.h 文件: //定义洪水和喷雾冷却剂启用输出引脚。 ///////////////// #define signal_light_init signal_light_off 对于 protocol.c 文件: // 在需要时执行运行时命令。此功能主要作为 Grbl 的状态 uint8_t rt_exec;// 临时变量以避免多次调用 volatile。 ////////////////////// |


这也许可以在我看不到的地方做,但我粗略地看了看却无济于事……如何将状态灯连接到 grbl 以获得绿色/黄色/红色灯塔?
我希望能够设置一个引脚,然后可以定义电压(或者可能是多个引脚,而不是我们有很多备用!),然后设置灯塔可以用来显示机器当前状态的各种状态电压。 .. 无论是绿色 – 正在运行,黄色 – 循环完成或等待交互(工具更换、保持、门、空闲等)和红色(警报、限制、big-badda-boom)。