RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 Folge dem Licht

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

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

THEMA: Folge dem Licht

Folge dem Licht 11 Jahre 10 Monate her #1255

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo
Ich hatte ein paar Fragen zu den Lichtsensor bekommen. Es ist damit möglich einem Licht zu folgen, indem ich die Helligkeit auswerte. Sicher geht es besser mit zwei Sensoren. Damit kann ich die Helligkeit und die Richtung ermitteln.
Hat jemand eine Idee, wie ich so was aufbaue könnte oder schon gemacht? Müssen die sensoren in eine Abschirmung um Fremdlicht auszublenden? Wie gross, wie land, welche Richtung? Konnte im Netz nichts passendes finden
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Folge dem Licht 11 Jahre 9 Monate her #1291

  • Arcanix
  • Arcanixs Avatar
  • OFFLINE
  • Senior Boarder
  • Beiträge: 96
Hallo achim S,

sieht schlecht aus nach meiner Meinung. Hier ein Programm das dir zeigt wie die IR Sensoren reagieren. Ich habe mal mit einer Lampe auf ein IR Sensor geleuchtet und es ändert sich nichts an den Werten die sie messen. Das hat mich aber auf eine andere Idee gebracht. Wenn du z.B. mit einer IR Fernseh Fernbedienung auf die IR Sensoren leuchest ändern sich die Werte soweit dass man damit was anfangen könnte :)

#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <nibo/copro.h>
#include <nibo/delay.h>
#include <nibo/iodefs.h>
#include <nibo/bot.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <nibo/spi.h>
#include <nibo/leds.h>
#include <nibo/pwm.h>

void shape();
void col(int li,int voli, int vo, int vore, int re);

int main()
{
sei();
bot_init();
leds_init();
pwm_init();
spi_init();
display_init();
gfx_init();
leds_set_displaylight(800);
copro_ir_startMeasure();
while (1==1)
{
copro_update();
delay(70);
gfx_term_clear ();
shape();
col(copro_distance[0],copro_distance[1], copro_distance[2], copro_distance[3], copro_distance[4]);
delay(200);
}
return 0;
}




//
Fuktionen

void col(int li,int voli, int vo, int vore, int re)
{
//Kollision links
int lline =0;
if (li<=-1) {lline = 9;}
if (li>=5000) {lline = 3;}
if (li>=15000) {lline = 6;}
// Linien links
for (lline=lline; lline<=6; lline=lline+3)
{
gfx_move (30+lline,16);
gfx_lineTo (30+lline,24);

// gfx_move (30+lline,16-lline);
// gfx_lineTo (30+lline,24+lline);
}

//Kollision vornelinks
int vlline =0;
if (voli<=-1) {vlline = 9;}
if (voli>=5000) {vlline = 3;}
if (voli>=15000) {vlline = 6;}
// Linien vornelinks
for (vlline=vlline; vlline<=6; vlline=vlline+3)
{
gfx_move (35+vlline,44-vlline);
gfx_lineTo (40+vlline,49-vlline);

// gfx_move (30+vlline,39-vlline);
// gfx_lineTo (45+vlline,54-vlline);
}


//Kollision vorne
int vline =0;
if (vo<=-1) {vline = 9;}
if (vo>=5000) {vline = 3;}
if (vo>=15000) {vline = 6;}
// Linien vorne
for (vline=vline; vline<=6; vline=vline+3)
{
gfx_move (61,54-vline);
gfx_lineTo (68,54-vline);

// gfx_move (61-vline,54-vline);
// gfx_lineTo (68+vline,54-vline);
}

//Kollision vornerechts
int vrline =0;
if (vore<=-1) {vrline = 9;}
if (vore>=5000) {vrline = 3;}
if (vore>=15000) {vrline = 6;}
// Linien vornerechts
for (vrline=vrline; vrline<=6; vrline=vrline+3)
{
gfx_move (94-vrline,44-vrline);
gfx_lineTo (89-vrline,49-vrline);

// gfx_move (98-vrline,39-vrline);
// gfx_lineTo (84-vrline,53-vrline);
}

//Kollision rechts
int rline =0;
if (re<=-1) {rline = 9;}
if (re>=5000) {rline = 3;}
if (re>=15000) {rline = 6;}
// Linien rechts
for (rline=rline; rline<=6; rline=rline+3)
{
gfx_move (99-rline,16);
gfx_lineTo (99-rline,24);

// gfx_move (99-rline,16-rline);
// gfx_lineTo (99-rline,24+rline);
}




char textli[20]="-- -- -- --";
sprintf(textli, "%d", li);
gfx_move(0, 0);
gfx_print_text(textli);

char textvoli[20]="-- -- -- --";
sprintf(textvoli, "%d", voli);
gfx_move(0, 10);
gfx_print_text(textvoli);

char textvo[20]="-- -- -- --";
sprintf(textvo, "%d", vo);
gfx_move(0, 20);
gfx_print_text(textvo);

char textvore[20]="-- -- -- --";
sprintf(textvore, "%d", vore);
gfx_move(0, 30);
gfx_print_text(textvore);

char textre[20]="-- -- -- --";
sprintf(textre, "%d", re);
gfx_move(0, 40);
gfx_print_text(textre);



}

void shape() {
gfx_move (39,10);
gfx_lineTo (39,30); //links
gfx_lineTo (54,45); //linksvorne
gfx_lineTo (74,45); //vorne
gfx_lineTo (89,30); //rechtsvorne
gfx_lineTo (89,10); //rechts
gfx_lineTo (39,10); //unten
}

Das Programm zeichnet auf dem Display den Nibo2 von oben ab und Abstandslinien. Je näher ein Objekt kommt desto weniger Linien werden angezeigt. Ich glaube der Code für die Linien ist etwas seltsam geschrieben. Igendwie in den Rücken durch die Brust ins Auge ... aber funktioniert :)
Links am Rand findst du die Wete die die einzelnen Sensoren messen. Vielleicht hilft dir das weiter. Bei Fragen...einfach fragen.

Grüße, Arcanix
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Folge dem Licht 11 Jahre 9 Monate her #1292

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo Arcanix
danke für dein Prg. Werde es mal anschauen und Testen. Informiere dich dann.
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Folge dem Licht 11 Jahre 9 Monate her #1302

  • Arcanix
  • Arcanixs Avatar
  • OFFLINE
  • Senior Boarder
  • Beiträge: 96
Hallo achim S.

ich werde das Programm heute abend noch etwas säubern und als "Öffentliches Projekt" einstellen. Dann hast du es einfacher es auf deinen Nibo2 zu übertragen.

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

Werbung