اردوينو Porting مشكلة

أريد أن أبني محطة أردوينو الجوية ، والرمز الذي كتبته قد عمل بشكل ممتاز على جهاز آردوينو ميجا 2560 مع جهاز Atmega2560 ، ولكن عندما قمت بتحويله إلى جهاز Arduino/Genuino Micro ، تم توصيل الأجهزة وشاشة LCD بشكل صحيح ولكن لن تعمل كما هو الحال في شاشات الكريستال السائل لن تعمل بشكل صحيح أو لا تعرض أي شيء ، وأنها لن ترسل أي شيء على المسلسل. أثناء التحميل ، سمعت أن منفذ USB متصل وفصل عدة مرات. الشفرة:

    #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
هل لا يزال بإمكانك تشغيل رسم أساسي مثل البرنامج التعليمي الطرفة؟ في حالة إعادة تشغيل منفذ USB ، فقد يرجع ذلك إلى وجود دائرة قصر أو فائض الجهد.
وأضاف المؤلف dotnetengineer, مصدر
ربما لا تتعلق المشكلة ولكن ... إذا (millisSinceStart٪ interval == 0) منضمة إلى فشل عند millis() يتخطى ميلي ثانية واحدة كنت مهتماً. عادةً ما يتخطى millis() ميلي ثانية واحدة كل 43 مللي ثانية. راجع Blink Without Delay للتعرف على الطريقة الصحيحة لتنفيذ منطق التوقيت هذا.
وأضاف المؤلف Sprogz, مصدر
حسنا لقد حصلت مؤخرا على مايكرو ، لذلك لا السراويل.
وأضاف المؤلف d33tah, مصدر
ولكن ما زلت أسمع اتصال USB في كل مرة اضغط على زر إعادة الضبط أو تحميل ، ولكن بعد ذلك يتصل مرة أخرى.
وأضاف المؤلف d33tah, مصدر
يمكنني تشغيل رسم وميض وحاولت القيام به كيف قال رسم BlinkWithoutDelay.
وأضاف المؤلف d33tah, مصدر