Fehlendes Paket?

Moin, ich bin ein ziemlicher Anfänger und hoffe sehr, Ihr könnt mir einen Tipp geben :smiley:
Ich versuche gerade ein Projekt nach Anleitung umzusetzen. Ich verwende den Adafruit Feather M0 und die Arduino IDE Version 1.8.13 .

Ich habe im Board Manager das entsprechende Board hinzugefügt und dann ausgewählt.
Danach habe ich eine datalog Datei angelegt und den Adafruit F M0 an meinen Laptop angeschlossen.
Anschließend habe ich (nach Anleitung) 4 libraries von github.com geladen und die zip-Dateien über die IDE eingelesen (z.B. RTClib). Eine 5. library musste ich aus einer größeren zip-Datei holen. Den entsprechenden (entpackten) Ordner habe ich dann einfach in “libraries” in meinem Dateisystem kopiert. Aus der selben zip-Datei habe ich dann eine .ino-Datei geholt und in der IDE geöffnet. Beim Überprüfen ist dann ein Fehler aufgetreten, so dass der Code nicht kompiliert wurde. Ich kenne mich mit C++ eigentlich nicht aus, aber es sieht so aus, als sollte die Klasse DateTime als Parameter übergeben werden und ist scheinbar nicht vorhanden?? Ich hätte irgendwie erwartet, dass DateTime Teil von RTClib ist?

Arduino: 1.8.13 (Linux), Board: "Adafruit Feather M0, Small (-Os) (standard), Arduino, Off"


