Hallo
v2.8 kenne ich leider nicht, aber ich vermute, sie läuft auch mit 1/36000er Takt. Dann kannst du den Code mit den doppelten Sleep()s vergessen.
Wie hast du denn das Servo angeschlossen? Rot auf +, Braun auf - und Orange (oder was sonst noch übrig ist) auf BackLED?
Hier noch ein Programm das auf meinem Asuro gelaufen ist. Mit den Tastern 1,3,4 und 6 gibt man feste Positionen vor, mit 2 und 4 (jeweils die mittleren Tasten auf jeder Seite) "steppt" das Servo auf die eine oder andere Seite:
Code:
#include "asuro.h"
#define servo_stellzeit 30
unsigned char sw0,sw1, servo_pos;
void servo(unsigned char winkel){
unsigned int count=0;
do{
count++;
BackLED(ON,ON); Sleep(winkel);
BackLED(OFF,OFF); Sleep(255); Sleep(255); Sleep(255);
}while (count<servo_stellzeit);
}
int main(void) {
Init();
StatusLED(OFF);
sw0=PollSwitch();
servo_pos=45;
servo(servo_pos);
do{
sw1=sw0;
sw0=PollSwitch();
if ((sw0) && (sw0==sw1)){
switch(sw0){
case 1: servo_pos=80; break;
case 2: if (servo_pos<80) servo_pos++; break;
case 4: servo_pos=45; break;
case 8: servo_pos=45; break;
case 16: if (servo_pos>10) servo_pos--; break;
case 32: servo_pos=10; break;
}
StatusLED(YELLOW);
} else { StatusLED(GREEN); }
servo(servo_pos);
}while (1);
return 0;
}
Gruß
mic
Lesezeichen