Bei der Programmierung habe ich diesen Source Code gefunden:
Code:
uint16_t getAbstand(uint8_t sensor) { //Ultrschallsensoren abfragen
uint8_t tmp_sreg;
tmp_sreg = SREG;
cli();
uint16_t ergebnis;
DDRC |= sensor; //Ausgang high
PORTC |= sensor;
_delay_us(20);
PORTC &= ~sensor; //Pin auf Eingang setzen
DDRC &= ~sensor;
while(!(PINC & sensor)); //auf Sensorantwort warten
TCNT1 = 0; //Counter Register auf 0 setzen
while(PINC & sensor); //warten bis Signalende
ergebnis=TCNT1; //Signallänge auslesen
ergebnis=ergebnis*20; //Abstand berechnen
SREG=tmp_sreg;
return (uint16_t) ergebnis/29;
}
Dazu habe ich mir Gedanken gemacht ob der so richtig ist weil hier anstatt durch 58 durch 29 geteilt wird? :/
der code ist von robo junior und der meinte auch dass ein Prescaler von 64 benutzt wird und das ergebnis dann in mm ist, in wie fern beeinflusst denn die Prescaler Angabe das Ergebnis?
Lesezeichen