通过一块Arduino控制另一块装有GRBL的Arduino的简单办法
RT,最近要做一个小玩意,需要一块 Arduino 与电脑通讯,根据电脑发来的指令控制另一块装有 GRBL 的 Arduino,与电脑通讯的 Arduino 还要同时处理别的设备发来的串口数据,于是折腾了一番,终于解决了,记录如下,供需要的筒子们参考:简单的说,就是想用一块 Arduino 同时接收硬件串口和软件串口发来的不同指令,处理后用软件串口将 G 代码发给另一块装了原版 GRBL 的 Arduino。方法如下:
首先我们将处理指令的 Arduino 称为 A,装了 GRBL 的 Ardunio 称为 B,将 A 的 pin 5 和 pin 6 设为了软件串口的 RX 和 TX,然后将 A 的 pin 5(RX) 连接到 B 的 pin 1(TX),再将 A 的 pin 6(TX) 连接到 B 的 pin 0(RX),A 和 B 的 GND 也要相连。然后在 A 中写入如下代码:
#include <SoftwareSerial.h> // 软件串口
// 软件串口设置
SoftwareSerial WRSerial(3, 4); // 其他软件串口数据通讯TTL RX, TX
SoftwareSerial GBSerial(5, 6); // GRBL数据通讯TTL RX, TX
String WRComData = ""; // 串口字串缓存
String GBComData = ""; // 串口字串缓存
void setup() {
// 串口初始化
Serial.begin(9600);
GBSerial.begin(9600);
WRSerial.begin(9600);
}
void loop() {
// 其他软件串口数据处理
while(WRSerial.available()) {
WRComData += char(WRSerial.read()); // 将串口数据全部写入字串
delay(2);
}
if(WRComData.length() == 11) {
// 任意内容
}
WRComData = ""; // 清除缓存
// GRBL数据处理
while(Serial.available()) {
GBComData += char(Serial.read()); // 将串口数据全部写入字串
delay(2);
}
if(GBComData == 'G') {
GBSerial.listen();
GBSerial.println(GBComData);
WRSerial.listen();
}
GBComData = ""; // 清除缓存
}
运行后,如果 A 接收到从硬件串口(比如电脑)传来的 G 代码,则将该代码完整的发送给 B,同时 A 还可以随时接收来自 pin 3(RX) 和 pin 4(TX) 串口的数据,进行其他处理。
如果大家有更好的办法,欢迎探讨 请问楼主 Arduino如何装GRBL 本帖最后由 shenhaiyu 于 2015-4-21 10:45 编辑
evesky 发表于 2015-4-8 16:44 static/image/common/back.gif
请问楼主 Arduino如何装GRBL
http://blog.protoneer.co.nz/grbl-arduino-library/
这有一个简单的 Arduino IDE库,把 grbl 源代码复制到这个库里直接就可以用 IDE 写 grbl了
grbl源代码可以在这下:https://github.com/grbl/grbl shenhaiyu 发表于 2015-4-21 10:41 static/image/common/back.gif
http://blog.protoneer.co.nz/grbl-arduino-library/
这有一个简单的 Arduino IDE库,把 grbl 源代码复 ...
给Arduino安装好GRBL,Arduino就能识别Gcode代码 吗? Arduino将G代码转换成什么了?进而来控制步进电机? evesky 发表于 2015-4-23 21:59 static/image/common/back.gif
给Arduino安装好GRBL,Arduino就能识别Gcode代码 吗? Arduino将G代码转换成什么了?进而来控制步进电机 ...
对啊,用串口给Arduino发送G代码,Arduino将G代码转换成舵机驱动器支持的脉冲啊 evesky 发表于 2015-4-23 21:59 static/image/common/back.gif
给Arduino安装好GRBL,Arduino就能识别Gcode代码 吗? Arduino将G代码转换成什么了?进而来控制步进电机 ...
对啊,用串口给Arduino发送G代码,Arduino将G代码转换成舵机驱动器支持的脉冲啊 想问一下这个GRBL-Arduino-Library编译出来的执行效率和AVR方式写的一样吗?
公孙林 发表于 2015-5-6 09:42 static/image/common/back.gif
想问一下这个GRBL-Arduino-Library编译出来的执行效率和AVR方式写的一样吗?
效率当然一样了,这个库只是提供了一个编译的接口,主要程序还是原先的GRBL 请问可否用A把SD卡里的G代码发到B? 貌似出错概率比较高 chengzi 发表于 2015-6-4 11:09 static/image/common/back.gif
请问可否用A把SD卡里的G代码发到B?
当然可以了 shenhaiyu 发表于 2015-6-4 13:00 static/image/common/back.gif
貌似出错概率比较高
???什么出错概率比较高 dbo 发表于 2015-6-7 13:58 static/image/common/back.gif
???什么出错概率比较高
回复9楼的~~ 请问用什么给A板发送G代码?发送的代码是类似于G01 Z100这样的吗? joyduino 发表于 2018-4-10 01:29
请教如果一块ARDUINO刷了GRBL 后,怎么再复原到原来的ARDUINO 状态?就是还原成学习板
用ide重新写新的程序就可以了啊
页:
[1]