Tjo. Går det att fixa så man kan skicka kod OTA från datorn till Arduino R4 wifi utan att behöva använda deras cloud-service. Tycker det är lite väl att betala från 24 dollar/år för att det ska fungera. Kommer i första hand styra en lampa som jag ibland vill ändra färg/mönster på. Är en medusa med en Neopixel-ring). Hade en R3 tidigare men bytte till R4 wifi just för att slippa koppla i och ut alla kablar när något ska ändras.
Har inte hittat något användbart när jag googlat. Det närmsta jag kom var denna tråd: https://www.visualmicro.com/forums/YaBB.pl?num=1711079499/0
Men när jag försöker verifiera koden i Arduino IDE får jag meddelandet "The instance is no longer valid and needs to be reinitialized
Compilation error: The instance is no longer valid and needs to be reinitialized".
Får känslan av att de blockerat detta för att folk ska köpa deras tjänst istället.
Vore kalas om någon vet hur man löser detta.
Jag använder detta biblioteket när jag använder OTA hemma.
https://github.com/jandrassy/ArduinoOTA
Jag har dock inte provat det med Arduino R4 utan bara några ESP8266:or och ESP32:or.
Men enligt dokumentationen så är den testad med UNO R4:an
https://github.com/jandrassy/ArduinoOTA?tab=readme-ov-file#boards-tested
Edit efter jag läst din länk:
Det verkar vara samma bibliotek som dom använder.
Om det inte fungerar så får du gärna dela med dig hur din kod för just OTA setup och vilket anrop du använder i din loop
Exempel på hur min setup kan se ut:
void setupOTA()
{
ArduinoOTA.setPort(8266); //Port defaults to 8266
ArduinoOTA.setHostname("hostname");
ArduinoOTA.setPassword("password");
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
}
Sedan ser jag till att anropa ArduinoOTA i varje loop:
void loop() {
ArduinoOTA.handle();
ALL ANNAN LOGIK
}
Spelnyheter från FZ
Copyright © 1999–2025 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.