Kannst auch einen Cross-Compiler auf dem PC bauen, die Libraries
einsammeln etc. Aber es wird einfacher sein, einen echten RasPi zu
nehmen um RasPi Programme zu bauen.
Der RasPi ist von der Programmierung her im Grunde ein ganz gewöhnlicher
Linux-PC. Wer die Kommandozeile nicht mag: Bildschirm/Tastatur/Maus kann
lokal angeschlossen werden, oder der PC übernimmt das per X-Server
(Linux oder Windows+Cygwin)
es wird ja kein Paspi Programm. Es wird ein Programm für einen Tiny84.
Funkthermometer ( DS18xx und RFM12) und einen Funkempfänger mit Tiny84.
Ich habe WinAVR mit den 3 Libs gefüttert und versucht zu kompilieren.
Das kompilieren mit WinAVR scheitert z.B. hieran:
// Need an instance of the Radio Module
RFM12B radio;
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
Das Projekt ist von hier:
https://raspberry.tips/hausautomatisierung/raspberry-pi-funksensoren-und-empfaenger-selber-bauen-teil-1-projekt-info/
Ach so, du willst dieses für einen RasPi vorgesehene Projekt ohne den
RasPi verwenden.
> Das kompilieren mit WinAVR scheitert z.B. hieran:
Da fehlt offenbar Quellcode, oder er ist nicht ins Projekt einbezogen.
wie ich das sehe wird der Raspi nur als IDE und Programmer verwendet.
Das muss doch auch ohne gehen..... hoffe ich.
Nur deswegen eine Raspi zu besorgen.....
Ohne die IDE musst du all den Code / Module, die wie dokumentiert per
wget und git clone beschafft wurden, von Hand managen :-)
Und wenn man da all das Zeug liest, dass per wget und git clone und per
"Sketch" laden beschafft werden muss, dann wird einem ganz schummrig.
Als erstes kannst du dich also schlau machen, wie man Ardiuno-Zeugs ohne
die IDE compiliert bekommt... Dafür ist ein Ardiuno-affines Forum wohl
besser als Hilfe geeignet als hier...
Johann L. schrieb:> Ohne die IDE musst du all den Code / Module, die wie dokumentiert per> wget und git clone beschafft wurden, von Hand managen :-)
sowas in der Art vermute ich.
Nur arbeite ich an einem Windows PC und meist mit einem Macro Assembler.
Da benutze ich keine Libs.
SORRY !!!
Ich habe hier Atmel Studio 6 installiert.
Die Libs ( Jeelib-master, Arduino-Temperatur, RFM12B-master und OneWire)
in das Projekt eingebunden und will es kompilieren.
Dann hagelt es Fehlermeldungen ohne Ende.
Screenshot anbei
Stephan H. schrieb:> und will es kompilieren.> Dann hagelt es Fehlermeldungen ohne Ende.
Einfach von oben nach unten abarbeiten.
Zum Beispiel im Bild sieht man daß entweder die OneWire.h nicht
existiert oder daß das Verzeichnis in dem sie sich befindet nicht in
die include-Pfade aufgenommen wurde.
--> obigen Mangel beheben
--> weiter zur nächsten Fehlermeldung
--> wiederholen bis fertig.
die Pfade stimmen. Das Problem ist ein anderes.
in z.B. der FRM12 Lib werden andere Libs aufgerufen.
Screenshot.
Woher kommen die denn ? Wo finde ich die ?
Wer denkt sich so einen kranken SCH*** aus ???
Include im Include im Include.....
Stephan H. schrieb:> die Pfade stimmen. Das Problem ist ein anderes.
Nein. "No such file or directory" ist eindeutig.
Übrigens: Eine *.h-Datei ist keine Library. Nenn' sowas nicht "lib".
gut dann andres gefragt ....
was muss ich tun um das hin zu bekommen.
Wie ist die Endung einer Lib ? Die CPP Dateien hatte ich auch schon
drin.
der Pfad stimmt !
Entschuldigung, C ist nicht meine Sprache.
ANL, ORL, XRL, RRA, etc. verstehe ich.
Für wiederkehrende Routinen nutze ich Makros keine Libs.
Aber er will ja *.h einbinden. Ähnlich meiner Makros.
Die *.h enthalten aber offensichtlich andere *.h die er nicht findet.
Vermute ich.
Im Screenshot kann man ja den Pfad sehen. Die *.h ist auch da.
Nur steht da drin wieder include *.h.....nur woher ?
Stephan H. schrieb:> was muss ich tun um das hin zu bekommen.
Klick Dich durch die Projekteinstellungen, irgendwo da muss es da eine
Abteilung für die Include-Pfade geben. Dort ist irgendwo eine Liste von
Suchpfaden zu pflegen unter denen der Compiler nach Headerdateien (*.h)
suchen wird sobald er auf ein #include trifft. Jeder Ordner in dem sich
solche *.h Dateien befinden muss zu dieser Liste hinzugefügt werden.
In der Konsolenausgabe (das was beim Build in schneller Folge
durchscrollt) wirst Du dann sehen wie dem Compiler beim Aufruf all diese
Pfade mittels je einer -I pfad/zum/ordner/ Option mitgeteilt werden. Nur
dadurch kann der Compiler wissen wo er überall suchen muss wenn er auf
ein #include <irgendwas.h> trifft und nun verzweifelt nach der Datei
"irgendwas.h" suchen muss.
Stephan H. schrieb:> Wer denkt sich so einen kranken SCH*** aus ???> Include im Include im Include....
Nun, das war schon immer so, auch in anderen Sprachen ist es durchaus
üblich dass Software in handliche Module aufgeteilt wird und jedes Modul
auf bereits vorhandenen Funktionen in anderen Modulen aufbaut und diese
anderen wiederum ebenfalls auf bereits vorhandenem in wieder anderen
Modulen, und so weiter, und so fort.
Das nennt man Modularität und Wiederverwendbarkeit. Gäbe es das nicht
müsste man es schleunigst erfinden, denn es spart massiv Arbeit.
Nur mit Include-Pfaden wird es nicht getan sein; die Arduino-IDE setzt
wohl auch Defines wie ARDUINO, und außerdem bringt Ardiuno selbst auch
noch Header mit :-)
Warum tust du dir das mit Atmel-Studio an, anstatt für ein
Ardiuno-Projekt Arduino herzunehmen?
Johann L. schrieb:> Warum tust du dir das mit Atmel-Studio an, anstatt für ein> Ardiuno-Projekt Arduino herzunehmen?
Das würde mich auch interessieren. Er hat jetzt doch bestimmt schon viel
mehr Zeit damit verschwendet, als es gekostet hätte, die Arduino-IDE zu
installieren und es damit zu übersetzen.
Stephan H. schrieb:> Wie ist die Endung einer Lib ?
Je nach Compiler *.a oder *.lib.
Du hast aber gar keine Libraries.
Und Dein Problem ist (unter anderem), daß Du zwar die rfm12b.h in Dein
Projekt reingefrickelt hat (unter Libraries), aber da gehört es nicht
hin.
Die Fehlermeldung, daß die Datei nicht gefunden werden kann, entsteht
beim Übersetzen einer *.c oder *.cpp-Datei (kann man auf Deinem
Screenshot nicht erkennen). Dort wird die Datei via #include
eingebunden, und aus Sichtweise der *.c- oder *.cpp-Datei kann die
RFB12B.h nicht gefunden werden, weil sie /irgendwo anders im
Dateisystem/ ist, aber nicht dort, wo die *.c oder *.cpp-Datei ist, und
die #include-Anweisung auch keinen passenden relativen Pfad enthält.
Damit das aufgeht, musst Du in Deinen Projekteinstellungen den
Speicherort, an dem die Datei RFM12B.h liegt, in den sogenannten
"include-Pfad" aufnehmen. INCLUDE, nicht Library!
Nimm Dir mal einen Zettel und einen Stift, und male Dir die
Verzeichnisstruktur auf Deinem PC auf - wo liegen Deine
*.c/*.cpp-Dateien, wo liegen die *.h-Dateien, die Du verwenden willst
und wo liegen die dazugehörigen *.c/*.cpp-Dateien, die in Deiner
Projektverwaltung bislang gar nicht auftauchen.
Bei Deinem Problem hilft es auch nicht, die Headerdateien (*.h) zur
Projektverwaltung hinzuzufügen, den Compiler interessiert das nicht.
Man sollte das zwar trotzdem machen (mit allen nicht vom Compiler selbst
zur Verfügung gestellten Dateien), damit man in der Projektverwaltung
die Abhängigkeiten sehen kann (nach dem Motto "mein Projekt benutzt
blafusel.h") und damit, falls man an diesen Dateien Änderungen
durchführt, die Projektverwaltung beim Compilieren dafür sorgt, daß alle
*.c/*.cpp-Dateien, die zum Projekt gehören und die Headerdatei
einbinden, neu übersetzt werden.
Aber --wie schon gesagt-- Dein Problem ist ein anderes. Der Compiler
weiß nicht, wo er nach der Datei zu suchen hat. Er such nur im
sogenannten "include-Pfad" oder im aktuellen Verzeichnis, d.h. dort,
wo die jeweilige *.c/*.cpp-Datei liegt, die gerade übersetzt wird.
Hallo,
die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.
Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.
Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von
Jeelinks), dann compilieren und flashen...
Gruß aus Berlin
Michael
Michael U. schrieb:> Hallo,>> die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.> Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.> Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von> Jeelinks), dann compilieren und flashen...>> Gruß aus Berlin> Michael
na das klingt doch vielversprechend. Das teste ich Heute Abend sofort
aus.
Dieser Zusammenhang fehlte mir. Ich dachte das INO Zeugs gehört alles
zum Raspi.
Allen anderen auch Danke