我只是想问是否可以写保护arduino不被覆盖 我使用串口进行计算机和arduino之间的通信,所以它必须一直插入usb。问题是如何保护它形成覆盖?
有没有办法启用/禁用上传草图?
假设,我的草图是最终的,我不想有人可以写在里面。除非我解锁它。所以usb serial仅用于从arduino获取信息。
抱歉我的英语。答案 0 :(得分:3)
我建议采用以下方法:
在串行编程期间禁用自动重置:可以通过多种方式完成,例如
a)在GND和复位引脚之间加一个10uF电容(带开关或跳线)
b)移除连接DTR线的.1uF电容以从电路板复位
我最喜欢的方法是2.a
答案 1 :(得分:0)
问题不明白。意思是说如果打开串行监视器,则从头开始编码
答案 2 :(得分:0)
如果您只是使用串行从Arduino获取数据,请将RX引脚设置为HIGH。
样品:
char pinRX = 0;
void setup() {
pinMode(pinRX, OUTPUT);
digitalWrite(pinRX, HIGH);
...
...
}
此方法将使您的Arduino成为只读但请小心。
微控制器将以普通方式不可写,因此我建议您准备一些方法使RX引脚变为低电平。 (例如,按钮中断)
答案 3 :(得分:0)
假设使用UNO或ATmega328克隆。 通过切换串行端口DTR,处理器被远程重启到引导加载程序中。当应用程序连接到COM端口(或Linux上的ttyS)时,通常会发生这种情况。除了其他答案中提到的其他方法之外,可以通过几种方法来防止这种DTR。
切断DTR: 要么取下标有C5的电容器,要么在焊盘之间切割标有“RESET-EN”的可切断跳线。这些都会严重影响串行端口的DTR,不再驱动Arduino的重置以重启到引导加载程序。
没有设置DTR: 这就是说你可以配置你的主机应用程序驱动串口不要断言DTR。可以将多个终端应用程序配置为“NOT USE DTR”。这将具有与上述相同的效果。并且没有代码更改的优雅好处,使其工作,而不是工作。只需为您的解决方案运行No DTR应用程序。当您想要编程或调试IDE时运行IDE。
使用LEONARDO: 请注意,Leonardo或其他基于ATmega32u4的Arduino在其USB驱动程序中有一个虚拟串行端口。它没有可能导致外部硬重置的DTR。相反,它的远程重启方法是以1200波特暂时连接到它,之后它以更高的波特率重新启动到引导加载程序。我怀疑你的主机应用程序会做到这一点。因此,使用Leo可能会满足您的需求而不会对任何内容进行任何更改。