Hallo
Das Servo sollte schon ausreichen. Wenn du nur eine Led benötigst würde ich dafür die rote Statusled verwenden. Das würde keine andere Funktion behindern. Einzige Einschränkung wäre der vorsichtige Umgang mit StatusLED(), weil diese Funktion ein Servosignal an der roten StatusLED verändern würde. Die Ansteuerung wäre dafür sehr einfach:
ungetestetCode:#include "asuro.h" char statusledgreen; int i, p; int main(void) { Init(); for(i=0; i<1000; i++) Sleep(72); // Pause eine Sekunde bei 72kHz-Library // In asuro.h werden die Farben der StatusLED so definiert: // #define GREEN 1 // #define RED 2 // #define YELLOW 3 // Zusätzlich wird noch dies definiert: // #define OFF 0 // #define ON 1 // Da wir zum Setzen der grünen LED die Funktion StatusLED() nicht verwenden dürfen // merken wir uns ihren Status in der Variablen statusledgreen und schalten sie aus statusledgreen = OFF; while (1) { for(i=0; i<50; i++) // Impuls 50 mal senden (1 Sekunde!) { StatusLED(RED+statusledgreen); // Implus high ausgeben Sleep(54); // -45° 0,75ms StatusLED(statusledgreen); // Implus low ausgeben p=72*20-54; // Impulspause while(p > 255) { Sleep(255); p=p-255; } Sleep(p); } if(statusledgreen == ON) statusledgreen=OFF; // grüne StatusLED umschalten else statusledgreen=ON; for(i=0; i<50; i++) { StatusLED(RED+statusledgreen); Sleep(72); // Mitte 1ms StatusLED(statusledgreen); p=72*20-72; while(p > 255) { Sleep(255); p-=255; } Sleep(p); } if(statusledgreen) statusledgreen=0; else statusledgreen=1; for(i=0; i<50; i++) { StatusLED(RED+statusledgreen); Sleep(90); // +45° 0,125ms StatusLED(statusledgreen); p=72*20-90; while(p > 255) { Sleep(255); p-=255; } Sleep(p); } if(statusledgreen) statusledgreen=0; else statusledgreen=1; for(i=0; i<50; i++) { StatusLED(RED+statusledgreen); Sleep(72); StatusLED(statusledgreen); p=72*20-72; while(p > 255) { Sleep(255); p-=255; } Sleep(p); } // if(statusledgreen) statusledgreen=0; // else statusledgreen=1; } return(0); }
Gruß
mic







Zitieren

Lesezeichen