This class encapsulates all the algorithms required for the displaying strings and time dependent patterns on the lcd.
Dependents: 200943412_QuickClick
Display.cpp
- Committer:
- domkay97
- Date:
- 2017-04-16
- Revision:
- 11:7ad2ea427784
- Parent:
- 10:6f5a88c24a07
- Child:
- 12:41e9ba6d65d3
File content as of revision 11:7ad2ea427784:
#include "Display.h" #include "N5110.h" #include "Controller.h" #include <math.h> Display::Display() { _h = 0; _w = 0.3; _a = 0; _v = 0; x = 0; y = 0; x0 = 0; y0 = 0; } Display::~Display() { } void Display::init() { _h = 0; _w = 0.3; _a = 0; _v = 0; x = 0; y = 0; x0 = 0; y0 = 0; } void Display::drawCircle(Controller &pad, N5110 &lcd) { Circle(pad, lcd); calculateWait(); _h++; lcd.clear(); lcd.refresh(); } void Display::calculateWait() { _w = 0.2*exp(-0.0231*_h); } void Display::display_instruction(N5110 &lcd, int ran) { lcd.clear(); if (ran == 1){ lcd.printString("PRESS",28,2); lcd.printChar('A',40,3); } else if (ran == 2){ lcd.printString("PRESS",28,2); lcd.printChar('B',40,3); } else if (ran == 3){ lcd.printString("PRESS",28,2); lcd.printChar('X',40,3); } else if (ran == 4){ lcd.printString("PRESS",28,2); lcd.printChar('Y',40,3); } else if (ran == 5){ lcd.printString("FLICK",28,2); lcd.printChar('L',40,3); } else if (ran == 6){ lcd.printString("FLICK",28,2); lcd.printChar('R',40,3); } else { lcd.printString("PRESS",28,2); lcd.printString("STICK",28,3); } lcd.refresh(); } // function to draw circle void Display::Circle(Controller &ctrl ,N5110 &lcd) { for (int a = 0; a < 8; ++a) { Drawarc(lcd, a); lcd.refresh(); float Brightness = ctrl.pot_value(); lcd.setBrightness(0.0); wait(_w); lcd.setBrightness(Brightness); wait(_w); } } void Display::Drawarc(N5110 &lcd, int a) { x = 20; y = 0; int a1; int b1; radiusMod = 1-x; x0 = 42; y0 = 24; while(x >= y) { switch(a) { case 0 : {a1 = y; b1 = x * -1; break; } case 1 : {a1 = x; b1 = y * -1; break; } case 2 : {a1 = x; b1 = y; break; } case 3 : {a1 = y; b1 = x; break; } case 4 : {a1 = y * -1; b1 = x; break; } case 5 : {a1 = x * -1; b1 = y; break; } case 6 : {a1 = x * -1; b1 = y * -1; break; } case 7 : {a1 = y * -1; b1 = x * -1; break; } default : { a1 = x; b1 = y * -1; break; } } lcd.setPixel( a1 + x0, b1 + y0); y++; if (radiusMod<0) { radiusMod += 2*y+1; } else { x--; radiusMod += 2*(y-x)+1; } } }