int pinMosfet = 9;
int pulsante = 5;
int stato_pulsante = LOW;
int x = 0;

int attesaDebounce = 50;
unsigned long ultimoTempoDebounce = 0;

int ultimaLettura = LOW;
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.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);

void setup() {
  Serial.begin(9600);  // Inizializza la comunicazione seriale
  pinMode(pinMosfet, OUTPUT);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Don't proceed, loop forever
    pinMode(pulsante, INPUT_PULLUP);
  }
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  // Display static text
  display.println("Hello, world!");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.display();

}





void loop() {
  int lettura = digitalRead(pulsante);   // (int lettura = Variabile locale) leggo lo stato del pulsante

  //Serial.println (lettura);
  if (lettura != ultimaLettura) {          // se lo stato del pin è il contrario dell`ultima lettura
    ultimoTempoDebounce = millis();        // assegno il conteggio in millisecondi
  }
  if ((millis() - ultimoTempoDebounce) > attesaDebounce) { // se ilconteggio è superiore a 50 millisecondi
    if (lettura != stato_pulsante and lettura == HIGH) {    // se il pin5 non è uguale allo stato del pulsante e il pulsante è premuto




      do {
        display.clearDisplay();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(0, 10);
        display.print("valore x = ");
         display.setCursor(65, 5);
        display.setTextSize(2);
        display.print(x);
        display.display();
        analogWrite(pinMosfet, x);
        // Se è passato l'intervallo di tempo definito, esegui l'azione
        Serial.println(x);  // Stampa il valore corrente del ciclo

        delay(200);
        x = x + 1;

      }   while (x < 10);
      Serial.println("mi fermo");
      x = 0;
      analogWrite(pinMosfet, x);
      display.clearDisplay();
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0, 10);
      display.println("STOP");
      display.display();
      //delay(1000);
      display.display();
    }
    else {
      //display.clearDisplay();
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(0, 30);
      display.println("premi pulsante");
      display.display();
    }
    stato_pulsante = lettura;
  }
  ultimaLettura = lettura;                                 // assegno l`ultima lettura allo stato del pulsante
  //delay(10);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
r1:1
r1:2
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r