#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define NUMFLAKES 10 // Number of snowflakes in the animation example
#define LOGO_HEIGHT 16
#define LOGO_WIDTH 16
/**PROTOTIPO DAS FUNCOES**/
void menu(void);
int botao(void);
void movecursor(int cursor);
void funcao_menu(int cursor);
void setup() {
Serial.begin(9600);
pinMode(9, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
}
void loop() {
int botaoA = 1;
int botaoB = 1;
menu();
funcao_menu(botao());
/*display.clearDisplay(); // Clear display buffer
// display.drawLine(0, 0, 30, 30, SSD1306_WHITE);
display.fillRect(30, 30, 60, 60, SSD1306_WHITE);
display.drawCircle(10, 10, 15, SSD1306_WHITE);
display.drawCircle(100, 10, 15, SSD1306_WHITE);
display.display(); // para atulizar a tela
delay(1);
*/
}
void menu(void) {
display.clearDisplay();
display.setTextSize(1); //Define o tamanho do texto
display.setTextColor(SSD1306_WHITE); //Define a cor do texto
display.setCursor(10,0);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Cribbing Zone"));
display.setCursor(15,20);
display.println(F("JOGAR"));
display.setCursor(15,30);
display.println(F("RANKING"));
display.setCursor(15,40);
display.println(F("CREDITOS"));
display.setCursor(15,50);
display.println(F("SAIR"));
display.display();
delay(1000);
}
int botao(void){
int b1 = 1;
int b2 = 1;
int b2b = 1;
int cursor = 1;
int i;
Serial.println(cursor);
movecursor (cursor);
while (b1){
b1=digitalRead(9); //mudar o cursor
b2=digitalRead(8); //seleciona a opcao
//Serial.println(b1);
delay(1);
b2b=digitalRead(8);
//Serial.println(b1);
if ((b2b-b2)==1){
//Codigo para mover cursor
if (cursor>3){
cursor=1;
}else {
cursor++;
}
Serial.println(cursor);
movecursor (cursor);
delay(10);
}
//delay(200);
}
return cursor;
}
void movecursor(int cursor){
switch (cursor){
case 1:
// LIMPA O ANTERIOR PRIMEIRO
display.setTextSize(1);
display.setTextColor(SSD1306_BLACK);
display.setCursor(5, 50);
display.println(F(">"));
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 20);
display.println(F(">"));
display.display();
break;
case 2:
display.setTextSize(1);
display.setTextColor(SSD1306_BLACK);
display.setCursor(5, 20);
display.println(F(">"));
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 30);
display.println(F(">"));
display.display();
break;
case 3:
display.setTextSize(1);
display.setTextColor(SSD1306_BLACK);
display.setCursor(5, 30);
display.println(F(">"));
display.display();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 40);
display.println(F(">"));
display.display();
break;
case 4:
display.setTextSize(1);
display.setTextColor(SSD1306_BLACK);
display.setCursor(5, 40);
display.println(F(">"));
display.display();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 50);
display.println(F(">"));
display.display();
break;
}
}
void funcao_menu(int cursor){
display.clearDisplay();
switch (cursor){
case 1:
// LIMPA O ANTERIOR PRIMEIRO
display.setTextSize(1); //Define o tamanho do texto
display.setTextColor(SSD1306_WHITE); //Define a cor do texto
display.setCursor(10,0);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Selecione o Player"));
display.setCursor(15,20);
display.println(F("Rubens"));
display.setCursor(15,30);
display.println(F("Guilherme"));
display.setCursor(15,40);
display.println(F("Henrique"));
display.setCursor(15,50);
display.println(F("Sair"));
display.display();
if((botao()) < 4)
{
display.clearDisplay();
display.fillRect(60,10,10,20,SSD1306_WHITE);
display.display();
delay(10000);
}
break;
case 2:
display.clearDisplay();
display.setTextSize(1); //Define o tamanho do texto
display.setTextColor(SSD1306_WHITE); //Define a cor do texto
display.setCursor(10,0);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Ranking"));
display.setCursor(15,20);
display.println(F("Rubens - 10"));
display.setCursor(15,30);
display.println(F("Guilherme - 5"));
display.setCursor(15,40);
display.println(F("Henrique - 1"));
display.display();
delay(10000);
break;
case 3:
display.setTextSize(1); //Define o tamanho do texto
display.setTextColor(SSD1306_WHITE); //Define a cor do texto
for(int i = 60; i > -60; i--)
{
display.clearDisplay();
display.setCursor(30,i);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Creditos"));
display.setCursor(10,i+10);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Guilherme - Master"));
display.setCursor(10,i+20);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Rubens Leader Dev"));
display.setCursor(10,i+30);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Henrique Developer"));
display.setCursor(10,i+40);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Ulisses Developer"));
display.display();
delay(10);
}
display.setCursor(40,30);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Obrigado!"));
display.display();
delay(2000);
break;
case 4:
display.clearDisplay();
display.setCursor(40,30);// (COLUNAS, LINHAS) EM PIXELS
display.println(F("Obrigado!"));
display.display();
delay(10000);
break;
}
}