Arduino Ethernet Shield: "no matching function for call to 'EthernetClass::begin()'"
Поэтому я понятия не имею, что происходит, когда дело доходит до HTTP-запросов и DHCP. И я думаю, что это часть того, что я делаю здесь неправильно. Каждый раз, когда я пытаюсь скомпилировать этот код, я получаю ошибку. Я просмотрел несколько форумов и не могу найти ответа. Кто-нибудь может помочь?
Мой код:
//Расширения
#include <SPI.h>
#include <Ethernet.h>
//Объявление переменной
int inPin = A0; //Pot wiper pin
int inVal = 0;
float unitCon = 0;
byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19};
//Различные вещи инициализации Ethernet
EthernetServer server(8080); //Порт для веб-сервера
EthernetClient client;
void setup() {
//Инициализация отладки USB
Serial.begin(9600);
//Еще больше вещей инициализации Ethernet
Serial.println("Ethernet attempting initialization...");
Ethernet.begin(); //Запускает ethernet, read would ya
//ниже приведен код для обнаружения проблем с оборудованием ethernet
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Error connecting to eththernet hardware."); //Сообщение об ошибке USB debug ethernet
while (true) { //В основном останавливает все, если оборудование Ethernet не работает
delay(1);
}
}
//ниже приведен код для отправки сообщения в меню отладки, если есть проблема с подключением ethernet
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable not connected");
}
//Инициализация сервера
Serial.println("Server attempting initialization...");
server.begin(); //Команда инициализации сервера
Serial.print("Server IP: ");
Serial.println(Ethernet.localIP());
//Math для определения единиц измерения напряжения в следующем коде
unitCon = 5.015/1024;
}
void loop() {
//считывание значений:
inVal = analogRead(inPin);
//печать на последовательном мониторе
//Serial.print(float(inVal*unitCon));
//Serial.println(" вольты");
//Для подключения клиентов прослушивается следующее
EthernetClient client = server.available();
if (client) {
Serial.println("Client Connected");
//http магия, о которой я понятия не имею....
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read(); //Я думаю, что здесь происходит то, что мы используем символ для хранения информации о клиенте... может быть...
Serial.write(c);
if (c == '\n' && currentLineIsBlank) { //Проверяет, удовлетворен ли http-запрос
//Ниже приведен стандартный http-заголовок
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 5"); //Определяет время в секундах, в течение которого веб-страница должна автоматически обновляться
client.println();
//Запуск содержимого веб-страницы
client.println("<!DOCTYPE HTML>");
client.println("<html>");
//Содержание страницы
client.print(float(inVal * unitCon));
client.print(" volts");
//Закрытие HTML
client.println("</html>");
}
//Следующая if/elif-это функция budget currentLineIsBlank
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
//Дает веб - браузерам время для получения ранее отправленных данных
delay(1);
//Завершение соединения
client.stop();
Serial.println("Client Disconnected");
}
}
Ошибка:
C:\Users\drew0\Documents\Arduino\sketch_jun18a\sketch_jun18a.ino: In function 'void setup()':
sketch_jun18a:27:18: error: no matching function for call to 'EthernetClass::begin()'
Ethernet.begin(); //Begins the ethernet, read would ya
^
In file included from C:\Users\drew0\Documents\Arduino\sketch_jun18a\sketch_jun18a.ino:4:0:
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:82:13: note: candidate: static int EthernetClass::begin(uint8_t*, long unsigned int, long unsigned int)
static int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:82:13: note: candidate expects 3 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:88:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress)
static void begin(uint8_t *mac, IPAddress ip);
^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:88:14: note: candidate expects 2 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:89:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress)
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns);
^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:89:14: note: candidate expects 3 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:90:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress)
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:90:14: note: candidate expects 4 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:91:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress, IPAddress)
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet);
^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:91:14: note: candidate expects 5 arguments, 0 provided
exit status 1
no matching function for call to 'EthernetClass::begin()'
@Drew Butler, 👍2
Обсуждение1 ответ
▲ 1
Вам просто нужно указать MAC - адрес в качестве параметра, например:
Ethernet.begin(mac)
,
@Nino
http://slash7.com/2006/12/22/vampires/, @Juraj
@Juraj Понял намек :-), @Nino
Смотрите также:
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Удаленная загрузка кода на плату Arduino через интернет
- Arduino Ethernet Shield 2 застрял на EthernetServer::begin()
- Как подключить Arduino и базу данных MySQL сервера WAMP?
- Arduino Ethernet Shield 2: Как автоматически определить MAC-адрес?
- Как сделать веб сервер arduino через USB? Без ethernet shield и чипа wifi
- Использовать Ethernet Shield и RFID rc522 вместе на мега
- Разбор HTTP с аутентификацией в Arduino + Ethernet Shield
upvote для представления правильно отформатированного кода и полной распечатки ошибок ... пожалуйста, задайте вопрос о проблеме вместо " Кто-нибудь может помочь?` ... это не вопрос об arduino, @jsotola
Ethernet.begin
ожидает аргументы; возможно, вы захотите сначала следовать вместе с учебником, например: https://www.arduino.cc/en/Tutorial/LibraryExamples/WebClient. Обратите внимание, как их вызов "begin" предоставляет MAC - адрес., @Dave NewtonЭто также обсуждается в ссылке на функцию [
begin
] (https://www.arduino.cc/en/Reference/EthernetBegin)., @Dave NewtonЯ голосую за то, чтобы закрыть этот вопрос, потому что реальной проблемы нет., @Juraj
@Juraj Я просил помощи с кодом, это запрещено?, @Drew Butler
нет никакой проблемы, вы просто игнорируете сообщение об ошибке, примеры и документацию, @Juraj