arduino - 在 atmega328p 上复制 Arduino 的串行通信
问题描述
我有一个简单的电路,带有一个 ESP8266 和一个 Arduino Nano,通过串行通信。
为了测试这种通信,我发送了一个简单的“打开”字符串,Arduino 应该打开一个 LED。
这是Arduino代码:
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
}
void loop() {
if(Serial.available() > 0)
{
String command = "";
while(Serial.available())
{
command += (char)Serial.read();
delay(1);
if (command == "T"){
while(Serial.available())
{
command += (char)Serial.read();
delay(1);
}
}else{
command = "";
}
}
if(command == "TURN ON") {
digitalWrite(3, HIGH);
}
if(command == "TURN OFF") {
digitalWrite(3, LOW);
}
}
delay(500);
}
这工作正常。
现在,我想用 Atmega328p 替换 Arduino。
加上 LED,以及连接到 ESP8266 的 TX 和 RX 引脚。
如果我将相同的代码上传到 Atmega328p,它不起作用,所以我想我错过了一些非常重要的东西(比如 UART 配置或其他东西),但我不知道那是什么
解决方案
我猜你在 Atmega328p 上使用了外部编程器,它是新的 Atmega328p。
如果我的假设是正确的,那么 Atmega328p 中的保险丝位被设置为使用内部 1MHz 时钟,这就是问题所在。
你可以做些什么来解决这个问题:将编程器连接到 Atmega328p 转到工具>板,在板中选择 Arduino Uno。转到工具>程序员选择您正在使用的程序员。转到工具并选择刻录引导加载程序。
然后您可以将您的代码上传到 Atmega328p,它应该会按照您期望的方式开始工作。
我希望这有帮助。
推荐阅读
- node.js - 如何在服务器上的 express 和 node 中创建文件,然后将其下载到我的客户端。我正在为我的前端和后端使用 NextJS
- python - 如何创建更具活力的 Scrapy Spider?
- javascript - 在循环中声明的 React js 函数包含对“允许”变量的不安全引用
- git - 有没有办法对存储库中的各个组件进行版本/标记?
- angular - 直接从 Angular 连接到 Firebase 数据库是否安全?
- swift - 如何为 KCFloatingActionButton 定义 touchUpInside 动作?
- c - 用 fork 创建 num 个进程,然后删除一些我不会使用的进程
- python - 有一个错误需要解密一个整数
- javascript - 使用 Reactjs 的点表示法与括号表示法
- r - 查找值为零的行并在其前后添加行数