OpenCTD_master_m0:270:41: error: 'DateTime' has not been declared
  270 | void get_date_time_string(char* outStr, DateTime date) {
      |                                         ^~~~~~~~
OpenCTD_master_m0:68:6: error: redefinition of 'void setup()'
   68 | void setup () {
      |      ^~~~~
/tmp/untitled819291506.tmp/sketch_dec22a/sketch_dec22a.ino:1:6: note: 'void setup()' previously defined here
    1 | void setup() {
      |      ^~~~~
OpenCTD_master_m0:170:6: error: redefinition of 'void loop()'
  170 | void loop () {
      |      ^~~~
/tmp/untitled819291506.tmp/sketch_dec22a/sketch_dec22a.ino:6:6: note: 'void loop()' previously defined here
    6 | void loop() {
      |      ^~~~
/tmp/untitled819291506.tmp/sketch_dec22a/OpenCTD_master_m0.ino: In function 'void loop()':
OpenCTD_master_m0:209:42: error: cannot convert 'DateTime' to 'int'
  209 |     get_date_time_string(dateTimeString, now);
      |                                          ^~~
      |                                          |
      |                                          DateTime
/tmp/untitled819291506.tmp/sketch_dec22a/OpenCTD_master_m0.ino:270:50: note:   initializing argument 2 of 'void get_date_time_string(char*, int)'
  270 | void get_date_time_string(char* outStr, DateTime date) {
      |                                         ~~~~~~~~~^~~~
exit status 1
'DateTime' has not been declared

PS: Bei dem Projekt handelt es sich um GitHub - OceanographyforEveryone/OpenCTD: The OpenCTD is a low-cost, open-source CTD for researchers and citizen scientists.

OpenCTD_master_m0.ino (12.2 KB)

mischa123: Ich verwende den Adafruit Feather M0

Beim Überprüfen ist dann ein Fehler aufgetreten, so dass der Code nicht kompiliert wurde.

'DateTime' has not been declared

Ich hätte irgendwie erwartet, dass DateTime Teil von RTClib ist?

Bist Du Dir sicher, das die RTCLib auf dem SAM läuft?

Für einen ARDUINO UNO lässt sich der Sketch - ohne den Drucksensor - kompilieren.

Der Sketch verwendet 24556 Bytes (76%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 1907 Bytes (93%) des dynamischen Speichers, 141 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten.

Der Code sollte eigentlich laufen. Bin aber auch gerade einen Schritt weiter gekommen. Ich hatte blöderweise die letzte library unter Linux in den libraries Ordner des Programmverzeichnises geschoben und nicht bemerkt, dass in meinem Home-Verzeichnis ebenfalls ein entsprechender Ordner angelegt worden war :confused: . Außerdem habe ich zuerst "Sketch -> Datei hinzufügen" für die ino Datei verwendet. Jetzt habe ich mal den öffnen Button probiert, was die Datei ebenfalls in mein Home-Verzeichnis verschoben hat. Danach war das Kompilieren kein Problem mehr.

Jetzt habe ich zwar das neue Problem, dass sich das ganze nicht auf den Arduino laden lässt. Ich habe zwei unterschiedliche USB-Kabel ausprobiert. Beim ersten bekomme ich die Meldung, dass kein Board gefunden wurde und auch "Werkzeuge -> Port" lässt sich gar nicht erst auswählen. Beim zweiten Kabel ist unter Port /dev/ttyACM0 (Adafruit Feather M0) ausgewählt. Hier ist die Fehlermeldung dann etwas ausführlicher :D

Der Sketch verwendet 53504 Bytes (20%) des Programmspeicherplatzes. Das Maximum sind 262144 Bytes.
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 "/dev/ttyACM0".
    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 - /dev/ttyACM0; Method name - openPort(); Exception type - Permission denied.
    at jssc.SerialPort.openPort(SerialPort.java:170)
    at processing.app.Serial.touchForCDCReset(Serial.java:101)
    ... 6 more

mischa123: Jetzt habe ich zwar das neue Problem,

Caused by: processing.app.SerialException: Fehler beim Ansprechen des seriellen Ports "/dev/ttyACM0".

Caused by: jssc.SerialPortException: Port name - /dev/ttyACM0; Method name - openPort(); Exception type - Permission denied.

Du hast ein Rechteproblem! Unter welchem BS?

https://forum.arduino.cc/index.php?topic=495039.0

/dev/ttyACM0 deutet auf ein unixoides BS hin.

Gruß Tommy

Linux Mint 20 (basiert auf Ubuntu/Debian). Ok, Ich schaue mal, ob ich die IDE mit Admin-Rechten starten kann...

mischa123: Linux Mint 20 (basiert auf Ubuntu/Debian). Ok, Ich schaue mal, ob ich die IDE mit Admin-Rechten starten kann...

OK, mint und Ubuntu passen... @ Tommy56: bei Arch, bsd und was es da noch so gibt wäre ich raus.

@TO: Du musst Dich in jedem Fall in die DIALOUT Gruppe eintragen, dann klappts auch mit dem Nachbarn. Ab- und wiederanmelden nicht vergessen.

Nächste Leseprobe - jetzt deutsch -, mit der ich meine Installation auf einem schwerfälligen 16er Ubuntu hinbekam. https://forum.arduino.cc/index.php?topic=565540.0

mischa123: Linux Mint 20 (basiert auf Ubuntu/Debian). Ok, Ich schaue mal, ob ich die IDE mit Admin-Rechten starten kann...

Siehe auch hier: https://www.arduino.cc/en/Guide/Linux#please-read

Das Problem war tatsächlich mit den zwei Konsolenzeilen zu lösen :) . Vielen Dank! Die Rote Schrift ist zwar etwas irritierend, aber ich glaube, der Upload hat reibungslos funktioniert.

Der Sketch verwendet 53504 Bytes (20%) des Programmspeicherplatzes. Das Maximum sind 262144 Bytes.
Atmel SMART device 0x10010005 found
Device       : ATSAMD21G18A
Chip ID      : 10010005
Version      : v2.0 [Arduino:XYZ] Mar  5 2016 17:46:52
Address      : 8192
Pages        : 3968
Page Size    : 64 bytes
Total Size   : 248KB
Planes       : 1
Lock Regions : 16
Locked       : none
Security     : false
Boot Flash   : true
BOD          : true
BOR          : true
Arduino      : FAST_CHIP_ERASE
Arduino      : FAST_MULTI_PAGE_WRITE
Arduino      : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
done in 0.873 seconds

Write 54160 bytes to flash (847 pages)
[==============================] 100% (847/847 pages)
done in 0.339 seconds

Verify 54160 bytes of flash with checksum.
Verify successful
done in 0.040 seconds
CPU reset.

Super, dass es jetzt funktioniert.

Danke für die Rückmeldung.

Ok, das ist vielleicht schwer zu beurteilen ohne das Projekt genau zu kennen...aber ist das wohl normal, dass der Serielle Monitor nur dann Werte anzeigt, wenn ich das USB-Kabel 1. nach dem Öffnen des Monitors einmal kurz raus und wieder reinstecke, oder 2. kurz vor dem Öffnen des Monitorfensters reinstecke? In allen anderen Fällen bleibt die Ausgabe leer.

LG. Mischa