Zur Zeit; Wenn ich ein neues Arduino-Projekt mit neuer Hardware starte, suche ich zunächst nach Bibliotheken von Drittanbietern, die Arduino-Unterstützung für diese Hardware bieten.
Die ersten Orte, die ich sehe, sind:
Im Allgemeinen finde ich entweder keine Support-Bibliothek oder mehrere verschiedene Bibliotheken (es ist ziemlich selten, dass nur eine gefunden wird) an verschiedenen Orten mit unterschiedlichen Dokumentationsstufen, verschiedenen Teststufen ...
Sobald ich die Bibliothek gefunden habe, die ich benötige (manchmal muss ich mehrere ausprobieren), lade ich sie in meinen Arduino-Bibliotheksordner herunter, benutze sie und vergesse sie.
Ich finde diesen Vorgang umständlich:
- manuelle Suche mit verschiedenen möglichen Optionen, nicht immer gut dokumentiert
- manuelles Herunterladen und Installieren in Arduino-Bibliotheken
- Keine Versionskontrolle im Prozess (alle Versionen einer Bibliothek haben den gleichen Namen und können daher nicht im Arduino-Bibliotheksordner koexistieren).
Ich wünschte, es gäbe ein zentrales Repository mit allen verfügbaren Bibliotheken für Arduino, mit:
- Beschreibung (unterstützte Hardware, unterstützte Karten)
- Quellcode
- Dokumentation
- Versionen
Und ein Tool (Arduino IDE oder extern), mit dem Sie beim Erstellen des Projekts auf dieses Repository zugreifen können.
Eine Art Maven für Arduino.
Ich habe mehrere Diskussionen gesehen, die einmal im Arduino-Forum stattgefunden haben, aber es scheint, dass sie nirgendwohin geführt haben:
- Volkszählung und Aufbewahrungsort der Arduino-Bibliotheken
- Arduino Library Downloader
- Downloader der Arduino-Bibliothek (2)
Gibt es andere Optionen, die es zu etwas Nutzbarem machen (von der Community oder von Einzelpersonen, warum nicht)?
Antworten:
Sie haben gerade die Probleme beschrieben, für die das Unternehmen, für das ich arbeite, zu lösen versucht. Wir haben kürzlich ein Produkt namens Biicode auf den Markt gebracht . Es scheint genau das zu sein, wonach Sie suchen.
Biicode ist sowohl ein zentrales Online-Repository für Code als auch ein Client-Tool mit folgenden Funktionen:
Sie können hier eine kurze Demo sehen und mehr in der Dokumentation lesen .
quelle
Seit diese Frage zum ersten Mal gestellt wurde, gibt es jetzt den Arduino Library Manager, der in die Arduino IDE integriert ist. Dort können Sie nach Bibliotheken suchen und diese installieren.
Informationen zur Funktionsweise des Bibliotheksverwalters finden Sie hier: https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ
Es gibt jedoch keine offizielle Website, auf der die Bibliotheken aufgelistet sind. Daher habe ich kürzlich diese inoffizielle Website erstellt, die auf denselben Daten im Arduino Library Manager basiert:
http://www.arduinolibraries.info/
quelle
Die Arduino Playground LibraryList und die Standardbibliotheksliste scheinen die offiziellen Seiten dafür zu sein.
quelle
Wenn Sie eine solche Registrierung selbst erstellen möchten, sollten Sie sich npm ansehen , den Paketmanager von Node.js , der Open Source ist und einen sehr ähnlichen Umfang hat, den Sie beschreiben möchten. Npm ist beides:
Siehe zum Beispiel die Seite einer beliebten Bibliothek und die JSON-Datei mit ihren Metadaten.
quelle
Da ist gar nichts. Leider müssen Sie manuell nach jeder Bibliothek suchen, an der Sie interessiert sind.
Wenn Sie daran interessiert sind, ein solches zentrales Repository zu erstellen, ist dies zwar fantastisch, aber nicht das richtige Forum, um dies zu tun.
quelle
Arduino IDE und zugehörige Bibliotheken sind in den meisten Betriebssystem-Repositorys als installierbare Software enthalten. Leider sind die Versionen in diesen Repositorys in der Regel mehrere Monate oder sogar Jahre veraltet. Dies scheint das eigentliche Problem darin zu bestehen, OS-Repository-Manager dazu zu bringen, neue Releases zu integrieren, sobald diese verfügbar sind.
Dieses Problem tritt auf, wenn Ihre Betriebssystemversion nicht auf die neueste Version aktualisiert wurde, da Sie dadurch gezwungen sind, ein veraltetes Software-Repository zu verwenden.
Obwohl dies keine perfekte Antwort ist, sollten Sie wahrscheinlich sicherstellen, dass Sie die neueste Version Ihres Betriebssystems verwenden, und dann die Repository-Manager für dieses Betriebssystem ermutigen, die neueste Version von Arduino IDE zu integrieren.
Eine Alternative wäre, auf die Arduino.org-Homepage zu gehen und den Anweisungen zum Herunterladen und Installieren der neuesten IDE und der zugehörigen Bibliotheken zu folgen. Dies wird wahrscheinlich in Form einer .tar.gz-Datei vorliegen, sodass Sie wissen müssen, wie Sie die erforderliche Software entpacken, entpacken und erstellen.
quelle
Ich denke, dass Ihr Wunsch nicht in Erfüllung gehen wird. Ich hoffe darauf, denn nur ein Platz für alle Arduino-Bibliothekare zu haben, ohne dass Bibliotheken erlaubt sind, wäre nicht vorhanden, und all diese Bibliotheken wären gezwungen, alle kommerziellen Standards für Qualität, Test und Dokumentation (+ Codequalität, Effektivität und Lesbarkeit) einzuhalten Dies bedeutet, dass nur Fachleute und ähnlich qualifizierte Teams eine Arduino-Bibliothek veröffentlichen dürfen und alles von einer einzigen Einheit geregelt wird, wodurch das Entfernen von funktional doppelten oder ähnlichen Bibliotheken erzwungen wird. Und eine solche Entität würde soner oder später böse werden.
Ich mag das Arduino, weil es kostenlos ist, und das bedeutet auch, dass ich frei bin, eine Bibliothek zu schreiben, um einige Funktionen (die ich verwenden möchte) von Hardware (die ich habe, die ich kaufen möchte oder die ich selbst herstellen möchte - sogar hoch zu unterstützen) experimentell und vielleicht instabil, aber lustig für mich).
Da Ihre Big Central Authority effektiv ist, würde ich einfach eine andere kostenlose Plattform wählen, anstatt wegen eines nicht perfekten und kommerziell zertifizierten Ergebnisses meines Hobbys, mit Elektronik zu spielen, verklagt zu werden und gezwungen zu sein, für ihre, NICHT meine Ziele in MEINER Freizeit zu arbeiten.
Und wenn Ihre Big Central Athority mich nicht zwingen würde, freie Arbeit für sie zu erzwingen, was würden Sie dann tun, wenn meine Bibliothek eine spezielle Verwendung gängiger Hardware ermöglicht und ich sie an andere weitergeben möchte, auch wenn dies nicht der Fall ist? Lösen Sie alle HW-Funktionen vollständig in professioneller Angelegenheit und dokumentieren Sie nur so viel, wie es mir angenehm wäre, meine eigene Freizeit mit Dokumentation zu verbringen. Und was wäre, wenn für dieselbe Hardware eine andere Bibliothek entstehen würde, die einen anderen Teil der Funktionalität ermöglichen oder eine andere API und einen anderen Ansatz für das gesamte Problem verwenden würde?
Ich habe nämlich ein Multi-7-Segment-Modul gekauft und es gab eine "offizielle Bibliothek" dafür vom Hersteller. Ich habe eine andere Bibliothek für das gleiche Modul erstellt. Was jetzt? Sollte sich meine Bibliothek im Central Repository als "die einzige Bibliothek für diese HW" befinden oder sollte sich dort die "offizielle Bibliothek des Herstellers" befinden? Beachten Sie, dass wenn es beide gäbe, dies Ihren angeforderten "einen und nur einen" Bibliothekspunkt beschädigen würde. Wenn Sie dem Hersteller eine nicht erlauben, dann würde "die einzige" viele Funktionen vermissen, wie integrierter Puffer für Zahlen, einfache Objektschnittstelle, einfaches Beispiel, wie man sie verwendet, und es würde eine harte Abhängigkeit von einem bestimmten Timer und generischen geben Nicht-Objekt, nur funktionale API, bei der der Benutzer Ganzzahlen in einzelne Ziffern aufteilen muss - klingt nicht allzu gut. Wenn Sie meine Bibliothek nicht zulassen, hat der Benutzer die oben genannten Informationen, aber seine Anzeige wird nur 10x pro Sekunde aktualisiert, wobei blinkt und überall Geister anderer Ziffern zurückbleiben, während der Prozessor voll ausgenutzt wird und die Dokumentation hauptsächlich auf Chinesisch erfolgt. Und der Benutzer würde die Aktualisierungsrate 100x pro Sekunde verpassen, wenn fast kein Prozessor verwendet wird, schöne saubere Ziffern UND Zeichen (möglicherweise auch benutzerdefiniert). - Auch nicht gut.
Im gegenwärtigen Zustand des Chaos können Benutzer (vielleicht Sie oder jemand anderes) die Bibliothek verwenden, die besser zu seinen Anforderungen passt (sei es Einfachheit und native Ganzzahlunterstützung, oder sei es saubere, schnelle Aktualisierung und geringe CPU-Auslastung) oder beides miteinander kombinieren. Platz drei mit schneller Aktualisierung UND einfacher Ganzzahlmanipulation UND benutzerdefiniertem Zeichensatz, mit netter Objekt-API und umfangreicher Dokumentation. Es braucht nur eine Person mit etwas Zeit und Engagement, die es Anfängern und einigen Englischkenntnissen und Grundkenntnissen von Objekten und dem Packen von "offiziellen Arduino-Bibliotheken" erleichtert, damit die IDE sie leicht importieren kann. (Und eine solche Person sollte es tun und es zum Arduino Library Packager beitragen).
Ich würde es nicht tun - für meine Anforderungen ist die funktionale API viel besser und einfacher zu verwenden, weniger Bytes aus dem Speicher und weniger CPU-Zyklen zu nehmen und ich habe keinen Drang, die Bibliothek auf eine Weise zu verbessern, die ich nicht verwenden würde. Außerdem verwende ich keine Arduino IDE, sondern ein einfaches Makefile zum Erstellen und Hochladen der Programme, sodass ich problemlos einen guten Texteditor (in meinem Fall vim) verwenden kann und nicht mit der IDE-Notepad-Parodie kämpfen muss.
Unter der Durchsetzung Ihres Modells durch die Big Central Authority würde es mir nichts ausmachen, Arduino zu verwenden, und Sie werden, wenn überhaupt, an der chinesischen Version festhalten (da dies aufgrund mangelnder guter englischer Dokumentation und des richtigen Paketformats nicht möglich wäre). .
quelle
http://downloads.arduino.cc/libraries/library_index.json enthält eine Liste aller im Arduino Library Manager verfügbaren Bibliotheken.
Ich habe diese Datei verwendet, um https://github.com/scls19fr/arduino_libraries_search zu erstellen Es ist ein Python Pandas-Skript, um nach Arduino-Bibliotheken zu suchen, die einigen Schlüsselwörtern entsprechen, und um sie in eine Excel-Datei auszugeben
Sie können Arduino-Bibliotheken auch finden mit:
quelle