Mit asuro.h läuft es nicht mehr auf meinem RP6, deshalb ungetestet:
Code:
#include "asuro.h"
unsigned char i, j, k, servo_stellzeit;
void servo(unsigned char winkel0, unsigned char winkel1, unsigned char winkel2)
{
unsigned int count=0;
do{
count++;
if(winkel0){
PORTB |= (1 << PB0);
Sleep(winkel0);
}
PORTB &= ~(1 << PB0);
if(winkel1){
PORTB |= (1 << PB1);
Sleep(winkel1);
}
PORTB &= ~(1 << PB1);
if(winkel1){
PORTB |= (1 << PB2);
Sleep(winkel2);
}
PORTB &= ~(1 << PB2);
Sleep(255-winkel0); Sleep(255-winkel1); Sleep(255-winkel2);
}while (count<servo_stellzeit);
}
int main(void) {
Init();
DDRB |= (1 << PB2) | (1 << PB1) | (1 << PB0);
do{
servo_stellzeit=35;
servo(51, 51, 51);
servo(90, 90, 90);
servo(51, 51, 51);
servo(15, 15, 15);
servo_stellzeit=2;
for (i=15; i<88; i+=2) servo(i, 0, 0);
for (j=15; j<88; j+=2) servo(0, j, 0);
for (k=15; k<88; k+=2) servo(0, 0, k);
for (i=90; i>17; i-=2) servo(i, 0, 0);
for (j=90; j>17; j-=2) servo(0, j, 0);
for (k=90; k>17; k-=2) servo(0, 0, k);
}while (1);
return 0;
}
Lesezeichen