Problem beim Kompilieren

Hallo, ich bin sehr neu bei Arduino und wollte für meinen Arduino Nano Every ein Vorgefertigtes Script benutzen, welches speziel für mein Projekt erstellt worden ist. Ich habe auch schon die notwendigen add-ones meiner libary hinzugefügt (servoeasing und eines zum Verwenden meines Arduinotypens). Aber wenn ich auf "upload" klicke wird mir dieser Fehler angezeigt:

"wArduino: 1.8.14 (Windows 10), Board: "Arduino Nano Every, None (ATMEGA4809)"

C:\Users\Stefan\AppData\Local\Temp\ccMA6qLV.ltrans0.ltrans.o: In function `setup':

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:18: undefined reference to `ServoEasing::attach(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:19: undefined reference to `ServoEasing::attach(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:20: undefined reference to `setSpeedForAllServos(unsigned int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:21: undefined reference to `ServoEasing::setEasingType(unsigned char)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:22: undefined reference to `ServoEasing::setEasingType(unsigned char)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:23: undefined reference to `synchronizeAllServosStartAndWaitForAllServosToStop()'

C:\Users\Stefan\AppData\Local\Temp\ccMA6qLV.ltrans0.ltrans.o: In function `loop':

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:33: undefined reference to `ServoEasing::setEaseTo(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:34: undefined reference to `ServoEasing::setEaseTo(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:35: undefined reference to `synchronizeAllServosStartAndWaitForAllServosToStop()'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:40: undefined reference to `ServoEasing::setEaseTo(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:41: undefined reference to `ServoEasing::setEaseTo(int)'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:42: undefined reference to `synchronizeAllServosStartAndWaitForAllServosToStop()'

C:\Users\Stefan\AppData\Local\Temp\ccMA6qLV.ltrans0.ltrans.o: In function `_GLOBAL__sub_I_servoTop':

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:2: undefined reference to `ServoEasing::ServoEasing()'

C:\Users\Stefan\Documents\Arduino\servos/servos.ino:3: undefined reference to `ServoEasing::ServoEasing()'

collect2.exe: error: ld returned 1 exit status

exit status 1

Fehler beim Kompilieren für das Board Arduino Nano Every."

Kann mir jemand weiterhelfen?

Da ist offensichtlich was schiefgelaufen, denn die ServoEasing Library ist nicht vollständig installiert. Wie hast Du das gemacht? Die kann man doch einfach über den Bibliotheksmanager installieren.

So sieht das bei mir aus. Brauch ich da eine Speziell Version? Mir wird nämlich angezeigt, dass das installiert ist

Drück mall Moore info und schau ob dein Board in der Liste dabei ist, oder mit älterer Version testen manchmal hilft das.

Hast Du sie auch mit dem Bibliotheksmanager installiert?

Wie sieht denn der code in setup() aus?
Hoffentlich nicht so: Servo1.attach(SERVO1_PIN, 45);

Ich bin jetzt 3 oder 4 versionen runter gegangen. Der Fehler wird mir zwar nicht mehr angezeigt, aber er zeigt mir seit mehreren Minuten ''Hochladen...'' an. Liegt das an der Verbindung, Sketch größe oder woran sonst?

Die erste Code Zeile :
#include "servieasing.h"
wird mir jetzt aber Rot angezeigt

Wenn Du eine Fehlermeldung bekommst, hast Du auf der rechten Seite einen Button "Fehlermeldung kopieren"
Diese hier einstellen - in Codetags.
Und dann den Code dazu.

Das ist doch hier kein ratespiel.
Solltest eines der Beispiele genommen haben, reicht es auch zu sagen, welches.

Das ist kein Beispiel von den erstellern von der libary. Das hier ist der Code:


Und ich bekomme keine Fehlermeldung sondern das Hochladen funktioniert nicht (also es wird seit Minuten nur ,,Hochladen..." angezeigt)

Mach das in Code Tags rein das kann man nicht lesen :slight_smile:

Soll ich jetzt dein Bild abschreiben?

Wenn Du den Code nicht hochgeladen bekommst, dann:

DATEI - VOREINSTELLUNGEN - Ausführliche Ausgabe während [x] Kompilierung [x] Hochladen
Compilerwarnungen [ALLE]

Dann einmal die IDE schliessen, den every abziehen
Every anstecken - DingDong
Arduino-IDE starten.
Alles andere wie ich schon schrub.
Keine Bilder!
Vielleicht erstmal sehen, das das Beispiel Simple oder TwoServos überhaupt compiliert und hochladet.

Sorry, bin absolut neu bei Arduino😥.
Ich werds ausprobieren. Danke für die HIlfe

Hier der Code:

#include "ServoEasing.h"
ServoEasing servoTop;
ServoEasing servoBottom;
const int action_pin = 2;
const int ledPin = 6;
const int potPin = A0;
int location = 31;
int bottom_closed = 107;
int top_closed = 167;
int bottom_open = 20;
int top_open = 20;
int value;
int maxBrightness;
void setup()
{
pinMode(action_pin, INPUT_PULLUP);
pinMode(potPin, INPUT);
servoTop.attach(9);
servoBottom.attach(10);
setSpeedForAllServos(190);
servoTop.setEasingType(EASE_CUBIC_IN_OUT);
servoBottom.setEasingType(EASE_CUBIC_IN_OUT);
synchronizeAllServosStartAndWaitForAllServosToStop();
}
void loop()
{
value = analogRead(potPin);
maxBrightness = map(value, 250, 750, 0, 255);
int proximity = digitalRead(action_pin);
if (proximity == LOW)
{
if (location > bottom_open) {
servoTop.setEaseTo(top_open);
servoBottom.setEaseTo(bottom_open);
synchronizeAllServosStartAndWaitForAllServosToStop();
location = bottom_open;
delay(10);
analogWrite(ledPin, 0);
} else {
servoTop.setEaseTo(top_closed);
servoBottom.setEaseTo(bottom_closed);
synchronizeAllServosStartAndWaitForAllServosToStop();
location = bottom_closed;
delay(50);
analogWrite(ledPin, maxBrightness / 3);
delay(100);
analogWrite(ledPin, maxBrightness / 5);
delay(100);
analogWrite(ledPin, maxBrightness / 2);
delay(100);
analogWrite(ledPin, maxBrightness / 3);
delay(100);
analogWrite(ledPin, maxBrightness);
delay(100);
}
}
}

Der Code compiliert.

Du solltest das gesamte schwarze Fenster unten durchscrollen.
Da steht in einer Warnung drin, was Du ändern musst.

Hinweis: Warnungen müssen aktiviert sein.

Ist das immer so?

Der Sketch verwendet 7856 Bytes (15%) des Programmspeicherplatzes. Das Maximum sind 49152 Bytes.
Globale Variablen verwenden 154 Bytes (2%) des dynamischen Speichers, 5990 Bytes für lokale Variablen verbleiben. Das Maximum sind 6144 Bytes.
Erzwinge Reset durch öffnen/schließen mit 1200 bps auf dem Port COM3

Und dieser Fehler wird mir angezeigt:

processing.app.debug.RunnerException
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:152)
at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77)
at processing.app.SketchController.upload(SketchController.java:732)
at processing.app.SketchController.exportApplet(SketchController.java:703)
at processing.app.Editor$UploadHandler.run(Editor.java:2055)
at java.lang.Thread.run(Thread.java:748)
Caused by: processing.app.SerialException: Fehler beim Ansprechen des seriellen Ports "COM3".
at processing.app.Serial.touchForCDCReset(Serial.java:107)
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:136)
... 5 more
Caused by: jssc.SerialPortException: Port name - COM3; Method name - openPort(); Exception type - Port busy.
at jssc.SerialPort.openPort(SerialPort.java:164)
at processing.app.Serial.touchForCDCReset(Serial.java:101)
... 6 more

Nochmal #13 lesen und machen.
Und dann das </> Symbol verwenden.

Wie versorgst Du die Servos?

Die USB-Schnittstelle hat meist zuwenig Leistung um 2 Servos zu versorgen.

Grüße Uwe

Habs mehrmals probiert. Tut sich aber nix

Dann bin ich raus.

1 Like

Über 4×1.5 Volt Batterien