Archiv verlassen und diese Seite im Standarddesign anzeigen : Control Unit1 mit C3C
Hi!
Ich habe auf einer Page das Programm C3C gefunden.(dürfte bekannt sein). Aber ich finde nicht raus wie ich damit richtig programmieren kann.
Selbst die Beispiele die in der Hilfe dabei sind funktionieren nicht. Was ich hinbekommen habe ist die Funktion "Beep" zu nutzen, aber ich kann weder was auf dem LCD ausgeben noch Ports ansteuern.
Gibts da irgendwo ein Tutorial dazu?
Vielen Dank schon mal.
Aber ich finde nicht raus wie ich damit richtig programmieren kann.
Leider habe ich dazu auch nicht viel im Web gefunden.
Aber aus verschiedenen Manuals und Dokus habe ich etwas zusammengekratzt... :wink:
Bis jetzt kann ich mit C3C ...
die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen
Vielleicht wird's noch mehr ...
Wenn Du noch interessiert bist, melde Dich.
Danke für deine Mühe, aber wir sind jetzt auf die vorgesehene Methode umgestiegen.
Bis jetzt kann ich mit C3C ...
die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen
Wenn's jemand interessiert...
>> Wenn's jemand interessiert...
Ja mich :-)
Ich hatte es bisher nur geschafft die LEDs anzusteuern und dann die Lust verloren. Vielleicht helfen mir deine Sourcen ja weiter.
Danke
Gruß
Sascha
sascha.becker at gmx.net
hi
wäre auch interessiet(madbanana@gmx.de)
danke schon mal im Vorraus
Das Programmieren des ACS und der IR-Schnittstelle habe ich nur mit C nicht geschafft. Aber mit einer modifiziertem C3C-Treiberdatei ist es gelungen! Dazu musste ich mich zuerst mit C3C und Assembler auseinandersetzen...
Hier ist das Ergebnis. Man kann in C also jetzt:
die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen
das AntiCollisionsSystem abfragen (z.B. auf Hindernisse reagieren)
IR-Signale senden und empfangen (z.B. mit TV-Fernbedienung steuern)
Die Installation ist ganz einfach, Kurzanleitung und Beispielprogramme anbei.
Viel Vergnügen...
Das ist doch mal was feines. =D>
Vielen Dank.
Gruss
Sascha :cheesy:
Danke für die Beispielprogramme. Die sind wirklich hilfreich. :) Mein Problem ist nun aber, dass ich auf meinem Robby noch die Erweiterungsplatine drauf habe und die erweiterten Möglichkeiten (LCD-Display, 8 LEDS, etc.) lassen sich so noch nicht ansteuern. Da ich mich noch nicht so gut mit Microcontrollern auskenne waren meine bisherigen Versuche das zu realisieren leider nicht wirklich von Erfolg gekrönt.
Hat jemand da schon etwas hinbekommen? Im Internet hab ich leider auch nichts gefunden.
Danke & Gruß,
Tim
[EDIT]
Ok, die Ansteuerung des LCDs funktioniert nun. Sie leiß sich recht einfach aus den CCBASIC Beispielen portieren, aber die 4 zusätzlichen LEDs wollen nicht. Offensichtlich muss da auch noch etwas in Assembler angepasst werden. Vielleicht bekomm ich es ja hin. :) Ich geh dann mal Assembler lernen...
Kurt Pieper
24.04.2005, 21:14
Hi HazardX.
Zeig mal deine 'C' Portierung der Displayansteuerung.
Bin auch in der Lernphase mit Robby.
Kurt
Du brauchst nur folgenden Code in die rp5plus.inc von hup mit einfügen:
#define lcd_port 1
#define lcd_rw 12
#define lcd_rs 13
#define lcd_e 14
// ---- LCD Routinen ---
char lcd_param;
char lcd_buf;
// Kommando oder Zeichen an Display senden
void LCD_Write() {
OutByte(lcd_port,lcd_buf|(lcd_param >> 4)); // Hi-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
OutByte(lcd_port,lcd_buf|(lcd_param & 0x0F)); // Lo-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
}
// LCD-Kommando
void LCD_WriteCMD() {
lcd_buf=0x00;
LCD_Write();
}
// Zeichenausgabe
void LCD_WriteChar() {
lcd_buf=32; //&B00100000
LCD_Write();
}
// Nummernausgabe
void LCD_WriteNum() {
lcd_param+=48;
LCD_WriteChar();
}
// Display loeschen
void LCD_Clear() {
lcd_param=0x02; LCD_WriteCMD();
lcd_param=0x01; LCD_WriteCMD();
}
void LCD_Init() {
// alle ports 0
OutByte(lcd_port,0x00);
// 8-Bit-Modus aktivieren
lcd_param=0x38; LCD_WriteCMD();
// mit 8-Bit-Command in 4-Bit-Modus umschalten
OutByte(lcd_port,2); //&B00000010
Toggle(lcd_e);
Toggle(lcd_e);
// ab jetzt 4-Bit-Modus
lcd_param=0x28; LCD_WriteCMD();
lcd_param=0x0C; LCD_WriteCMD();
LCD_Clear();
}
// Zeilenwechsel
void LCD_GotoLine() {
if (lcd_param==1) lcd_param=0x80;
if (lcd_param==2) lcd_param=0xC0;
LCD_WriteCMD();
}
// Ausgabe: Hallo! Mein Name ist RP5!
// Unbedingt beachten, dass vor dem ersten Gebrauch der LCD Funktionen LCD_Init aufgerufen wird!
void LCD_Demo1() {
LCD_Clear();
lcd_param=1; LCD_GotoLine();
lcd_param='H'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='o'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='M'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='n'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=2; LCD_GotoLine();
lcd_param='N'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='m'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='s'; LCD_WriteChar();
lcd_param='t'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='R'; LCD_WriteChar();
lcd_param='P'; LCD_WriteChar();
lcd_param='5'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
}
Leider werden dadurch noch weitere, wertvolle Register verbraucht.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.