Nun habe ich dieses Programm gefasht:
Code:
#include "asuro.h"
unsigned char i, servo_stellzeit;
void servo(unsigned char winkel)
{
unsigned int count=0;
do{
count++;
if (ON || ON || ON) {
DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2);
PORTB |= (1 << PB0) | (1 << PB1) | (1 << PB2);
}
FrontLED(ON);
Sleep(winkel);
if (!OFF) PORTB &= ~(1 << PB2);
if (!OFF) PORTB &= ~(1 << PB1);
if (!OFF) PORTB &= ~(1 << PA0);
FrontLED(OFF);
Sleep(255); Sleep(255); Sleep(255);
}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;
}
Die FrontLED flackert ganz schnell, der Servo dreht: 90° Rechts - 90° Rechts - 90° Links - 90° Links - 180° Rechts - 180° Links
Wenn ich allerdings einen 2. Servo anhänge stimmt der Ablauf nicht mehr, bei 3 angehängten Servos dreht gar keiner mehr.
Wie muss ich vorgehen um alle 3 Parallel betreiben zu können?
Lesezeichen