Arduino problema de puertos

Quiero construir una estación meteorológica Arduino, y el código que escribí funcionó perfectamente en mi Arduino Mega 2560 con un Atmega2560, pero cuando lo transfirió a mi Arduino/Genuino Micro, el hardware y la pantalla LCD estaban conectados correctamente. no funcionaría, ya que en la pantalla LCD no funcionaría correctamente o no mostraría nada, y no enviaría nada a través de Serial. Mientras subía, escuché que el puerto USB se conectaba y desconectaba varias veces. Código:

    #include "DHT.h"
    #include 
    #include 
    #include 

    LiquidCrystal lcd(8,9,4,5,6,7);
    DHT dht(12, DHT22);

    Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();

    float temp;
    int humidity;
    int pressure;
    int altitude;
    long interval = 2000;
    long millisSinceStart;
    char cmd;

    void setup() {
      pinMode(12, INPUT);
      lcd.begin(16, 2);
      lcd.clear();
      dht.begin();
        baro.begin();
        lcd.home();
        lcd.print("TEMP:");
        lcd.setCursor(10, 0);
        lcd.print("HUM:");
        lcd.setCursor(0, 1);
        lcd.print("PRES:");
        lcd.setCursor(9, 1);
        lcd.print("ALT:");
        Serial.begin(9600);
        pinMode(A0, INPUT);
    }

    void loop() {
      millisSinceStart = millis();
      if(millisSinceStart % interval == 0){
        temp = dht.readTemperature(true);
        humidity = dht.readHumidity();
        pressure = baro.getPressure();
        altitude = baro.getAltitude();
        lcd.setCursor(5, 0);
        lcd.print(temp);
        lcd.setCursor(14, 0);
        lcd.print(humidity);
        lcd.setCursor(5, 1);
        lcd.print(pressure);
        lcd.setCursor(13, 1);
        lcd.print(altitude);
        Serial.println(temp);
        Serial.println(humidity);
        Serial.println(pressure);
        Serial.println(altitude);
        }
    }
0
¿Todavía puedes ejecutar un boceto básico como el tutorial de blink? Si el puerto USB se reinicia, podría deberse a un cortocircuito o sobretensión.
agregado el autor dotnetengineer, fuente
Probablemente no esté relacionado con su problema, pero ... si (millisSinceStart% interval == 0) está destinado a fallar cuando millis() omita el milisegundo en el que está interesado. Y millis() generalmente se salta un milisegundo cada 43 ms. Consulte Blink Without Delay para conocer la forma correcta de implementar esta lógica de sincronización.
agregado el autor Sprogz, fuente
Bueno, recientemente he recibido el Micro, así que no hay pantalones cortos.
agregado el autor d33tah, fuente
Pero aún escucho que el USB se desconecta cada vez que presiono el botón de reinicio o subo, pero luego se conecta de nuevo.
agregado el autor d33tah, fuente
Puedo ejecutar el boceto de parpadeo e intenté hacerlo de la manera que dice el boceto de BlinkWithoutDelay.
agregado el autor d33tah, fuente