Moin und nette den grüsse aus Ostfriesland. Mein Sohn und ich haben Arduino für uns entdeckt und würden das gerne zusammen mit 3D Druck nutzen. Leider sind wir im bereich Aduino noch ziemliche Anfänger.
Wir würden gerne einen Servermotor so Ansteuern , das er immer auf Personen die sich im Raum befinden zeigt.
Ich möchte damit für Hallowen einen Kopf ansteuen. Leider ist das leichter gesagt wie getan da wir noch am Anfang stehen. Denke "von der Stange" wird es da wohl nichts geben.
Da stellt sich die Frage, welcher Sensor Personen erkennen kann. Bildverarbeitung und Gesichtserkennung ist zu aufwändig für einen Arduino. Habt Ihr schon eine Idee?
Menschen geben Wärme in Form von Infrarotstrahlung ab, Kerzen aber auch.
Und ihr braucht noch einen geeigneten Sensor, der diese Person "erkennen" kann.
Das kann ein Ultraschall-Sensor Beispiel oder ein PIR-Sensor (Bewegungsmelder) Beispiel sein.
Dazu gibt es für den Arduino eine große Auswahl.
Dann brauchst Du m. E. einen Motor für den Kopf und einen zweiten Motor für den Sensor, der sich wie eine Radarantenne dreht.
Beispielsweise läßt Du den Ultraschallsensor 360° drehen und merkst Dir die Gradzahl, wo der Abstand am kürzesten ist. Das ist dann die Sollposition für den Kopf.
Möglicherweise schaut der Kopf dann immer ein Regal an, aber das gehört dann zum Entwicklungsteil Erfahrungen sammeln und Feintuning durch Entfernungsdifferenzen.
Ich tendiere - für den Anfang - dazu den PIR zu nehmen. Davon evtl. mehrere.
Der Grund ist einfach, das Du diese durchgängig abfragen kannst und wirkliche Bewegungen erkennst.
Bei der Arbeit mit US-Sensoren arbeitest Du mit einem ausgesendeten hochfrequentem Signal und wartest auf das erste Echo zur Bestimmung der Entfernung.
Du kannst nicht sofort eine Folgemessung durchführen, sondern musst auf das Abklingen des vorhergehenen Signals warten.
Dazu kommt, das Du ebenso Reflexionen ausblenden musst.
Wenn Du mehrere PIR anordnest und den Öffnungswinkel einschränkst, kannst Du ohne Rotation des Sensors die absolute Position ermitteln.
Für den Kopf musst Du dann drauf achten, das nicht alle Servos unbeschränkt Bewegungsfähig sind. Ein großer Teil kann nur max 90° drehen. Darüber hinaus sind noch 180° typisch; Danach wird schon aufwendiger und vermutlich auch nicht proportional teurer.
Ich hatte mir die Tutorials angeguckt und alles nachgebaut. Nusste aber schon ziemlich früh merken das ich mit meinem Lateien am Ende bin. Ich Witzige ist das ich auf Arbeit Roboter Repariere und Instand setze. Ich Denke ich muss einfach mehr Lesen und noch viel mehr Erfahrung bekommen bevor ich mich an sowas setzte. Ich wüste nicht mal Ansatzweise wie ich Anfangen sollte.
Ok. Du sagtest, das Du schon einiges hast. Dann wäre jetzt die Frage, ob Du ein Einstiegskit besitzt und wenn ja welches.
Dann kann man Dir anhand von Beispielen passend zur Hardware etwas erklären, was dann auch zu Deinem Vorhaben passt.
Hier sind schon ganz andere Dinge entstanden und das bei Leuten, die komplett bei 0 angefangen haben.
Dann fange mal hier mit lesen an.
Die C++Doku ersetzt zwar kein C++-Buch, ist aber zum Nachschlagen ganz gut gut geeignet.
Auch die Beispiele von Funduino sind größtenteils brauchbar.
Fange klein an, nutze auch die Beispiele, die mit den Libs geliefert werden. Experimentiere damit und versuche nicht auf Krampf Dein jetziges Vorhaben zu realisieren. Halloween ist nächstes Jahr wieder.
Na dann. Herzlich willkommen.
Wenn ich mich nicht ganz vertue, ist das KIT hier beschrieben.
Dem fehlt noch der PIR.
Es gibt ein paar Dinge aus dem Tutorial, die ich nicht mehr so machen würde da (nicht nur) ich in Teilen die Vorzüge der Sprache C++ die Arduino verwendet nutze, aber um zumindest ein wenig Grundlagen zum Umgang mit der IDE zu sammeln, reicht es allemal.
Und dann sprich einfach, wo der Schuh drückt.
Komm mit einem Stück code, bei dem Du nicht weiterkommst und stell Fragen.
Hinweis für den Code: Schreib Kommentare, was Du da erwartest.
Vermeide sowas wie:
const byte pin = 13; // Der pin hat die Nummer 13
Und gib Variablen Namen.
pin ist kein Name.
Besser ist:
const byte servoPinKopf = 4;
Und schon spart es Kommentare und im Code ist ganz klar, was da passieren soll