Buongiorno,
ho trovato quest'esempio però non risponde ai comandi dei miei tasti. Come mai?
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 12
Adafruit_SSD1306 display(OLED_RESET);
const int enter = D5;
const int up = D7;
const int down = D6;
const int back = D8;
int start = 1;
int run = 0;
int sel = 0;
int sub = 0;
void screen(unsigned char x);
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
Serial.begin(115200); // initialize serial communication at 115200 baud
pinMode(enter, INPUT);
pinMode(up, INPUT);
pinMode(down, INPUT);
pinMode(back, INPUT);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20, 20);
display.println("LOADING");
Serial.println("LOADING");
display.display();
delay(500);
display.setCursor(100, 20);
display.print(".");
display.display();
delay(500);
display.setCursor(105, 20);
display.print(".");
display.display();
delay(500);
display.setCursor(110, 20);
display.print(".");
display.display();
delay(1000);
display.setTextSize(1);
}
void loop()
{
screen('a');
while (start == 1)
{
if (digitalRead(enter) == HIGH)
{
screen('b');
run = 1;
start = 0;
sel = 0;
}
else
{
run = 0;
start = 1;
sel = 0;
}
}
while (run == 1)
{
if (digitalRead(enter) == HIGH)
{
screen('d');
sel = 1;
} while (digitalRead(enter) == HIGH);
if ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH))
{
screen('c');
run = 2;
} while ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH));
if (digitalRead(back) == HIGH)
{
screen('a');
sel = 0;
run = 0;
start = 1;
} while (digitalRead(back) == HIGH);
}
while (run == 2)
{
if (digitalRead(enter) == HIGH)
{
screen('f');
sel = 2;
} while (digitalRead(enter) == HIGH);
if ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH))
{
screen('b');
run = 1;
} while ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH));
if (digitalRead(back) == HIGH)
{
screen('a');
sel = 0;
run = 0;
start = 1;
} while (digitalRead(back) == HIGH);
}
while (sel == 1)
{
if (digitalRead(enter) == HIGH)
{
screen('g');
sub = 1;
} while (digitalRead(enter) == HIGH);
if ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH))
{
screen('e');
sel = 3;
} while ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH));
if (digitalRead(back) == HIGH)
{
screen('b');
sel = 0;
run = 1;
sub = 0;
} while (digitalRead(back) == HIGH);
}
while (sel == 2)
{
if (digitalRead(enter) == HIGH)
{
screen('i');
} while (digitalRead(enter) == HIGH);
if ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH))
{
while ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH));
}
if (digitalRead(back) == HIGH)
{
screen('c');
sel = 0;
run = 2;
sub = 0;
} while (digitalRead(back) == HIGH);
}
while (sel == 3)
{
if (digitalRead(enter) == HIGH)
{
screen('h');
sub = 2;
} while (digitalRead(enter) == HIGH);
if ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH))
{
screen('d');
sel = 1;
} while ((digitalRead(up) == HIGH) || (digitalRead(down) == HIGH));
if (digitalRead(back) == HIGH)
{
screen('b');
run = 1;
} while (digitalRead(back) == HIGH);
}
}
void screen(unsigned char x)
{
switch (x)
{
case 'a':
display.clearDisplay();
display.setCursor(40, 2);
display.println("welcome");
delay(800);
display.setCursor(20, 20);
display.println("Press ENTER to");
display.setCursor(35, 30);
display.println("continue");
display.display();
Serial.print ("Mostro menù A");
break;
case 'b':
display.clearDisplay();
display.setCursor(0, 0);
display.println("1> CASE B <");
display.display();
delay(1000);
display.clearDisplay();
Serial.println ("Mostro menù B");
break;
case 'c':
display.clearDisplay();
display.setCursor(0, 0);
display.println("1> CASE C");
display.display();
Serial.println ("Mostro menù C");
break;
case 'd':
display.clearDisplay();
display.setCursor(0, 0);
display.println("1> CASE D < ");
display.display();
Serial.println ("Mostro menù D");
break;
case 'e':
display.clearDisplay();
display.setCursor(0, 0);
display.println("1> CASE E ");
display.display();
Serial.println ("Mostro menù E");
break;
case 'f':
display.clearDisplay();
display.setCursor(0, 0);
display.println("1> CASE F ");
display.display();
Serial.println ("Mostro menù F");
break;
case 'g':
display.clearDisplay();
display.setCursor(0, 0);
display.println("CASE G");
display.display();
Serial.println ("Mostro menù G");
break;
case 'h':
display.clearDisplay();
display.setCursor(0, 0);
display.println("CASE H");
display.display();
Serial.println ("Mostro menù H");
break;
}
}