Danke fuer die schnelle Antwort.Die Teile werde ich in den naechsten Tagen bei Reichelt bestellen.
Gruss ts230
Klar geht das. Es sollten alle Displays bis 4x40 Zeichen anschließbar sein. Ein DOGM162 (2x16 Zeichen) funktioniert bei mir ohne Probleme.Zitat von ts230
Siehe
http://www.asurowiki.de/pmwiki/pmwik...LCDErweiterung
Der PCF8591 hat ebenso wie der PCF8574 3 Adress Pins. Damit lassen sich von jedem Chip bis zu 8 an einem I2C Bus betreiben. Also 8 PCF8574 und 8 PCF8591. Du mußt nur jeweils die Adress Pins anders beschalten (binaer 0..7).
Danke fuer die schnelle Antwort.Die Teile werde ich in den naechsten Tagen bei Reichelt bestellen.
Gruss ts230
Euer ts230
[schild=14 fontcolor=008000 shadowcolor=FF0000 shieldshadow=1]Roboter sind cool[/schild]
ts230: sag mal kannst du evt deinen wohort etwas ändern? so ist die halbe seite nur mit den avataren gefüllt da dein langer wohnort die spalte streckt...
@damaltor
Hab ich gemacht
gruss ts230
Euer ts230
[schild=14 fontcolor=008000 shadowcolor=FF0000 shieldshadow=1]Roboter sind cool[/schild]
super danke =) kannst den wohnort natürlich gern "normal" eintragen...
Nun habe ich folgenden Code zusammengebastelt:
Damit habe ich leider Probleme: Während der ASURO durchs Zimmer fährt soll das Gesicht angezeigt werden. Bei Betätigung eines Tasters (anstossen) soll das Display wechseln zu "Ich bin Asuro", der Asuro eine Kehrwendung machen und das Display wieder zurückwechseln.Code:#include "asuro.h" #include "lcd.h" const char Eye_L[8] PROGMEM = {0X00,0X00,0X1C,0X00,0X04,0X00,0X01,0X03}; const char Eye_R[8] PROGMEM = {0X00,0X00,0X07,0X00,0X04,0X00,0X10,0X18}; const char MouthA[8] PROGMEM = {0X00,0X00,0X02,0X01,0X00,0X00,0X00,0X00}; const char MouthB[8] PROGMEM = {0X03,0X01,0X00,0X00,0X18,0X07,0X00,0X00}; const char MouthC[8] PROGMEM = {0X18,0X10,0X00,0X00,0X03,0X1C,0X00,0X00}; const char MouthD[8] PROGMEM = {0X00,0X00,0X08,0X10,0X00,0X00,0X00,0X00}; void smily_load(void) //Nötige Sonderzeichen in das Display laden { lcd_setchar(0,Eye_L); lcd_setchar(1,Eye_R); lcd_setchar(4,MouthA); lcd_setchar(5,MouthB); lcd_setchar(6,MouthC); lcd_setchar(7,MouthD); } void smily_draw(void) //Smily mit Sonderzeichen auf dem Display darstellen { lcd_home(); lcd_gotoxy(2,0); lcd_putc('('); //linkes Ohr lcd_putc(0); //linkes Auge lcd_putc(1); //rechtes Auge lcd_putc(')'); //rechtes Ohr lcd_gotoxy(2,1); lcd_putc(4); //Mund A lcd_putc(5); //Mund B lcd_putc(6); //Mund C lcd_putc(7); //Mund D } int main(void) { while(1) { unsigned char i; unsigned char taste=0; Init(); lcd_init(LCD_DISP_ON); for(i=0;i<10;i++) { PollSwitch(); } taste=PollSwitch(); if (taste==0) { MotorDir(FWD,FWD); MotorSpeed(200,200); smily_load(); smily_draw(); } else { MotorSpeed(0,0); BackLED(ON,ON); Sleep(100); for(i=0; i<210; i++) { MotorDir(RWD,RWD); MotorSpeed(130,130); Sleep(100); MotorSpeed(0,0); lcd_init(LCD_DISP_ON_CURSOR_BLINK); lcd_puts("Ich bin"); lcd_gotoxy(3,1); lcd_puts_P("ASURO"); } for(i=0; i<140; i++) { MotorDir(FWD,RWD); MotorSpeed(140,140); Sleep(100); } BackLED(OFF,OFF); } Sleep(100); } return 0; }
Es wird aber leider nur Quatsch am Display angezeigt, ausserdem bleibt der Asuro beim anstossen stehen.
Was ist nicht richtig, bitte um Hilfe?
Ich habe nun etwas anderes versucht. Das Programm misst die Batteriespannung und stellt sie dann grafisch dar. Zusätzlich erscheint noch eine "Liebeserklärung" an den Asuro.
Wer will kann es gerne ausprobieren und mir ein Feedback geben.
Hallo,
zu deinem vorigen Code ein paar Anmerkungen.
* Die Init und InitLCD sollten nur einmal beim Programmstart aufgerufen werden, nicht innerhalb der while Schleife.
* Innerhalb der for Warte Schleifen werden MotorSpeed und PrintLCD gemacht. Die brauchen ebenfalls nur einmal außerhalb der Warteschleifen aufgerufen werden.
Dein anderes Programm werde ich bei Gelegenheit mal ausprobieren. Leider hat mich meine Frau derzeit auf Roboter Entzug gesetzt.
Lesezeichen