nur zur Klarstellung:
wie kann man laut recke und hbquax dieses tun?
Zitat von recke
Ich wüsste keinen Weg, das zu erreichen, und meine Vermutung ist: das ist hier von recke auch nie gemacht worden.Zitat von hbquax
nur zur Klarstellung:
wie kann man laut recke und hbquax dieses tun?
Zitat von recke
Ich wüsste keinen Weg, das zu erreichen, und meine Vermutung ist: das ist hier von recke auch nie gemacht worden.Zitat von hbquax
ok, nachdem da also kein Widerspuch kam und keine Lösung im Sinne von recke und hbquax in Sicht ist, können wir, glaube ich, festhalten:
Es ist nicht möglich, beim Arduino per Reset ein Programm aus dem Programmspeicher zu löschen.
Die einzige mir bekannte Möglichkeit, ein Programm im Flash des Arduinos zu beseitigen, ist, es durch ein neues hochgeladenes Programm zu überschreiben.
Selbst dann ist der Arduino aber nicht "unprogrammiert", sondern hat eben ein neues Programm, das im minimalen Fall ("Null-Sketch") startet, nichts sichtbares tut, und sich dann sogleich wieder beendet - oder aber in einer loop() Dauerschleife hängen bleibt.
Einverstanden?
Arduino IDE öffnen.
Datei - Neu wählen.
Hochladen.
Dann das Verhalten des Boards mit einem fabrikneuen vergleichen.
Der Speicher ist zwar nicht genullt (hysikalisch leer), aber das Verhalten an den Ausgängen ist das selbe.
das ist doch genau das, was ich auch sage (z.B. neuen "Null-Sketch" hochladen, und dadurch ein bestehendes Programm durch ein neues überschreiben).
Es ging aber um die Behauptung, man könne ein Programm per Reset aus dem Speicher löschen und so einen Arduino in einen unprogrammierten Zustand überführen, was jedoch falsch ist, oder?
Die Frage ist also, was recke gemacht hat, um seinen Arduino in einen "unprogrammierten Zustand" zu überführen -
hat er die Reset-Taste gedrückt oder hat er einen Null-Sketch hochgeladen?
Und weiterhin:
ob er vorher selber ein (welches?) Programm selber aktiv hochgeladen hat, bevor er dann versucht hat, es wieder zu löschen.
Mir war mein Abschied zu abrupt und unhöflich, deshalb schaue ich nochmal vorbei. Ihr habt mir viele Ratschläge gegeben und Dank ist angebracht. Es ging auch alles freundlich zu. Neben neuen Erkenntnissen habe ich meinen Schreibtisch aufgeräumt und einen kleinen "Meßplatz" eingerichtet. Da steht nun ein Voltcraft Netzteil, ein pico PC-Oszilloskop und ein G.T. Power Servotester. Ich habe vor dem Servo-Initialisieren wirklich nur einen Reset mit der roten Taste auf der Arduino-Platine gemacht (keinen "Null-Sketch" hochgeladen), denn vorher hatte ich ja schon einmal das Anwendungsprogramm geladen. Alles funktioniert gut, allerdings ist von dem vieradrigen Katzenkabel ein female Stecker defekt. Der fällt locker auf das Gegenstück. die vier Adern sind in einem Katzen-Anschußstecker vereint, da muß ich noch pfriemeln. Ansonsten ziehe ich meine Kopf aus der Schlinge, indem ich Dir, HaWe, zu 100 % recht gebe und mich außerstande sehe Deine tiefschürfenden Fragen zu beantworten.
Habt ein schönes Osterfest
recke
danke gleichfalls!
Dennoch wäre eine Beantwortung meiner Fragen schon wichtig zum Verständnis -
zum Einen für mich, denn bislang ist mir völlig unklar, wovon du exakt ausgegangen bist, was genau du vergeblich probiert hast und was wie dann wieder versucht hast zu korrigieren, bis es dann letztendlich doch funktioniert hat -
und zum Anderen für Dich, denn es macht dir ja keiner einen Vorwurf daraus, dass dein Arduino-Verständnis - NATÜRLICH - nicht perfekt bis in die hintersten Ecken der technischen Zusammenhänge reicht, aber andererseits wird es dir sicherlich helfen, von Mutmaßungen, die in die falsche Richtung und zu Missverständnissen führen, Abstand zu gewinnen und stattdessen auf einem bestimmten Level ein korrekteres Verständnis zu erlangen.
Nach dem Motto: Es ist ja nicht verboten, klüger zu werden.
Das mit dem "unprogrammierten Zustand" per Reset ist z.B. so ein Missverständnis: das funktioniert so nicht!
Auch dass deine Servoplatine in der Lage sein soll, Arduino-Pins von sich aus auszulesen, halte ich für so ein Missverständnis:
ich bin einigermaßen fest davon überzeugt, dass deine Servoplatine ÜBERHAUPT NICHTS selber auslesen kann - weder von einem programmierten noch von einem unprogrammierten Arduino.
Auch dass Servos wie deine in irgendeiner Weise per Software "initialisiert" oder "kalibriert" werden müssen (abgesehen von der mechanisch korrekten Montage), halte ich für ein Missverständnis - alles was für die Servoplatine und die Servos wichtig ist (genaue Frequenzen, channels, sog. duty-cycles etc) wird bereits im Hersteller-Code samt Lib fest voreingestellt sein.
Ein weiteres Missverständnis kann möglicherweise auch darin bestehen, dass entgegen deiner Vermutung Hersteller durchaus in einem Kit bereits die Komponenten vorher durch Grundprogramme vor-initialisieren.
daher meine Fragen:
1) hast du selber vor dem ersten Betrieb deiner Servo-Platine irgendein (welches?) Programm selber aktiv hochgeladen?
2) Oder bist du bis zum Aufstecken der Servoplatine immer vom unveränderten Auslieferungszustand deines Arduinos ausgegangen?
3) Hast du dann versucht, irgendein Arduino-Programm wieder zu löschen, um deine Servos in Grundstellung ausrichten zu können?
4) Wenn ja: wie hast du das versucht: per Reset-Taste oder Hochladen eines anderen Programms, ggf. von welchem?
5) Welches Programm hast du nach der Servo-Montage anschließend hochgeladen, damit deine Katze komplizierte Bewegungsmuster wie in dem Video durchführen konnte?
das würde z.B. bedeuten:Ich habe vor dem Servo-Initialisieren wirklich nur einen Reset mit der roten Taste auf der Arduino-Platine gemacht (keinen "Null-Sketch" hochgeladen), denn vorher hatte ich ja schon einmal das Anwendungsprogramm geladen.
durch Drücken der Reset-Taste hat sich nichts verändert, das "Anwendungsprogramm ", das du drauf gespielt hast, war danach immer noch drauf - es wurde nur erneut frisch gestartet.
Das zeigt, dass deine Servo-Platine nicht den Pin-Zustand eines "unprogrammierten" Arduinos ausliest und benötigt, um irgendwas zu tun.
Das lässt weiterhin sogar vermuten, dass es sogar notwendig ist, um die Ausrichtung in Grundposition zu steuern, und weiterhin, dass es deshalb auch schon vorher drauf gewesen sein könnte.
Du bist ja ein rechtes Fragezeichen, aber ich versuche mal. Hoffentlich klappt mein händisches Zitieren. Vorab es gibt für den Hexapod zwei Anwendungsprogramme, eins für die Fernbedienung und eins für den Roboter. Die Fernbedienung besitzt vier Tasten, die Routinen im Roboterprogramm aufrufen und zwei Joysticks für Vor/zurück/rechts/links sowie die Geschwindigkeiten. Ein Taster wählt die Routine Automatik, da kommt die Katze ins Spiel, sie schwenkt ihren Kopf und weicht bei Hindernissen zurück.
Es ist nur so, daß mit dem RESET an allen Ausgängen (zur logischen Steuerung) statisch das gleiche Signal anliegt und ein vorher in den Arduino geladenes Programm unwirksam wird. (bei mir heißt das "gelöscht").Das mit dem "unprogrammierten Zustand" per Reset ist z.B. so ein Missverständnis: das funktioniert so nicht!
Die Servoplatine ist aus meiner Sicht dazu da die nichtbelastbaren Arduino Ausgänge in für die Servos belastbare umzuwandeln. "Auslesen" würde ich das nicht nennen, habe ich hoffentlich oben auch nicht, man könnte es im weitesten Sinne Impedanzwandler nennen.Auch dass deine Servoplatine in der Lage sein soll, Arduino-Pins von sich aus auszulesen, halte ich für so ein Missverständnis:
ich bin einigermaßen fest davon überzeugt, dass deine Servoplatine ÜBERHAUPT NICHTS selber auslesen kann - weder von einem programmierten noch von einem unprogrammierten Arduino.
Das siehst Du falsch! Da bei diesem Modell überhaupt keine Software zur Initialisierung in den Arduino geladen wird, gibt er wie oben erwähnt, an allen Pins das gleiche Signal aus, D.h. Die Servos fahren alle in einen gleichen Anfangszustand. Die Geometrie der Beine bekomme ich dann über das winkelgetreue Aufsetzen der Servohörner hin. Ein Programm oder eine Bibliothek kommt dabei überhaupt nicht ins Spiel. Bei anderen Modellen erledigt man das mit einem speziellen Kalibrierungsprogramm und einer Papierschablone, auf der man die Füße ausrichtet. Das kann z.B. mit einem in PDE geschriebenen Programm erfolgen.Auch dass Servos wie deine in irgendeiner Weise per Software "initialisiert" oder "kalibriert" werden müssen (abgesehen von der mechanisch korrekten Montage), halte ich für ein Missverständnis - alles was für die Servoplatine und die Servos wichtig ist (genaue Frequenzen, channels, sog. duty-cycles etc) wird bereits im Hersteller-Code samt Lib fest voreingestellt sein.
Mir ist ein solcher Fall nicht bekannt, kann es nicht ausschließen, halte es aus zwei Gründen für unwahrscheinlich: Erstens ist es teurer, wenn bei solchem hart kalkuliertem Spielzeug vorher der Arduino noch "angefaßt" wird, zweitens erkenne ich gar Sinn ein Programm schon vorzuladen und die anderen als Sketche zu verabreichen. Man müßte es ja trotzdem noch zum Selbstladen mitgeben, weil die Gefahr des unbeabsichtigten Drückens der Reset-Taste das Programm ins Nirvana befördern würde.Ein weiteres Missverständnis kann möglicherweise auch darin bestehen, dass entgegen deiner Vermutung Hersteller durchaus in einem Kit bereits die Komponenten vorher durch Grundprogramme vor-initialisieren.
muß kurz unterbrechen und mache später weiter
Lesezeichen