Danke für die Tips, hab jetzt einfach mit ner if gemacht:
Das soll es machen:Code:#include <stdlib.h> #include <avr/io.h> #include "rncontrol.h" int main() { DDRD=0xFF; DDRB=0x00; int i=0; while(1) { PORTD=0b000000010; waitms(1); if(PINB & (1<<PINB0)) { if (button()==1) { waitms(250); //Zeit zum loslassen geben for(i=1;i<=8;i++) { PORTD = 0b00000001; waitms(1); PORTD = 0b00000000; waitms(15); } } if (button()==2) { waitms(250); //Zeit zum loslassen geben for(i=1;i<=24;i++) { PORTD = 0b00000001; waitms(1); PORTD = 0b00000000; waitms(2); } } if (button()==3) { waitms(250); //Zeit zum loslassen geben for(i=1;i<=48;i++) { PORTD = 0b00000001; waitms(1); PORTD = 0b00000000; waitms(1); } } if (button()==4) { waitms(250); //Zeit zum loslassen geben for(i=1;i<=96;i++) { PORTD = 0b00000001; waitms(1); PORTD = 0b00000000; waitms(1); } } if (button()==5) { waitms(250); //Zeit zum loslassen geben for(i=1;i<=192;i++) { PORTD = 0b00000001; waitms(1); PORTD = 0b00000000; waitms(1); } } } PORTD=0b000000010; waitms(1); } return 0; }
Hab an der rn control die smc11 von Nanotec hängen (Schrittmotortreiber) und da dran nen kleinen bipolaren Schrittmotor.
Wenn Taste 1 gedrückt ist macht der Motor 8 Schritte -> 15°
Taste 2 -> 24 Schritte -> 45°
Taste 3 -> 48 Schritte -> 90°
Taste 4 -> 96 Schritte -> 180°
Taste 5 -> 192 Schritte -> 360°
Wie gesagt es funktioniert so wie es soll. Würde jetzt gerne diesem Quelltext nen Wert übergeben und der Motor soll dann automatisch dem entsprechend viele Schritte machen.
Kann mir da vielleicht jemand nen Hinweiss geben, wie man sowas machen kann?
Oder wie ich meinen Code etwas schlanker gestalten kann?
Gruss Mnemonic







Zitieren

Lesezeichen