71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
/*
|
|
ESPboy_Init class
|
|
for www.ESPboy.com project by RomanS
|
|
https://hackaday.io/project/164830-espboy-games-iot-stem-for-education-fun
|
|
v1.0
|
|
*/
|
|
|
|
#include "ESPboyInit.h"
|
|
|
|
ESPboyInit::ESPboyInit(){};
|
|
|
|
void ESPboyInit::begin(char *appName) {
|
|
//Serial.begin(115200); //serial init
|
|
WiFi.mode(WIFI_OFF); // to safe battery power
|
|
|
|
//DAC init and backlit off
|
|
dac.begin(MCP4725address);
|
|
delay (100);
|
|
dac.setVoltage(0, false);
|
|
|
|
//mcp23017 init for buttons, LED LOCK and TFT Chip Select pins
|
|
mcp.begin(MCP23017address);
|
|
delay(100);
|
|
|
|
for (int i=0;i<8;i++){
|
|
mcp.pinMode(i, INPUT);
|
|
mcp.pullUp(i, HIGH);}
|
|
|
|
//sound init and test
|
|
pinMode(SOUNDPIN, OUTPUT);
|
|
playTone(200, 100);
|
|
delay(100);
|
|
playTone(100, 100);
|
|
delay(100);
|
|
noPlayTone();
|
|
|
|
//LCD TFT init
|
|
mcp.pinMode(CSTFTPIN, OUTPUT);
|
|
mcp.digitalWrite(CSTFTPIN, LOW);
|
|
tft.begin();
|
|
delay(100);
|
|
tft.setRotation(0);
|
|
tft.fillScreen(TFT_BLACK);
|
|
|
|
//draw ESPboylogo
|
|
tft.drawXBitmap(30, 24, ESPboyLogo, 68, 64, TFT_YELLOW);
|
|
tft.setTextSize(1);
|
|
tft.setTextColor(TFT_YELLOW);
|
|
tft.drawString (appName, (128-(strlen(appName)*6))/2, 102);
|
|
|
|
//LCD backlit fading on
|
|
for (uint16_t bcklt=300; bcklt<4095; bcklt+=30){
|
|
dac.setVoltage(bcklt, false);
|
|
delay(10);}
|
|
|
|
//clear TFT and backlit on high
|
|
dac.setVoltage(4095, true);
|
|
tft.fillScreen(TFT_BLACK);
|
|
|
|
//LED pin LOCK OFF
|
|
mcp.pinMode(LEDLOCK, OUTPUT);
|
|
mcp.digitalWrite(LEDLOCK, HIGH);
|
|
};
|
|
|
|
|
|
void ESPboyInit::playTone(uint16_t frq, uint16_t dur) { tone(SOUNDPIN, frq, dur); }
|
|
void ESPboyInit::playTone(uint16_t frq) { tone(SOUNDPIN, frq); }
|
|
|
|
void ESPboyInit::noPlayTone() { noTone(SOUNDPIN); }
|
|
|
|
uint8_t ESPboyInit::getKeys() { return (~mcp.readGPIOAB() & 255); }
|