Ich habe nun die LEDs nach deinen Tipps parallel geschalten und den Kontrollerpin via Vorwiderstand an den Servoesteueranschluß angeschlossen. Danach folgendes Programm geflasht:
Code:
#include "asuro.h"
unsigned char i, servo_stellzeit;
void servo(unsigned char winkel){
unsigned int count=0;
do{
count++;
//Servo(ON,ON,ON);
if (ON || ON || ON) {
DDRB |= (1 << PB5) | (1 << PB6) | (1 << PB7);
PORTB |= (1 << PB5) | (1 << PB6) | (1 << PB7);
}
FrontLED(ON);
Sleep(winkel);
Sleep(winkel);
//Servo (OFF,OFF,OFF);
if (!OFF) PORTB &= ~(1 << PB7);
if (!OFF) PORTB &= ~(1 << PB6);
if (!OFF) PORTB &= ~(1 << PA5);
FrontLED(OFF);
Sleep(510); Sleep(510); Sleep(510);
}while (count<servo_stellzeit);
}
int main(void) {
Init();
BackLED(OFF,OFF);
do{
servo_stellzeit=35;
servo(51);
servo(90);
servo(51);
servo(15);
servo_stellzeit=2;
for (i=15; i<88; i+=2) servo(i);
for (i=90; i>17; i-=2) servo(i);
}while (1);
return 0;
}
Wenn ich nun einschalte, machen die Servos eine kleine Dehung (ca. 2Grad) gegen den Uhrzeigersinn, das war's. Beim nächsten Einschalten wieder, und das so lange bis die Servos auf Anschlag sind.
Aber das Programm macht doch etwas anderes, FrontLED leuchtet auch nicht...
An den Servosteuerpins messe ich 1,6 Volt. Batteriespannung: 5 Volt
Lesezeichen