Danke für die Tips, hab jetzt einfach mit ner if gemacht:
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;
}
Das soll es machen:
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
Lesezeichen