Einfache Beispiel Programme

Allgemeine c't-Bot Themen
Antworten
marvin
Wiki Master
Wiki Master
Beiträge: 385
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Einfache Beispiel Programme

Beitrag von marvin » 08 Nov 2012, 22:59

Hi,
dies soll der Start einer kleinen Serie von Programmier Beispielen für den c't-Bot werden.
Beginnen möchte ich mit Programmen die ohne das Verhaltens Framework auskommen.
Vorrausgesetzt werden:
  • der stable Zweig aus dem c't-Bot SVN
  • die Programmier Toolchain, bestehend aus Eclipse, AVR-Tools und MSys/MinGW
  • c't-Bot Basis Set mit LCD Modul Erweiterung
In der ct-bot.h Datei sind viele Optionen auskommentiert. Leider ergaben sich durch das Abschalten der Optionen Fehlermeldungen durch das IR RC5 Modul. Deshalb ist auch IR und RC5 auskommentiert.
Zum Ausprobieren der Beispiele ersetzt man einfach die ct-bot.c und die ct-bot.h mit der jeweiligen Version aus dem beigefügten Anhang.

Teil 1 - Sensoren und LCD Modul
1. Das einfachste Programm um die Sensor Werte auf dem LCD Modul anzuzeigen:

Code: Alles auswählen

#include "ct-Bot.h"
#include "init.h"
#include "sensor.h"
#include "display.h"

int main(int argc, char * argv[]) 
{
	/* Alles initialisieren */
	ctbot_init(argc, argv);

	/* Hauptschleife des Bots */
	for (;;) 
	{
	   bot_sens();
	   sensor_display();
	   delay(100);
	}

	return 0;
}

2. Eigene Ausgabe der SensorWerte auf dem LCD Modul:

Code: Alles auswählen

#include "ct-Bot.h"
#include "init.h"
#include "sensor.h"
#include "display.h"

int main(int argc, char * argv[]) 
{
	/* Alles initialisieren */
	ctbot_init(argc, argv);

	/* Hauptschleife des Bots */
	for (;;) 
	{
	   bot_sens();
	   display_cursor(1, 1);
	   display_printf("Dist:  L %03X R %03X", sensDistL, sensDistR);
	   display_cursor(2, 1);
	   display_printf("Light: L %03X R %03X", sensLDRL, sensLDRR);
	   display_cursor(3, 1);
	   display_printf("Cliff: L %03X R %03X", sensBorderL, sensBorderR);
	   display_cursor(4, 1);
	   display_printf("Line:  L %03X R %03X", sensLineL, sensLineR);

	   delay(100);
	}

	return 0;
}
3. Sensorwerte als analoger Bargraph darstellen

Code: Alles auswählen

#include "ct-Bot.h"
#include "init.h"
#include "sensor.h"
#include "display.h"

int main(int argc, char * argv[]) 
{
	int vL, vR, i;
	/* Alles initialisieren */
	ctbot_init(argc, argv);

	/* Hauptschleife des Bots */
	for (;;) 
	{
	   bot_sens();
	   display_cursor(1, 1);
	   display_printf("Dist:  L %03X R %03X", sensDistL, sensDistR);
	   vL = sensDistL/50;
	   vR = sensDistR/50;
	   display_cursor(2, 1);
       for (i=0; i<vL;i++)
    	   display_data(5);  //print solid blocks
       for(;i<20; i++)
    	   display_data(' ');  //print spaces
	   display_cursor(3, 1);
       for (i=0; i<vR;i++)
    	   display_data(5);  //print solid blocks
       for(;i<20; i++)
    	   display_data(' ');  //print spaces
	   delay(100);
	}

	return 0;
}
Falls die Distanzsensoren nur statische Werte wie 3E3 anzeigen, fehlen wahrscheinlich nur das ct-bot.eep FIle mit den Kalibrierdaten.

Viel Spaß
Peter

eax
Friends of Robby
Friends of Robby
Beiträge: 755
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Einfache Beispiel Programme

Beitrag von eax » 10 Nov 2012, 18:24

Hi Peter,

das ist sicher super für Einsteiger, erstmal mit ganz simplen Programmen starten zu können :)
marvin hat geschrieben:In der ct-bot.h Datei sind viele Optionen auskommentiert. Leider ergaben sich durch das Abschalten der Optionen Fehlermeldungen durch das IR RC5 Modul. Deshalb ist auch IR und RC5 auskommentiert.
Könntest du mir bitte sagen, welche Fehlermeldungen du beim Abschalten welcher Optionen bekommst? Ich würde das gern im Code korrigieren.

Viele Grüße
Timo
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

marvin
Wiki Master
Wiki Master
Beiträge: 385
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Re: Einfache Beispiel Programme

Beitrag von marvin » 10 Nov 2012, 23:58

Hi Timo,
die Fehlermeldungen haben sich wohl erledigt. Man sollte immer ein Make Clean machen, wenn man an den Headerdateien, insbesondere der ct-bot.h, rumschraubt.
Grüße Peter,

eax
Friends of Robby
Friends of Robby
Beiträge: 755
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Einfache Beispiel Programme

Beitrag von eax » 11 Nov 2012, 14:59

Hi Peter,

ah okay. :-)
Dass beim Ändern von Headerdateien nicht alle Abhängigkeiten neu übersetzt werden, ist (wenn ich mich richtig erinnere) ein bekannter Bug unter Windows. Ich weiß aber leider nicht mehr, ob das durch Eclipse oder gcc / make verursacht wird und ob es in irgendeiner Version schon mal gefixt wurde.

Grüße,
Timo
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

Antworten