RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee Linienverfolgung Nibo bee Funktioniert nich

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

Site-Statistic

  • 7416 private projects
  • 378 public projects
  • 16172649 lines compiled
  • 58122 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Linienverfolgung Nibo bee Funktioniert nich

Linienverfolgung Nibo bee Funktioniert nich 11 Jahre 11 Monate her #947

  • marce18
  • marce18s Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 10
Dies ist der Quellcode der ich eingegeben habe. Und wenn ich jetzt etwas neue programmieren, bleibt immer noch die Programmierung von Linienverfolgung?

#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/analog.h>
#include <nibobee/line.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

int main() {
activate_output_group(IO_LEDS); // LED bits als Output
motpwm_init();
motpwm_setLeft(0);
motpwm_setRight(0);
analog_init();
line_readPersistent(); // Kalibrierung für Liniensensoren laden
set_output_group(IO_SENS); // interne Pull-up Widerstände aktivieren
activate_output_bit(IO_LINE_EN);

int16_t speed_flt_l=0;
int16_t speed_flt_r=0;

// Countdown: LEDs blinken lassen
for (uint8_t i=0; i<10; ++i) {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
_delay_ms(10);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
_delay_ms(990);
}
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
_delay_ms(1000);
led_set(LED_L_YE, 0);
led_set(LED_R_YE, 0);

// Hauptschleife:
while(1) {
sei();
_delay_ms(1);
int16_t speed_l=0;
int16_t speed_r=0;

// Sensorwerte aktualisiseren
int16_t lval = line_get(LINE_L);
int16_t cval = line_get(LINE_C);
int16_t rval = line_get(LINE_R);

if (lval+cval+rval < 20) {
// kein Boden (alle Werte schwarz!)
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
speed_r=0, speed_l=0;
} else if ((lval<cval) && (lval<rval)) {
// Linie ist links (der linke Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 0);
// Rechter Motor schnell, linken Motor langsamer, in Abhängigkeit
// vom Unterschied zum mittleren Sensor besonders stark abbremsen
speed_r=550, speed_l=450-1*(cval-lval);
} else if ((rval<cval) && (rval<lval)) {
// Linie ist rechts (der rechte Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 1);
// Linker Motor schnell, rechter Motor langsamer, in Abhängigkeit
// vom Unterschied zum mittleren Sensor besonders stark abbremsen
speed_r=450-1*(cval-rval), speed_l=550;
} else {
// Linie ist mittig (der mittlere Sensor hat den kleinsten Wert)
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
// Beide Motoren sehr schnell, je nach Unterschied zum mittleren
// Sensor noch etwas schneller bzw. langsamer
speed_r=750 + 1*(rval-cval), speed_l=750 + 1*(lval-cval);
}

// Soll-Geschwindigkeit filtern: 75% alter Wert, 25% neuer Wert
// alt*75/100 + neu*25/100 = (3*alt+1*neu)/4
speed_flt_l*=3; speed_flt_l+=speed_l; speed_flt_l/=4;
speed_flt_r*=3; speed_flt_r+=speed_r; speed_flt_r/=4;

// Soll Werte für Motoren setzen
motpwm_setLeft(speed_flt_l);
motpwm_setRight(speed_flt_r);

}
return 0;
}
Der Administrator hat öffentliche Schreibrechte deaktiviert.

:( 11 Jahre 11 Monate her #949

  • marce18
  • marce18s Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 10
:(
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Linienverfolgung Nibo bee Funktioniert nich 11 Jahre 11 Monate her #950

  • workwind
  • workwinds Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 573
Sehe ich das richtig das ich die Kopie löschen kann?!
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.055 Sekunden

Werbung