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.
Was meinst du mit "dem Quelltext übergeben"?
Oder wie ich meinen Code etwas schlanker gestalten kann?
Zum Bleistift könntest du die If's zu ner Switch-Case machen.
Und du kannst natürlich versuchen doppelten Code zu vermeiden:
Code:
#include <stdlib.h>
#include <avr/io.h>
#include "rncontrol.h"
typedef struct{
int iSteps;
int iWait1;
int iWait2
} grValues = {0, 1, 1};
int main()
{
// DataDirection: 1 = output, 0 = input
// ----
DDRD = 0xFF;
DDRB = 0x00;
// Ports
// DDR = 1: 1 = driven high, 0 = driven low
// DDR = 0: 1 = pullups, 0 = tristate
// ----
PORTD = 0b000000010; // ... driven high
grValues grValUse;
while(1)
{
if(PINB & (1<<PB0))
{
switch(button())
{
case 1:
grValUse.iSteps = 8;
grValUse.iWait2 = 15;
break;
case 2:
grValUse.iSteps = 24;
grValUse.iWait2 = 2;
break;
case 3:
grValUse.iSteps = 48;
break;
case 4:
grValUse.iSteps = 96;
break;
case 5:
grValUse.iSteps = 192;
break;
}
waitms(250); // Entprellen
for(int i=0; i<grValUse.iSteps; i++)
{
PORTD |= (1<<PD0);
waitms(grValUse.iWait1);
PORTD &= ~(1<<PD0);
waitms(grValUse.iWait2);
}
}
waitms(1);
}
return 0;
}
Inwiefern der ursprüngliche Code Sinn macht hab ich mir nicht angesehen!
Bei Fragen - fragen, Grüße
Lesezeichen