Heute habe ich versucht, meinen UNO mit Hilfe von Linux zu programmieren. Leider habe ich an meinem kleinen Linux-Server keinen Monitor, somit auch keine grafische Oberfläche. Es muss also alles mit Befehlszeilen ablaufen.
Dafür habe ich hier auch eine Anleitung gefunden: http://mjo.tc/atelier/2009/02/arduino-cli.html
Es gibt zwei Probleme:
Die Lib's werden nicht richtig eingebunden.
Die Meldung sieht dann so aus:
...
/home/guido/arduino/arduino-mk-0.8/ser_1Wire_002/build-cli/ser_1Wire_002.cpp:22: undefined reference to OneWire::OneWire(unsigned char)' /home/guido/arduino/arduino-mk-0.8/ser_1Wire_002/build-cli/ser_1Wire_002.cpp:25: undefined reference to OneWire::search(unsigned char*)'
...
(So geht es dann weiter)
Das konnte ich umgehen, indem ich die Lib's in den gleichen Ordner wie die Quelle gelegt habe.
Das grössere Problem ist, dass der UNO sich nicht programmiren lässt:
Folgende Meldungen sind zu sehen:
Was kann ich machen, um einen Sketch in den UNO zu bekommen?
Wie übertrage ich die Sketche's ohne eine Benutzeroberfläche, also per Befehlszeile, in den UNO?
ok, ob das jetzt ttyACM0 oder ACM1 heisst, hängt von der Anzahl der angeschlossenen UNO's ab. Manchmal kommt Linux auch durcheinander, wenn die Arduino IDE noch aktiv ist.
Was mir aber noch aufgefallen ist: Du verwendest das conf file unter /etc. Ich hab mir angewöhnt das conf file aus der Arduini IDE zu benutzen. Auf jedenfall falsch ist das baud-raten Kommando (-b). Der Uno erwartet die Daten wesentlich schneller. Grundsätzlich sollte das Makefile das boards.txt auslesen.
Edit: Wollte noch anmerken, dass es bei dem eingangs genannten Fehler zuweilen notwendig ist, den Uno zu reseten und unmittelbar danach den Upload zu starten. Das hilft oft.
Ich habe einmal das Beispiel von olikraus mit meinen Pfaden laufen lassen. Es hat funktioniert.
avrdude: 4328 bytes of flash written
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Mir ist aufgefallen, dass unterschiedliche Geschwindigkeiten eingestellt sind. Ich werde jetzt versuchen, die 115200 Baud in meinem makefile einzustellen.