Was meinst du mit "dem Quelltext übergeben"?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.
Zum Bleistift könntest du die If's zu ner Switch-Case machen.Oder wie ich meinen Code etwas schlanker gestalten kann?
Und du kannst natürlich versuchen doppelten Code zu vermeiden:
Inwiefern der ursprüngliche Code Sinn macht hab ich mir nicht angesehen!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; }
Bei Fragen - fragen, Grüße![]()







Zitieren

Lesezeichen