RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee NIBObee Projekte Empfindlichkeitssteigerung der IR-Abstandssensoren

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Empfindlichkeitssteigerung der IR-Abstandssensoren

Empfindlichkeitssteigerung der IR-Abstandssensoren 8 Jahre 5 Monate her #3325

  • Georg
  • Georgs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 290
Hallo,

Bei meinem NIBOburger waren die vier Abstandssensoren unterschiedlich empfindlich. Dies wird durch ein unterschiedliches 0-Punktoffset verursacht. Den nachfolgenden Code habe ich im Programm first.c in der Funktion loop_test() getestet. Ab einem Wandabstand von 20 cm beginnen die LEDs zu blinken. Die Empfindlichkeit ist jetzt bei allen vier Sensoren gleich.
uint8_t l_min = 255;
uint8_t ll_min = 255;
uint8_t r_min = 255;
uint8_t rr_min = 255;
.
.
void loop_test1() {
.
.
if (progmode) {
		uint8_t bl = analog_getValueExt(ANALOG_BL, 2)>25;
		uint8_t br = analog_getValueExt(ANALOG_BR, 2)>25;
		uint8_t bc = analog_getValueExt(ANALOG_BC, 2)>25;
		led_set(1, bl);
		led_set(2, bc);
		led_set(3, bc);
		led_set(4, br);
		} else {
 
		uint8_t l = analog_getValueExt(ANALOG_FL, 2);
		while (!analog_has_update());   // Warten bis die Messung beendet
	    if (l < l_min) l_min = l;       // Offset bestimmen		
	    l -=l_min;	                    // Offset abziehen
		l = l > 5;                      // Hindernis erkennen
 
		uint8_t r = analog_getValueExt(ANALOG_FR, 2);
		while (!analog_has_update());   
	    if (r < r_min) r_min = r;       
	    r -=r_min;						
		r  = r > 5;   
 
		uint8_t ll = analog_getValueExt(ANALOG_FLL, 2);
		while (!analog_has_update());   
	    if (ll < ll_min) ll_min = ll;       
	    ll -=ll_min;	
		ll  = ll > 5;
 
		uint8_t rr = analog_getValueExt(ANALOG_FRR, 2);
		while (!analog_has_update());   
	    if (rr < rr_min) rr_min = rr;       
	    rr -=rr_min;	
		rr  = rr > 5;
 
		led_set(1, ll);
		led_set(2, l);
		led_set(3, r);
		led_set(4, rr);
	}
}

Viele Grüße, Georg
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.068 Sekunden

Werbung