Ok,
also könnte das alle so aussehen, wenn ich nur Taster1 betätige dreht sich der Servo nach rechts (2ms) auf eine bestimte Position und danach geht der Server wieder in die Mittelstellung???
Code:
#include <avr/io.h>
// Timer1 initialisieren
void timer1_init(void)
{
TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1A0); // initalize mega8 Timer1 with 9Bit, inverted, Prescaler 256
TCCR1B = (1<<CS12); // this gives us a signal with 21.76ms at 12MHz
OCR1A = 476; // pulse of 1.5ms 512- 1500*(F_CPU/256/1000000)/2
// Hier wieder der PWM auf mittelstellung gebracht oder?
}
int main (void){
DDRD |= (1<<PD5); /* Pin D5 als Ausgang für Servo */
//*** Taster ***
DDRD &= ~ (1<<PD2); /* Pin D2 als Eingang */
PORTD |= (1<<PD2); /* Pull Up von PIN D2 aktivieren */
while(1)
{
if (!( PIND & (1<<PIND2))) /* mache was wenn PinD2 low ist */
{
OCR1A =???; /* Servo dreht sich mit 2ms */
}
else {
OCR1A = 476; /* Servo Mittelstellung*/
}
}
return 0;
}
Könnte der Code so aussehen ist das inkrementierst/dekrementierst ?
Was für ein Wert schreibe ich in Zeile:
OCR1A = ???; /* Servo dreht sich mit 2ms */
Lesezeichen