Hallo an alle,
ich mache gerade ein Projekt für die Uni und bin noch blutiger Anfänger auf dem Gebiet. Das Projekt soll diese Ziele haben:
- Text per Smartphone an ein LCD Display senden und ausgeben.
- Bildschirm blinken lassen
- Bildschirm an/aus
- Grafik darstellen
Ich benutze folgende Bauteile: HC-05 Bluetooth Modul, 128x64 LCD (ST7920), Arduino UNO.
Zur Zeit kann ich Text per App auf dem Bildschirm anzeigen lassen und in mehreren Zeilen schreiben.
Jetzt zu meiner Frage: Wie kann ich z.B. ein Dollar Zeichen senden und das damit verknüpfen, dass mein Bildschirm aus/an geht ?
Wenn ich ein bestimmtes Zeichen sende, wie kann ich dann auf den picture loop verweisen und ihm sagen, dasser eine Grafik ausgeben soll?
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
U8GLIB_ST7920_128X64 u8g(13, 11, 10, U8G_PIN_NONE); // SPI Com: SCK = en = 13, MOSI= rw = 11, CS = di = 0
int i=0;
char commandbuffer[20];
char commandbuffer1[20];
char commandbuffer2[20];
int cache;
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 4, 15, (char*)commandbuffer );
u8g.drawStr( 4, 35, (char*)commandbuffer1 );
u8g.drawStr( 4, 55, (char*)commandbuffer2 );
}
void setup(void) {
Serial.begin(9600);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
pinMode(8, OUTPUT);
}
void loop(void) {
int i=0;
if(Serial.available()){
delay(200);
memset(commandbuffer, 0, 15);
memset(commandbuffer1, 0, 15);
memset(commandbuffer2, 0, 15);
while( Serial.available() && i< 99) {
cache = 0;
cache = Serial.read();
if(cache == 10 || cache == 13){
cache = 0;
}
if(cache == 36){
cache = 0;
}
if(i < 15){
commandbuffer[i] = cache;
}
if(15 < i < 29){
commandbuffer1[i-15] = cache;
}
if(i > 29){
commandbuffer2[i-30] = cache;
}
i++;
}
}
// picture loop
u8g.firstPage();
do {
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 4, 15, commandbuffer );
u8g.drawStr( 4, 35, commandbuffer1 );
u8g.drawStr( 4, 55, commandbuffer2 );
} while( u8g.nextPage() );
delay(50);
}
Würde mich über kleine Tipps sehr freuen!