Projects > Advanced Holosight
Holographic Displays are used more and more. They have been around in airplanes for ages and some car manufacturers are also using them now.
I was wondering if it is able to build a really small one which I could use for Paintball e.g.
I hooked up a Nokia LCD to an Arduino Nano to display the remaining balls as a bargraph.
Since I never used such a LCD before, there is more to come - for sure.
This is only a quick and dirty test of the display:
#include <ColorLCDShield.h> LCDShield lcd; int buttons[3] = {3, 4, 5}; byte cont = 40; int menu = 0; int submenu = 0; int magsize = 20; int schuss = 20; int crosshair_style = 1; int crosshair_color_cycle = 1; int crosshair_color = GREEN; String dispschuss; void setup() { for (int i=0; i<3; i++) { pinMode(buttons[i], INPUT); digitalWrite(buttons[i], HIGH); } lcd.init(PHILLIPS); lcd.contrast(cont); lcd.clear(BLACK); } void loop() { int bgcolor; int fcolor; if (schuss<0) {schuss=magsize;} if (menu==0){ if (crosshair_style == 1) { lcd.setRect(63, 63, 65, 65, 1, crosshair_color); lcd.setCircle(64, 64, 10, crosshair_color); } if (crosshair_style == 2) { lcd.setRect(63, 63, 65, 65, 1, crosshair_color); lcd.setRect(58, 58, 70, 70, 0, crosshair_color); } if (crosshair_style == 3) { lcd.setRect(63, 63, 65, 65, 1, crosshair_color); lcd.setRect(58, 58, 70, 70, 0, crosshair_color); } dispschuss = ""; dispschuss += schuss; dispschuss += "/"; dispschuss += magsize; dispschuss += " .43 Pballs "; char charBuf[50]; dispschuss.toCharArray(charBuf, 50); lcd.setStr(charBuf, 112, 1, WHITE, BLACK); lcd.setRect(0, 0, 12, 130, 1, BLACK); lcd.setRect(12, 5, 13, 125, 1, RED); float breitefloat = (120.0/(float)magsize)*(float)schuss; int breite = (int)breitefloat; lcd.setRect(6, 5, 12, breite+5, 1, BLUE); } if (menu==1){ lcd.setStr("preferences:", 3, 10, WHITE, BLACK); lcd.setRect(20, 5, 21, 125, 1, BLUE); if (submenu==1){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("crosshair", 23, 10, fcolor, bgcolor); if (submenu==2){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("magazin size", 43, 10, fcolor, bgcolor); if (submenu==3){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("back", 63, 10, fcolor, bgcolor); } if (menu==2){ lcd.setStr("crosshair setup:", 3, 5, WHITE, BLACK); lcd.setRect(20, 5, 21, 125, 1, BLUE); if (submenu==1){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("color", 23, 10, fcolor, bgcolor); if (submenu==2){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("appearance", 43, 10, fcolor, bgcolor); if (submenu==3){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("back", 63, 10, fcolor, bgcolor); if (crosshair_style == 1) { lcd.setRect(63+40, 63, 65+40, 65, 1, crosshair_color); lcd.setCircle(64+40, 64, 10, crosshair_color); } if (crosshair_style == 2) { lcd.setRect(63+40, 63, 65+40, 65, 1, crosshair_color); lcd.setRect(58+40, 58, 70+40, 70, 0, crosshair_color); } if (crosshair_style == 3) { lcd.setRect(63+40, 63, 65+40, 65, 1, crosshair_color); } } if (menu==3){ lcd.setStr("magazine setup:", 3, 8, WHITE, BLACK); lcd.setRect(20, 5, 21, 125, 1, BLUE); if (submenu==1){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("decrease size", 23, 10, fcolor, bgcolor); if (submenu==2){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("increase size", 43, 10, fcolor, bgcolor); if (submenu==3){bgcolor=WHITE; fcolor=BLACK;}else{bgcolor=BLACK; fcolor=WHITE;} lcd.setStr("back", 63, 10, fcolor, bgcolor); String magdisp; magdisp = "size: "; magdisp += magsize; char charBuf[50]; magdisp.toCharArray(charBuf, 50); lcd.setStr(charBuf, 93, 35, WHITE, BLACK); } while(digitalRead(buttons[0])&&digitalRead(buttons[1])&&digitalRead(buttons[2])) ; if (!digitalRead(buttons[0])) { submenu--; } else if (!digitalRead(buttons[1])) { lcd.clear(BLACK); if (menu==0){menu=1; submenu=0;} if (menu==1 & submenu==1){menu=2; submenu=0;} if (menu==1 & submenu==2){menu=3; submenu=0;} if (menu==1 & submenu==3){menu=0; submenu=0;} if (menu==2 & submenu==3){menu=1; submenu=0;} if (menu==2 & submenu==2){if(crosshair_style==3){crosshair_style=1;}else{crosshair_style++;}} if (menu==2 & submenu==1){if(crosshair_color_cycle==5){crosshair_color_cycle=1;}else{crosshair_color_cycle++;} if(crosshair_color_cycle==1){crosshair_color = GREEN;}if(crosshair_color_cycle==2){crosshair_color = BLUE;}if(crosshair_color_cycle==3){crosshair_color = RED;}if(crosshair_color_cycle==4){crosshair_color = YELLOW;}if(crosshair_color_cycle==5){crosshair_color = WHITE;}} if (menu==3 & submenu==3){menu=1; submenu=0;} if (menu==3 & submenu==1){magsize--; schuss=magsize;} if (menu==3 & submenu==2){magsize++; schuss=magsize;} } else if (!digitalRead(buttons[2])) { submenu++; if (menu==0){schuss--;} } lcd.contrast(cont); delay(100); }