Warum funktioniert der Arduino Code nicht?
Hallo nocheinmal,
hier habe ich schon meine nächste frage zu Arduino:
Ich habe folgenden Code verwendet um einen motor anzuschließen, dieser funktioniert jedoch nicht, ich weis nicht warum bzw. was ich ändern muss, da ich so gut wie keine Erfahrung mit Arduino habe. Also, was muss ich ändern?
Vielen dank im voraus
hier ist der Code:
int motor_A-5;
int motor_B-6;
int motor_Speed-3;
void setup(){
pinMode(motor_A, OUTPUT);
pinMode(motor_B, OUTPUT);
}
void loop{
digitalWrite(motor_A, HIGH);
digitalWrite(motor_B,LOW);
analogWrite(motor_Speed, 100);
delay(2000);
analogWrite(motor_Speed,200);
delay(2000);
digitalWrite(motor_A, LOW);
digitalWrite(motor_B,HIGH);
analogWrite(motor_Speed, 100);
delay(2000);
analogWrite(motor_Speed,200);
delay(2000);
analogWrite(motor_Speed,0);
delay(2000);
}
fotos vom Aufbau:
neues ergänztes Foto
1 Antwort
Da sind ein par Syntax Fehler:
- Variablen werden mit Typ name = wert; zugewiesen also z.b. int motor_A = -5;
- Bei der Deklarierung der loop-Funktion fehlen die Klammern also müsste es so aussehen:
void loop() {
}
Allerdings müssten dir all diese Fehler mit Beschreibung was falsch ist in der Arduino IDE angezeigt werden.
Hast du bei den Definitionen der Pins von IC (meine die "H-Brücke") noch eine negative Zahl stehen?
ich habe es noch so da stehen:
int motor_A = -5;
int motor_B = -6;
int motor_Speed = -3;
void setup(){
pinMode(motor_A, OUTPUT);
pinMode(motor_B, OUTPUT);
}
void loop(){
digitalWrite(motor_A, HIGH);
digitalWrite(motor_B,LOW);
analogWrite(motor_Speed, 100);
delay(2000);
analogWrite(motor_Speed,200);
delay(2000);
digitalWrite(motor_A, LOW);
digitalWrite(motor_B,HIGH);
analogWrite(motor_Speed, 100);
delay(2000);
analogWrite(motor_Speed,200);
delay(2000);
analogWrite(motor_Speed,0);
delay(2000);
}
Gut, das geht so nicht. Erklärung:
Wenn du schreibst
int motor_A = -5;
dann deklarierst du eine Variable namens motor_A die einen integer (ganzzahligen Wert) kurz int enthält. Dieser Wert wird nun innerhalb des Codes genutzt um auszuwählen welcher Pin am Arduino genutzt werden soll und da es keinen Pin mit einer Bezeichnung wie -5 oder -6 gibt weiß das Arduino nicht welchen Pin es nutzen soll. Also müssen die Werte von motor_A und motor_B in dem Fall Positiv sein.
Ergänzung: Für motor_Speed gilt das auch aber das hat andere Gründe.
Ergänze mal ein Bild von deinem Aktuellen Aufbau zur Frage, dann kann ich mir das mal anschauen.
Zu meinem vorherigen Kommentar hatte ich noch etwas ergänzt ganz kurz vor deinem:
Ergänzung: Für motor_Speed gilt das auch aber das hat andere Gründe.
Vielleicht liegt es daran.
Kennst du sonst vielleicht einen anderen Aufbau evtl. auch mit anderem Code der funktioniert?
Du hast ein ULN2003A IC verbaut und im Video wurde ein L293D IC genutzt. Der ULN2003A kann nicht wie der L293D genutzt werden.
Also am Code liegt es nicht und vom Anschließen her könnte es auch sein das du dir vielleicht den ULN20003A durchgebrannt hast, aber das ist nur möglich.
unter dem namen find ich kein IC ist aber auch egal denn man sollte immer auf darauf achten das man den richtigen IC verwendet und wenn man ein anderen nutzt in dessen Datenblättern schaut inwiefern sich diese unterscheiden. IC sehen zwar oft gleich aus haben aber viele verschiedene Funktionen.
Als Anfänger wäre es wohl das beste sich so ein Starter-Kit zu holen da dort alle möglichen 'standard' ICs dabei sind (unteranderem auch der L293D) und vieles weitere.
Geht theoretisch auch, allerdings macht man das nicht, da der Motor relativ viel Strom benötigt und möglicherweise das Arduino mit seinem Stromverbrauch beeinflusst.
noch zusätzlich mit einer externen Batterie?
Ich weißt nicht wie du das meinst, aber üblicherweise macht man das mit einem IC wie dem L293D. Was mich aber wundert ist das wenn das ein Arduino Starter-Kit ist das du hast kein L293D dabei ist da dieser so ziemlich der Standard IC dafür ist. Welches Kit hast du denn?
RFID sind diese Schlüsselkarten. Ganz schön gewagt als Anfänger xD.
Hab jetzt das teil von einem Freund, der Motor brummt, dreht sich aber nicht
Wenn der Motor brummt dann macht er was. Hast du dich vergewissert das alles wieder richtig angeschlossen ist und der IC richtig ausgerichtet ist?
Du könntest nochmal ein Bild ergänzen wie der IC jetzt angeschlossen ist, allerdings wenn man dort nichts findet wird es schwierig den Fehler zu finden.
Ich hab das mal verglichen und soweit ist der IC richtig angeschlossen.
Mach mal eins der Motor Kabel ab und führ das Programm aus. Führ es dann erneut aus wieder mit angeschlossenem Motor. Beobachte mal dabei die LEDs am Arduino ob diese wenn der Motor angeschlossen ist Dunkler leuchten (oder gar aus sind) als wenn der Motor ab ist.
Wenn ich nochmal drüber noch denke erscheint mir der Kommentar mit den LEDs am Arduino etwas quatschig da der L293D ja dafür da ist das zu verhindern.
Mal ein anderer Ansatz: Bist du dir sicher das deine Konstruktion mit dem 9V-Block auch funktioniert? Von der Polung kann ich nur raten ob diese richtig ist und selbst wenn ist die Frage wie gut die Kabel mit dem Klebeband dort festhalten. Und da kann ich aus eigener Erfahrung sagen das es nie gut geht wenn man in der Elektronik was mit Klebeband machen will.
Dann bin ich einwenig ratlos. Du könntest noch probieren während das Programm läuft mit dem messgerät die verschiedenen Teile durchzumesssen. Also die Pins am Motor (dort wo die Kabel zum Motor übergehen). Du kannst auch die verschiedenen Pins am IC durchmessen ob dort vllt. was nicht ankommt.
Vielen dank, der Code weist jetzt keine Fehler mehr auf, jedoch dreht sich der Motor nicht.
Ich habe diesen Aufbau verwendet
https://www.youtube.com/watch?v=B0YmHIJInto
hast du vielleicht eine idee was ich falsch gemacht haben könnte oder wie ich das ohne diese h-brücke machen kann, da ich mir da nicht sicher bin ob ich das richtige bauteil habe?