nee,wieso denn ?
Die ganze Werte von 0 bis 5 werden durchläuft, oder habe ich gerad
was übersehen?
nee,wieso denn ?
Die ganze Werte von 0 bis 5 werden durchläuft, oder habe ich gerad
was übersehen?
Hi,
ich glaube ihr redet gerade schwer aneinander vorbei.
Alki scheint aus der C++-Welt zu kommen und da gibt es offensichtlich keine for schleife mehr.
@ALKI in der for-Schleife in C wird i=0 nur beim ersten betreten ausgeführt, danach werden nur noch der zwiete und dritte Befehl in der Klammer ausgefürt. Also i++ und Kontrolle ob i<6.
Also die for schleife macht nichts anderes als dein
Mit dem Vorteil das wenn die Schleife mehrmals aufgerufen werden muss der Parameter i immer bei 0 beginnt.Code:while(i<6){ //irgendein Befehl i++; }
Ich bin keine Signatur ich mach hier nur sauber
Hallo
es werden die Werte von 0 bis 5 durchlaufen. Ist ja eine normale For-Schleife. (hab auch eigentlich keinen Fehler in der For-Schleife gefunden).
Was ich aber nicht verstehe ist deine Abfrage mit dem Parameter direction. So wie das Programm jetzt ist rufst du ja irgendwann diese Funktion auf. z.B. rotate(200); Dann überprüft das Programm ob der Parameter <> 0 ist. Was soll dann überhaupt der Parameter direction?
Wenn Direction<>0 ist führt der einmal die 6 Schritte aus und das wars. Müssten die nicht eigentlich ständig ausgeführt werden, damit sich der Motor dauerhaft dreht?
@zumgwadrad: ahh, thx!!!!! gut zu wissen!
@RIFMAN: das selbe wie robojunior habe ich aber auch schon gedacht, oder hast du vor der ganzen funktion noch sowas wie ne while(true o.Ä.) schleife?
willst du den motor einfach dauernd drehen lassen, oder um ne bestimmte anzahl schritte, die du voher eingegeben hast?
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Ich danke euch!
das ist aber nicht das komplette Programm .Ich werde es posten,wenn ich zu Hause bin.
Also das ist das Programm:
wie ihr sieht das ganze will ich mit Tastensteuerung machen.Code:#define F_CPU 8000000 #include <avr/io.h> #include <stdio.h> #include <stdbool.h> #include<util/delay.h> #define T1 0x04 #define T2 0x08 #define T3 0x10 uint8_t direction; uint8_t step[8] = {0xEE, 0xBC, 0xE8, 0xBA, 0xEE, 0xBC, 0xE8, 0xBA};//Halbschritt Steuerung uint8_t rev_step[8] = {0xBE, 0xEA, 0xB8, 0xEC, 0xBE, 0xEA, 0xB8, 0xBC};//Halbschritt Steuerung //*********************************************** void rotate(direction) { int i; if(direction) { PORTD &=~(0x20); PORTD &=~(0x40); PORTD |= 0x80 ; for(i=0;i<8;i++) { _delay_ms(80); PORTA = step[i]; }; } else { PORTD &=~(0x80); PORTD &=~(0x40); PORTD |= 0x20; for(i=0;i<8;i++) { _delay_ms(80); PORTA = rev_step[i]; }; } } //************************************************ int main() { uint8_t start; uint8_t release1; uint8_t release2; uint8_t release3; release1 = 0x01; release2 = 0x01; release3 = 0x01; direction = true; start = false; DDRA |= 0xFE;//Port A pin 1-7 als Ausgang setzen PORTA = 0x00;//pull up's auf low setzen DDRD &= ~(0x1c);//Port D; PIN 2, 3 und 4 als Eingang setzen //PORTD &= ~(0x1c);//pull up's auf low setzen DDRD |= 0xE0; while(1) { if((PIND & T1)&&(release1 == 0x01)) //Taster1 gedrückt { release1 = 0x00; direction = true; start= true; } else { if (!(PIND & T1)) { release1 = 0x01; } } if((PIND & T2)&&(release2 == 0x01)) //Taster2 gedrückt { release2 = 0x00; direction = false; start = true; } else { if (!(PIND & T2)) { release2 = 0x01; } } if((PIND & T3)&&(release3 == 0x01))//Taster3 gedückt { PORTD |= 0x40; PORTD &=~(0x80) ; PORTD &=~(0x20); release3 = 0x00; PORTA &=~(0x80); start = false; } else { if (!(PIND & T3)) { release3 = 0x01; } } if(start == true) { rotate(direction); } } return 0; }
ich habe es jetzt mit Halbschritt-modus geschafft,das der Schrittmotor sich einigermaßen sauber dreht, aber was mich ärgert dass er immer noch vibriert,er macht das nicht fliessend, weiss jemand was darüber?
bist du dir sicher, dass du den motor richtig angeschlossen hast?
was hast du denn für einen (anschlussmäßig)? 4 anschlüsse? oder 5?
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
hallo A|KI,
ich glaube schon, dass ich den Motor richtig angeschlossen habe, sonst hätte er sich kaum drehen können.
das ist ein 4-Anschluss Schrittmotor.
ah, ok, bei denen gehts ja schwer, die falsch anzuschließen. was hat der denn sonst so für daten (schrittwinkel...)?
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Lesezeichen