Arduino-Portierungsproblem

Ich möchte eine Arduino-Wetterstation bauen, und der Code, den ich geschrieben habe, funktionierte perfekt auf meinem Arduino Mega 2560 mit einem Atmega2560, aber als ich es zu meinem Arduino/Genuino Micro portierte, waren die Hardware und das LCD richtig verdrahtet würde nicht funktionieren wie in der LCD würde nicht richtig funktionieren oder nichts anzeigen, und es würde nichts über Serial senden. Beim Hochladen hörte ich, dass der USB-Anschluss einige Male verbunden und getrennt wurde. Code:

    #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
Kannst du immer noch eine grundlegende Skizze wie das blinkende Tutorial ausführen? Wenn der USB-Anschluss erneut gestartet wird, liegt möglicherweise ein Kurzschluss oder eine Überspannung vor.
hinzugefügt der Autor dotnetengineer, Quelle
Wahrscheinlich nicht im Zusammenhang mit Ihrem Problem, aber ... if (millisSinceStart% interval == 0) muss fehlschlagen, wenn millis() die Millisekunde überspringt, die Sie interessiert millis() überspringt in der Regel alle 43 ms eine Millisekunde. In Blink ohne Verzögerung finden Sie die richtige Methode zur Implementierung dieser Timing-Logik.
hinzugefügt der Autor Sprogz, Quelle
Nun, ich habe kürzlich das Micro, also keine Shorts.
hinzugefügt der Autor d33tah, Quelle
Aber ich höre immer noch, dass die USB-Verbindung getrennt wird, wenn ich den Reset-Knopf drücke oder hochlade, aber dann wird es wieder verbunden.
hinzugefügt der Autor d33tah, Quelle
Ich kann die Blinkskizze laufen lassen und ich habe versucht, es so zu machen, wie es die BlinkWithoutDelay-Skizze gesagt hat.
hinzugefügt der Autor d33tah, Quelle