Hallo Leute, ich baue seit einiger Zeit viele Sachen. Zur Zeit Droiden, da ich ein Fan von Star Wars bin und auch cosplaye, hab ich nun auch schon einiges gebaut. Darunter einen B1 Kampfdroiden, einen R2D2 und nun baue ich einen M-O.
Bisher hab ich im Bereich Elektronik viel kaufen können oder machen lassen können. Aber, ich würde ja gerne selber vieles machen. Also hab ich begonnen mit ChatGPT zu lernen. Aber, diese KI ist immer noch nicht das gelbe vom Ei.
Ich habe einfache Sachen hinbekommen. Ein LED-Band, welches als Laufband programmiert ist in der Farbe Rot. Gesteuert von einem Arduino Nano. Jetzt soll es ja weiter gehen und nun stoße ich an Probleme, die ich nicht verstehe und ChatGPT nicht lösen kann anscheinend.
Daher meine erste Frage: gibt es sowas wie (gerne kostenlose) Seiten, wo man Sketche erstellen kann, sie testen oder sonst erstellen, mit Hilfe?
Ich habe z.b. hier einen Sketch, mit dem ich theoretisch die Möglichkeit haben soll einen Servo zu begrenzen. Also, dass er nur bis zu einer bestimmten Stelle max fährt. Mein Ziel ist am Ende, dass der Arduino dieses Lauflicht steuert und 1 Servo. Licht an wenn der Servo nach rechts fährt, Licht aus wenn der Servo nach links fährt.
In file included from C:\Users\Dejan\Documents\Arduino\libraries\Servo\src/Servo.h:63:0,
from N:\Bilder + Musik\Grafiken\Projekt\Figur\Arduino Codes\M-O\ich\Warnlicht ser-\ser_einstellen-1\ser_einstellen-1.ino:11:
C:\Users\Dejan\Documents\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:1: error: expected unqualified-id before 'typedef'
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
^~~~~~~
C:\Users\Dejan\Documents\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:1: error: expected constructor, destructor, or type conversion before 'typedef'
C:\Users\Dejan\Documents\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:41: error: 'timer16_Sequence_t' does not name a type
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
^~~~~~~~~~~~~~~~~~
Mehrere Bibliotheken wurden für "Servo.h" gefunden
Benutzt: C:\Users\Dejan\Documents\Arduino\libraries\Servo
Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\Servo
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Da bist Du hier schon richtig, wir helfen gern, wenn Du konkrete Probleme hast und benennst:
Was sollte es tun?
Was tut es tatsächlich?
Was habe ich alles schon ausprobiert?
Häufig - bei Verdacht auf Hardwareprobleme - ist es hilfreich, Schaltplan (Handskizze reicht) und Foto des Aufbaus zu sehen.
In diesem Fall müsstest Du erstmal die Reihe Sternchen in Zeile 9 entweder entfernen oder ebenfalls auskommentieren //****.
Den Hinweis am Ende der Ausgabe solltest Du beherzigen.
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Wie Du selbst festgestellt hast, bringt die Verwendung von ChatGPT (z.Zt. noch) mehr Probleme als Lösungen. Das zu reparieren sehen wir hier eher nicht als Aufgabe.
Die Verwendung der Klasse String ist auf den kleinen Arduinos (Uno R3, Nano) kritisch wegen der Speicherprobleme, die sie verursachen kann. Beschäftige Dich mit C-Strings (Arrays aus char), das ist resourcenschonender.
Du hast es geschafft, mich wirklich zum staunen zu bringen!
Die Fehlermeldung komplett:
In file included from /home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo/src/Servo.h:63:0,
from /tmp/arduino_modified_sketch_613803/sketch_apr28c.ino:11:
/home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo/src/avr/ServoTimers.h:57:1: error: expected unqualified-id before 'typedef'
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
^~~~~~~
/home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo/src/avr/ServoTimers.h:57:1: error: expected constructor, destructor, or type conversion before 'typedef'
/home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo/src/avr/ServoTimers.h:57:41: error: 'timer16_Sequence_t' does not name a type
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
^~~~~~~~~~~~~~~~~~
Mehrere Bibliotheken wurden für "Servo.h" gefunden
Benutzt: /home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo
Nicht benutzt: /home/user1/arduino-1.8.19/libraries/Servo
Bibliothek Servo in Version 1.2.2 im Ordner: /home/user1/arduino-1.8.19/portable/sketchbook/libraries/Servo wird verwendet
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.
Das Problem ist aber nicht die Lib.
Auch nicht der Code, der die Lib benutzt.
Eigentlich nicht mal der Code.
Du hast Dir selbst ein Ei gelegt
Ich sage immer wieder: Schön machen kannst Du, wenn Du die Funkion getestet hast...
Das passiert so häufig...
Hey, die Seite kenn ich. Da hab ich so einige Schaltungen zusammengestellt. Aber, da ich da nicht bezahle, klappt das mit dem Ausführen nur selten. Und ich kann zwar was zusammenstellen, aber so hab ich immer noch keinen Sketch
Jaa, die Sterne sind natürlich nicht im Sketch beim Arduino mit drin. Hatte ich aus versehen auch nur hier mit drin. Im Sketch ist natürlich nur das drin, was der nutzen kann. Das oben ist für mich, damit ich weiß, was ich da gemacht habe.
Hatte ich auch schon überlegt, aber ich wollte jetzt kein weiteres Studium anfangen. Ich bastle sehr gerne und bin auch bereit mich zu opfern, aber ich werde auf keinen Fall mehr ein Profi. Daher bin ich mehr auf Kyber und Maestro eingestellt, die einfacher sind. Arduino will doch eine Menge Codes, die ich einfach nicht begreife
Nun, zumindest konnte ich etwas lernen durch ChatGPT. So hab ich zumindest es geschafft einen Sketch zu erstellen, der ein Laufband erzeugt mit 19 LEDs. Für mich ein Erfolg. Irgendwo muss ich ja anfangen. Daher such ich auch schon veröffentlichte Porjekte. Die kann ich dann mir ansehen und daraus lernen.
Ich omme noch nicht ganz klar mit dem Forum hier, daher erstmal sorry. Das ist mein fertiges und funktionierendes Lauflicht. Das Licht läuft also immer im Kreis. Soweit, so gut.
So sieht die Vorrichtung komlett aus (Ohne die rote Kappe). Die Lampe fährt wie in kleiner Fahrstuhl nach oben und runter. Mein Ziel ist, dass das Licht nur geht, wenn der Fahrstuhl oben ist. Das ist also eines meiner Ziele. Das Zweite ist, der Servo der die Lampe hoch fährt.
Ich finde irgendwie keine gute, und für mich verständliche Erklärung, wie ich den Servo erstmal auf die richtige Startposition bringe. Ich habe erstmal jetzt mit einem Tester den Servo ganz nach links gefahren und so den Arm eingesetzt. Das wäre der Ort, wo der Fahrstuhl unten ist und bleiben soll. Jetzt soll der Servo den Fahrstuhl hoch fahren. Aber, wie sag ich ihm, dass er nur bis zu einer bestimmten Stelle fahren darf? Ich möchte ja auch nicht, dass der Servo blockiert wird. Dann würde er ja unter dauerlast stehen, da er versucht weiter zu drehen, was nicht geht. Das ist mit Sicherheit nicht gut für ihn.
Als ich den R2 gebaut hatte, gab es in der zur Verfügung gestellten software die Möglichkeit die Punkte für OPEN und CLOSE zu speichern.
Z.B. der Befehl #SC011050 (#SC=Servo close , 01=Servo Nr.1, 1150=Position), Mit #SO012600 war es eben Servo OPEN. Mit dem Befehl ;MV (für move) konnte ich dann z.B. ;MV010500 den Servo 01 zu der Position 1500 fahren lassen, mit #SC speichern und gut. Aber, das System ist so ein Marcduino (was wohl wieder was anderes ist). Außer dem ist das natürlich extrem. Ich will ja nur einen einzelnen Servo irgendwie kontrollieren. Daher suche ich nun nach einer eleganten Lösung. Und anschließend natürlich dann die Sketche für den Fahrstuhl und das LED-Band zu koppeln.
So, ich hoffe ich habe das alles richtig beschrieben.
Ah, ich habe mal das alles oben gelöscht und nun hat er es kompiliert, endlich. Nur diese beiden Striche vorne hat wohl nicht gereicht. Immerhin, wieder ein stück weiter. Wenn ich das richtig verstehe, hab ich nun einen Sketch für einen Servo der 2 Positionen für offen und geschlossen eingetragen hat. Und anscheinend ist der auslöser ein Taster. drücken servo fährt hoch, nochmal drücken Servo fährt runter, richtig? Um das zu testen muss ich demnach einen Taster noch an der Arduino Nano anbringen. und dann diesen sketch versuchen mit dem des Lauflichts zu verbinden. Und dann eben ohne Taster, sondern als Auslöser ein Befehl der Fernbedienung...mir raucht schon etwas die Birne.
Wenn der Servo fest verbau ist, hat er eine feste Position.
Du könntest jetzt das hier
// Edit: Eine Klammer geändert
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
bool dir = false;
bool oldDir = dir;
void setup()
{
Serial.begin(115200); // Darauf achten, dass hier das gleiche steht wie im seriellen Monitor!
Serial.println(F("Start ...")); // Das sollte dann zu sehen sein....
myservo.attach(9);
myservo.write(90);
}
void loop()
{
char c = Serial.read();
if (c == 'a') // gibst Du diesen char ein, wird die Richtung umgedreht!
{
dir = !dir; // Toggelt
if (dir != oldDir)
{
Serial.print("Richtungswechsel! bei Position: ");
Serial.println(pos);
oldDir = dir; // Merker setzen, damit die Ausgabe nur einmal ausgeführt wird
}
}
if ( c == '\n') // Löst mit einem Zeilenende aus! (ENTER)
{
if (dir) // Entweder
{
if (pos < 180) // Begrenzung nach oben
{ pos++; }
}
else // Oder
{
if (pos > 0) // Begrenzung nach unten
{ pos--; }
}
Serial.print(F("neue Position: "));
Serial.println(pos);
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
aufspielen und mit ENTER im seriellen Monitor den Stepper immer einen Schritt bewegen.
Gibst Du ein kleines a ein, dreht die stepperrichtung um.
Das kannst Du sooft wiederholen wie Du willst und bekommst damit die Start- und Endposition für Deinen Code raus.
Hast Du die Positionen, meld Dich nochmal, dann bekommst von mir den Einstieg.
Und dann noch was zum lesen.
Da das .pdf downloaden und bis etwa zur Hälfte lesen, damit Du erstmal eine grundlegende Übersicht hast, was es so an Funktionen und grundlegendem in der Arduino und C++ Welt gibt.
Das mit dem Buch kommt dann auch....
Also der Sketch wird schon mal sauber von der IDE übernommen. Finde ich extrem erfrischend, wenn auch nicht überraschend. Was ich im Sketch nicht sehe, was nun angesprochen wird. Also, woran soll ich den Servo denn anschließen? An den Arduino? Dann muss ich ja + und - ist klar, und das Datenkabel an....? Ich sehe im Sketch nicht an welchen Pin der sein soll.