Forum: Mikrocontroller und Digitale Elektronik Schrittmotor hin und her pendeln lassen


von AntonMC (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leser,
Ich habe ein kleines Problem undzwar habe ich einen Schrittmotor mit 
Treiber und einen Arduino Uno nun würde ich den Motor gerne hin und her 
pendeln lassen mit meinem Programm funktioniert das leider nur nicht 
richtig, hat da jmd. eine Lösung?

Der Code:
1
int zahl = 8;
2
int ins = 1;
3
4
void setup() {
5
  pinMode(8, OUTPUT);
6
  pinMode(9, OUTPUT);
7
  pinMode(10, OUTPUT);
8
  pinMode(11, OUTPUT);
9
Serial.begin(9600);
10
}
11
12
void loop() {
13
  if(zahl < 12 && zahl > 7 && ins < 300) {
14
    digitalWrite(zahl, HIGH);
15
    delay(5);
16
    digitalWrite(zahl, LOW);
17
    Serial.println(zahl);
18
    zahl ++;
19
    ins ++;
20
  } else if(zahl < 12 && zahl > 7 && ins > 299 && ins < 601 ) {
21
    digitalWrite(zahl, HIGH);
22
    delay(5);
23
    digitalWrite(zahl, LOW);
24
    Serial.println(zahl);
25
    zahl = zahl -1;
26
    ins ++;
27
  }
28
  
29
  if (ins > 600) {
30
    ins = 0;
31
  }
32
  
33
  if (zahl = 7){
34
    zahl = 11;
35
  }
36
  
37
  if(zahl = 12){
38
    zahl =8;
39
  }
40
Serial.println(ins);
41
}

von DHC (Gast)


Lesenswert?

Was genau funktioniert nicht?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

zahl wird am Ende jedes Schleifendurchlaufs auf acht gesetzt.

von AntonMC (Gast)


Lesenswert?

Ich schick ihnen mal die Ausgabe der seriellen Schnitstelle
1
8
2
2
3
8
4
3
5
8
6
4
7
8
8
5
9
8
10
6
11
8
12
7
13
8
14
8
15
8
16
9
17
8
18
10
19
8
20
11
21
8
22
12
23
8
24
13
25
8
26
14
27
8
28
15
29
8
30
und so weiter

von AntonMC (Gast)


Lesenswert?

aber eigentlich solte sie sich ja nur auf 8 stellen wenn zahl 12 ist
oder habe ich irgendeinen doofen Fehler gemacht?

von Wolfgang (Gast)


Lesenswert?

AntonMC schrieb:
> Ich habe ein kleines Problem undzwar habe ich einen Schrittmotor mit
> Treiber ...

Was ist das für ein Treiber, i.e. wie muss der angesteuert werden?

von Theor (Gast)


Lesenswert?

Ich halte es für sinnvoll, die Funktion eines Programmes genau zu 
beschreiben und, falls es nicht funktioniert, ebenso genau zu 
beschreiben, was real passiert und worin der Gegensatz zu dem gewollten 
Verhalten besteht.

Bei einem Vergleich des Programmes und der beiden Beschreibungen kommt 
man selbst oder ein Dritter, den man fragen will, viel leichter auf das 
Problem - oder darauf, dass es an der Hardware liegt.

Es handelt sich dabei nicht lediglich um eine formale Vorstellung a la 
"das macht man einfach so", sondern darum, dass eine bewusste Reflektion 
dieser drei Informationen notwendig ist, um Probleme zu finden.

Übrigens sind "aussagekräftige" Variablennamen auch hilfreich. Aus den 
Bezeichnungen "Zahl" und "ins" kann man nichts entnehmen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Das ist Deine Wunschvorstellung. Wenn Du möchtest, dass sich Dein 
Programm wunschgemäß verhält, solltest Du Dich zunächst mit den 
allereinfachsten Sprachkonstrukten von C/C++ ansatzweise vertraut 
machen.

von Theor (Gast)


Lesenswert?

AntonMC schrieb:
> aber eigentlich solte sie sich ja nur auf 8 stellen wenn zahl 12 ist
> oder habe ich irgendeinen doofen Fehler gemacht?

Der Vergleichsoperator ist in C das "==", nicht das "=".

von AntonMC (Gast)


Lesenswert?

was den Treiber betrifft der Treiber hat 4 Eingänge die an die digital 
Pins angeschlossen werden und dann musss mann nur Strom drauf geben wenn 
mann jetzt erst auf 8 dann 9 dann 10 dann 11 hat manim Motor eine 
Umdrehung wo bei sich im Motor noch ein ich glaube das heißt Gewinde 
befindet weshalb man das ganuze 510 oder so mal machen muss um am Ende 
eine volle Umdrehung zu habe

Mein Problem ist nun das er irgendwie bei der 8 stehen bleibt

Ps: ich bin Anfänger und noch Schüler also seit mir bitte nicht böse das 
ich da nicht der beste bin

von AntonMC (Gast)


Lesenswert?

Oh @Theor
das habe ich wohl übersehen... Danke ich teste es mal

von AntonMC (Gast)


Lesenswert?

Es funktioniert, danke an alle die sich Zeit genommen haben um mir zu 
helfen
demnächst sollte ich da mal besser aufpassen...

von fast (Gast)


Lesenswert?

Theor schrieb:
> Der Vergleichsoperator ist in C das "==", nicht das "=".

lies das nochmal durch, versuch es zu verstehen

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Gibts bei Arduino keine Warnung 'Possibly unwanted assignment in <Zeile 
mit 'if'>)?
Ist ja ulkig. Der Fehler passiert ja jedem mal, aber die Warnung sollte 
dann kommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.