Код Mega не компилируется на плате Wemos Mega
Привет, у меня есть код, который я пытаюсь перенести с Mega 2560 R3 на Wemos Mega.
#include "SoftPWM.h"
#include ESP8266WiFi.h
// Выходы на ШИМ & H направление моста
// ШИМ:
// DC_pwm, left_pwm, right_pwm = 3, 4, 5
int pwm_out[] = {3, 4, 5};
const int num_pwm = sizeof(pwm_out) / sizeof(pwm_out[0]);
// Управление направлением моста H:
// dc_1, dc_2, left_1, left_2, right_1, right_2 = 6, 7, 8, 9, 10, 11
int dir_pins[] = {6, 7, 8, 9, 10, 11};
const int num_dir_pins = sizeof(dir_pins) / sizeof(dir_pins[0]);
// Переменная для чтения входных контактов
int from_r_pi_pwm = 0;
int from_r_pi_dir = 0;
void setup() {
// Входные данные от Raspberry Pi
Serial.begin(38400);
// Настраиваем контакты ШИМ
SoftPWMBegin();
for (int i = 0; i < num_pwm; i++)
{
SoftPWMSet(pwm_out[i], 0);
}
// Устанавливаем контакты направления моста H
for (int i = 0; i < num_dir_pins; i++)
{
pinMode(dir_pins[i], OUTPUT);
digitalWrite(dir_pins[i], LOW);
}
}
void loop() {
// Проверка ввода от R Pi & отправь его на H-бриджи
while (Serial.available() < 2){}
if (Serial.available()) {
// читаем входящие байты:
from_r_pi_dir = Serial.read();
from_r_pi_pwm = Serial.read();
Serial.print("Serial in: directions - ");
Serial.print(from_r_pi_dir);
Serial.print(" PWM - ");
Serial.print(from_r_pi_pwm);
Serial.println();
}
// Устанавливаем направления на H мостах
for (int i = 0; i < num_dir_pins; i++)
{
digitalWrite(dir_pins[i], bitRead(from_r_pi_dir, i));
Serial.print("pin ");
Serial.print(dir_pins[i]);
Serial.print(" : ");
Serial.print(digitalRead(dir_pins[i]));
Serial.println();
}
// ШИМ для двигателей
for (int i = 0; i < num_pwm; i++)
{
analogWrite(pwm_out[i], from_r_pi_pwm);
Serial.print("pin ");
Serial.print(pwm_out[i]);
Serial.print(" : ");
Serial.print(digitalRead(pwm_out[i]));
Serial.println();
}
}
Это компилируется и отлично работает на Mega & это мой код для настройки PWM & h мосты.
Итак, когда я играл с Wi-Fi, я выбрал плату Wemos R1 из программатора & все работало нормально, но если я попробую это с этим кодом, то получу:
#include <avr/io.h>
^
compilation terminated.
exit status 1 Error compiling for board WeMos D1 R1.
Итак, после небольшого поиска я обнаружил, что мне следует выбрать Arduino/Genuino Mega 2560
, но теперь время загрузки продолжает истекать,
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
An error occurred while uploading the sketch
Кто-нибудь сталкивался с этим раньше?
Обновление №1: Согласно комментарию ниже, я попытался установить DIP-переключатели 1 и amp; 2 ВКЛ, а все остальное ВЫКЛ (я также пробовал 1, 2, 3 и 4 ВКЛ, а остальные ВЫКЛ), но все равно та же ошибка компиляции, если я выбираю плату Wemos.
Если я выберу Mega 2560, я получу ESP8266WiFi.h: Нет такого файла или каталога
, что является новой ошибкой!
@DrBwts, 👍0
Обсуждение1 ответ
Лучший ответ:
Плата Wemos/Mega и настройка IDE сложны и не для слабонервных. Вот таблица настроек DIP-переключателя:
1=ON 2=ON 3=OFF 4=OFF 5=OFF 6=OFF 7=OFF 8=OFF (ATmega2560<->ESP8266)
1=OFF 2=OFF 3=ON 4=ON 5=OFF 6=OFF 7=OFF 8=OFF (USB <->ATmega2560)
1=OFF 2=OFF 3=OFF 4=OFF 5=ON 6=ON 7=ON 8=OFF (USB<->ESP8266 (Update firmware or sketch))
1=OFF 2=OFF 3=OFF 4=OFF 5=ON 6=ON 7=OFF 8=OFF (USB<->ESP8266 (communication))
1=OFF 2=OFF 3=OFF 4=OFF 5=OFF 6=OFF 7=OFF 8=OFF (All independent)
Настольный DIP-переключатель, специальное решение:
1=ON 2=ON 3=ON 4=ON 5=OFF 6=OFF 7=OFF 8=OFF (USB <-> ATmega2560<-> ESP8266)
USB converter CH340G connect to RX0/TX0 of ATmega2560
ESP8266 connect to RX3/TX3 of ATmega25
https://arduino-esp8266.readthedocs.io/en/latest/index.html для документации ESP8266.
Установите URL-адрес дополнительных плат: http://arduino.esp8266.com/stable/package_esp8266com_index.json в настройках
В разделе «Инструменты» выберите «Плата», затем «Диспетчер плат», затем установите esp8266 от сообщества ESP8266
Настройка Arduino IDE требует понимания того, какие настройки платы и настройки связи следует использовать для создания и загрузки скетча.
В разделе «Инструменты» выберите «Плата», затем выберите «Arduino/Genuino Mega или Mega 2560»
Установите DIP-переключатели на плате в положение 1=ВЫКЛ. 2=ВЫКЛ. 3=ВКЛ. 4=ВКЛ. 5=ВЫКЛ. 6=ВЫКЛ. 7=ВЫКЛ. 8=ВЫКЛ (USB <->ATmega2560)
Это была настройка DIP-переключателя и USB.
Ссылка. https://forum.arduino.cc/index.php?topic=578430.0
Ошибка ESP8266WiFi.h: нет такого файла или каталога
проста. Имя файла должно представлять собой строку: #include «ESP8266WiFi.h»
.
- Возникла проблема с переобъявлением символа другого типа
- Почему я получаю ошибку "SendCommand не был объявлен"
- Как добавить условие в пример RFID?
- У меня есть вопрос, в моем коде произошла ошибка, говорящая о том, что TIMSK не был объявлен в области видимости (ошибок нет)
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Ошибка: expected unqualified-id before 'if'
- Как сбросить или отформатировать Arduino?
Вы не можете просто скомпилировать код для Mega и для WeMos. Это совершенно другое оборудование. В Arduino Mega используется чип Atmega, а в WeMos — ESP. Вам придется пройти весь код, поменять пины, проверить, доступно ли необходимое оборудование в этом чипе и проверить, совместимы ли используемые библиотеки с ESP. Портирование, по большей части, непростая задача., @chrisl
Доска Wemos — это Mega и EPS на одной доске. См. [здесь](https://www.instructables.com/id/Arduino-MEGA-2560-With-WiFi-Built-in-ESP8266/), @DrBwts
Включите DIP-переключатели 1 и 2, все остальные ВЫКЛЮЧИТЕ., @Juraj
@Юрай попробовал это, но ошибка компиляции все та же, если я выберу плату Wemos и если я выберу Mega 2560, я получу _ESP8266WiFi.h: Нет такого файла или каталога_, @DrBwts