Das Infolexikon
...und Blog über die Uni FrankfurtInformatik und Kram
Da wir lange nicht wußten, wo wir das für die Uni ausgearbeitete Material unterbringen sollten und auch einen schrecklichen Drang hatten der Welt diverse Sachen aufzudrücken...
| Atmega8 PWM oder "Der Böse Blick" |
Mein Infrarot-Entfernungsmesser, der Sharp GP2D12, 10-80cm, Analog-Ausgang, sollte morgen oder übermorgen kommen. Und da ich will, dass mein Robo nach links/rechts schauen kann, muss da ein Servo rein. Und wie steuert man den - Genau! - mit Pulsweiten-Modulation. Also "schnell" nen Hals gebaut und schonmal nen Plastik-Winkel draufgeschraub, Loch gefräst und ein kleines Programm geschrieben..
#include <avr/io.h>
#include <avr/delay.h>
void long_wait(int ms){
int y=0;
for(y=0;y<ms;y++){
_delay_ms(10);
}
}
int main(){
DDRD=0x00;
PORTD=0xFF;
DDRC=0xFF;
PORTC=0x00;
DDRB=0xFF;
ICR1=10000;
TCCR1A |= (0 << COM1A0) | (1 << COM1A1) | (0 << COM1B0) | (0 << COM1B1) | (0 << FOC1A) | (0 << FOC1B) | (1 << WGM11) | (0 << WGM10);
TCCR1B |= (0 << ICNC1) | (0 << ICES1) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (1 << CS11) | (0 << CS10);
for(;;){
if(!bit_is_set(PIND,0) && (bit_is_set(PIND,1))){
OCR1A = 1800;
long_wait(100);
}
if(!bit_is_set(PIND,1) && (bit_is_set(PIND,0))){
OCR1A = 650;
long_wait(100);
}
if(bit_is_set(PIND,0) && bit_is_set(PIND,1)){
OCR1A = 1300;
long_wait(100);
}
}
return 0;
}
Der Kopf
Die Testschaltung
Der Servo
Im Moment steuere ich den Servo noch mit Tastern, zum Ausprobieren und Einstellen, muss noch die genauen ms-Zeiten für die rechte/linke/mittlere Position finden..
| Erstellt | 1. April 2008 22:01:36 | Geändert | 1. April 2008 22:47:27 |
|---|---|---|---|
| Von | Tobias Weis | Kategorien | Technik |
| 0 Kommentar(e) | |||