USB Shield 1.5 an UNO und MEGA2560

Hallo,
Ich habe ein USB Shield V1.5 von Keystudio an einem UNO mit diesem Programm und es läuft.

//Arduino UNO an COM 11


#include <hidboot.h>
#include <usbhub.h>

// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
#include <Wire.h>  // this is part of arduino
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x24, 20, 4);  // set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd2(0x26, 16, 2);  // set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd3(0x25, 16, 2);  // set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd4(0x24, 20, 4);  // set the LCD address to 0x27 for a 20 chars and 4 line display

int dY;
int dX;
long laufzeit = 0;
long zeitspeicher = 0;
String laufzeitUHR = "00:00:00";

class MouseRptParser : public MouseReportParser {
protected:
  void OnMouseMove(MOUSEINFO *mi);
  void OnLeftButtonUp(MOUSEINFO *mi);
  void OnLeftButtonDown(MOUSEINFO *mi);
  void OnRightButtonUp(MOUSEINFO *mi);
  void OnRightButtonDown(MOUSEINFO *mi);
  void OnMiddleButtonUp(MOUSEINFO *mi);
  void OnMiddleButtonDown(MOUSEINFO *mi);
};

void MouseRptParser::OnMouseMove(MOUSEINFO *mi) {
  //Serial.print(" dx=");
  //Serial.println(mi->dX, DEC);
  //Serial.print(" dy=");
  //Serial.println(mi->dY, DEC);
  //Serial.println(" ");
  dX = (mi->dX);
  dY = (mi->dY);
  //Serial.println("Mouse Move");
  zeitspeicher = millis();
  //lcdDisplay(1, 0, intToStr(dX), " DX / DY ", intToStr(dY));
};

void MouseRptParser::OnLeftButtonUp(MOUSEINFO *mi) {
  Serial.println("L Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnLeftButtonDown(MOUSEINFO *mi) {
  Serial.println("L Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnRightButtonUp(MOUSEINFO *mi) {
  Serial.println("R Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnRightButtonDown(MOUSEINFO *mi) {
  Serial.println("R Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnMiddleButtonUp(MOUSEINFO *mi) {
  Serial.println("M Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnMiddleButtonDown(MOUSEINFO *mi) {
  Serial.println("M Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};

USB Usb;
USBHub Hub(&Usb);
HIDBoot<USB_HID_PROTOCOL_MOUSE> HidMouse(&Usb);

MouseRptParser Prs;

void setup() {
  lcd1.init();
  lcd1.backlight();
  lcd1.print("init DSP1");
  lcd1.setCursor(0, 1);
  lcd1.print("PRG Display 0x24");
  delay(2000);
  Serial.begin(9600);
#if !defined(__MIPSEL__)
  while (!Serial)
    ;  // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
  Serial.println("Start");

  if (Usb.Init() == -1)
    Serial.println("OSC did not start.");

  delay(200);

  HidMouse.SetReportParser(0, &Prs);
}

void loop() {
  //Serial.println("____loop____________");
  Usb.Task();
  
  laufzeit = millis() - zeitspeicher;
  
  lcdDisplay(1, 0, intToStr(dX), " DX / DY ", intToStr(dY));
  if ((dX != 0) or (dY != 0)) {
  
    lcdDisplay(1, 1, intToStr(dX), " dX / dY ", intToStr(dY));
    dX=0;dY=0;

  }
    
  lcd1.setCursor(0, 2);
  String Laufzeit = uhrzeit(millis());
  lcd1.print("Zeit ");lcd1.print(Laufzeit);
  

  if (laufzeit > 3000) {
    lcdDisplay(1, 3, "USB fehlt ", "mS:",longToStr(laufzeit));
    dX = 0;
    dY = 0;
  } 
  else {
    lcdDisplay(1, 3, "USB OK ","mS:",longToStr(laufzeit));
  }
}
// __________________ENDE LOOP

void lcdDisplay(int dis, int rowNum, String titleText, String valueText, String value2Text) {
  clearRow(dis, rowNum);
  String myStr;
  myStr = String(valueText);

  int titleTextLength = titleText.length();
  // Robojax.com multiple LCD1602 I2C display
  if (dis == 1) {
    lcd1.setCursor(0, rowNum);  //
    lcd1.print(titleText);
    lcd1.setCursor(titleTextLength, rowNum);  //
    lcd1.print(myStr);
    lcd1.setCursor(myStr.length() + titleTextLength, rowNum);  //
    lcd1.print(value2Text);
  }
  if (dis == 2) {
    lcd2.setCursor(0, rowNum);  //
    lcd2.print(titleText);
    lcd2.setCursor(titleTextLength, rowNum);  //
    lcd2.print(myStr);
    lcd2.setCursor(myStr.length() + titleTextLength, rowNum);  //
    lcd2.print(value2Text);
  }
  if (dis == 3) {
    lcd3.setCursor(0, rowNum);  //
    lcd3.print(titleText);
    lcd3.setCursor(titleTextLength, rowNum);  //
    lcd3.print(myStr);
    lcd3.setCursor(myStr.length() + titleTextLength, rowNum);  //
    lcd3.print(value2Text);
  }
}

/*
 * Written by Ahmad Shamshiri on Nov 17, 2018 for Robojax.com
 * @brief clears only one row of specific display
 * @param d, the display number integer
 * @param r, the row number integer
 * @return no return value
 */
void clearRow(int d, int r) {
  //
  for (int i = 0; i < 20; i++) {
    if (d == 1) {
      lcd1.setCursor(i, r);  //
      lcd1.print(" ");
    }
    if (d == 2) {
      lcd2.setCursor(i, r);  //
      lcd2.print(" ");
    }
  }
}  //clearRow end

/*
 * Written by Ahmad Shamshiri on Nov 18, 2018 for Robojax.com
 * @brief converts integer to string
 * @param a, the integer wanted to convert
 * @return the converted value as string
 */
String intToStr(int a) {

  return String(a);
}  //intToStr end

String longToStr(long a) {
  return String(a);
}

/*
 * Written by Ahmad Shamshiri on Nov 18, 2018 for Robojax.com
 * @brief converts float to string
 * @param a, the float wanted to convert
 * @return the converted value as string
 */
String floatToStr(float a, int pos, int deci) {
  char buff[6];                 // create a buffer of 6 character
  dtostrf(a, pos, deci, buff);  // 5 positions and 2 decimal places
  return buff;                  // return the buffer
}  //floatToStr end

String ulongToStr(unsigned long a) {
  return String(a);
}

//Funktion uhrzeit _____________________________________________________________________________________________
String uhrzeit(unsigned long millisekunden) { //Übergabe von millis() und Rückgabewert Uhrzeit im Format String 00:00:00
 

  unsigned long secUHR; unsigned long sec10; unsigned long sec01; unsigned long Sekunden;
  unsigned long minUHR; unsigned long min10; unsigned long min01; unsigned long Minuten;
  unsigned long stdUHR; unsigned long std10; unsigned long std01; unsigned long Stunden;
  unsigned long tagUHR; unsigned long Tag;
  String backString;

  Sekunden = millisekunden / 1000;
  Minuten = Sekunden /60;
  Stunden = Minuten / 60;
  Tag = Stunden / 24;
  
  tagUHR = Tag;
  stdUHR = Stunden - Tag * 24;
  minUHR = Minuten - Stunden * 60;
  secUHR = Sekunden - Minuten * 60;

  //Serial.print(tagUHR);Serial.println(" taUHR");
  //Serial.print(stdUHR);Serial.println(" stdUHR");
  
  std10 = stdUHR / 10;
  std01 = stdUHR - std10 * 10;
  //Serial.print(std10);Serial.println(" std10");
  //Serial.print(std01);Serial.println(" std01");

  //Serial.print(minUHR);Serial.println(" minUHR");
  min10 = minUHR / 10;
  min01 = minUHR - min10 * 10;
  //Serial.print(min10);Serial.println(" min10");
  //Serial.print(min01);Serial.println(" min01");


  //Serial.print(secUHR);Serial.println(" secUHR");
  sec10 = secUHR / 10;
  sec01 = secUHR - sec10 * 10;
  //Serial.print(sec10);Serial.println(" sec10");
  //Serial.print(sec01);Serial.println(" sec01");
 

  backString = String(tagUHR) + "/" + String(std10) + String(std01) + ":" + String(min10) + String(min01) + ":" + String(sec10) + String(sec01);
  //Serial.print(backString);Serial.println(" ZEIT");

  return backString;

} // Funktion UHRZEIT ENDE ________________________________________________________________

(OK sind noch überreste von anderen Programmen drin - einfach übersehen , bitte)

Das Shield soll laut Hersteller auf den MEGA 2560 passen. Einige Pins stimmen überein. Aber es Funktioniert auf dem MEGA nicht. In den Foren hatte ich gelesen das es mit anderere PIN-Belegung funktionieren würde - habe ich aber nicht hinbekommen. Es wird dan in der CONSOLE angezeigt OSC did not start
Ich Habe beim Aufspielen schon bedacht, das richtige Board und den richtigen COM-Port einzustellen.
Abgesehen davon mach doch ein SHield das ich nicht direkt aufstecken kann kein Sinn - oder ?

Gib uns doch mal einen Link zu dem Shield.

Gruß Tommy

Mechanisch .. auf jeden Fall. Vom Pinmapping her .. nicht ganz: einige Pins sind auf dem Mega woanders zu finden als auf dem Uno.
Hilft dieser Beitrag evtl. weiter?

Vielleicht hängt es auch mit dem fehlenden ICSP-Connector beim Keystudio-Shield zusammen..?

Sehr Interessant - woher hast du diese Bild mit dem ICSP Connector ? Welches Shield ist das ?

hier noch der link vom Keystudio
USB Shield 1.5

das läuft unter usb-host shield 2.0. Macht die Sache (vermute ich) einfacher als das von Keystudio.

Lötbrücken auf der Platine nicht vergessen.. :wink:

Und hol dir bloß nicht das Mini-Modul! Irgendwie finde ich das nicht so anwender-freundlich...

1 Like

OK Super - ich besorge mir mal das 2.0 - zu den Lötbrücken - steht das irgendwo ? wie und was da zu tun ist ?

irgendwo habe ich das gefunden, ja... frag mich aber nicht, wo :wink:

Die beiden Pads nahe am USB-Port bestimmen die USB-Ausgangs-Spannung für das angeschlossene Gerät. Da sollte die 5V-Verbindung geschlossen werden.
Die anderen beiden sind für die 3.3V/5V-Spannungsversorgung der Platine zuständig.. Wenn du beide vom Arduino kommen lassen willst, kannst du auch diese schließen.

Auf deinem Bild unter dem linken grünen Kreis scheint ein Stift nicht in der Leiste zu sein - ist das Absicht ?

in der Tat: ich hatte da noch ein Shield drauf, das die 5V zur Verfügung gestellt hatte. Die hätten sich nicht mit den 5V des Arduino vertragen, da ich diesen mit Vin(12V) versorgt hatte und den Rest der 5V-Peripherie von meinem aufgestecken Shield.
Meine 5V kamen also nicht von unten (Arduino), sondern von oben (zusätzliches Shield).
Solange du nicht Vin (Arduino) und 5V von einer externen Quelle angeschlossen hast, kannst du den Stift einstecken.

Das 1.5 Shield ist definitiv nicht für den MEGA2560 geeignet dafür der ICSP Stecker (für SPI) gebraucht wird.
Der UNO (ATmega328) hat den I2C auf den Pin 10-13. Der MEGA2560 (ATmega2560) hat ihn um 50 herum. Du kannst aber mit Kabeln die Pins vom Shield zu den entsprechenden des MEGA2560 verkabeln.

Grüße Uwe

Ich habe ein Shield über Anazon bestellt - angeblich soll es das 2.0 sein. Die besagten Lötbrücken habe ich gefunden. Allerdings sind noch viel mehr Lötbrücken vorhanden.
Amazon liefert keine Beschreibung dazu. Und das Programm meldet "OSC did not start"
evtl liegt es an den restlichen Lötbrücken ?

PS: ich habe es auf UNO und MEGA probiert - es läuft auf beiden nicht.

Dann schließ den Jumper noch und es sollte laufen :slight_smile:

Der Sinn und Zweck der restlichen Lötbrücken hat sich mir auch noch nicht komplett erschlossen. Hat aber wohl mit Pin-Umbelegung zu tun, wenn der verwendete Microcontroller die standard-Belegung nicht zulässt. Sollte aber mit dem aktuellen Problem nichts zu tun haben :innocent:

1 Like

Ja fast gut :wink: auf dem UNO gehts auf dem MEGA nicht.
Allerdings ohne Fehlermeldung auf dem MEGA - es kommt nicht der OSC Fehler.

Ich hoffe es liegt nicht an der Bibliothek ? das wird doch die selbe sein ? oder ?
weil auf UNO geht ja....

noch mal der CODE:

//Arduino UNO an COM 11


#include <hidboot.h>
#include <usbhub.h>

// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
#include <Wire.h>  // this is part of arduino
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x24, 20, 4);  // set the LCD address to 0x27 for a 20 chars and 4 line display


int dY;
int dX;
long laufzeit = 0;
long zeitspeicher = 0;
String laufzeitUHR = "00:00:00";

class MouseRptParser : public MouseReportParser {
protected:
  void OnMouseMove(MOUSEINFO *mi);
  void OnLeftButtonUp(MOUSEINFO *mi);
  void OnLeftButtonDown(MOUSEINFO *mi);
  void OnRightButtonUp(MOUSEINFO *mi);
  void OnRightButtonDown(MOUSEINFO *mi);
  void OnMiddleButtonUp(MOUSEINFO *mi);
  void OnMiddleButtonDown(MOUSEINFO *mi);
};

void MouseRptParser::OnMouseMove(MOUSEINFO *mi) {
  //Serial.print(" dx=");
  //Serial.println(mi->dX, DEC);
  //Serial.print(" dy=");
  //Serial.println(mi->dY, DEC);
  //Serial.println(" ");
  dX = (mi->dX);
  dY = (mi->dY);
  //Serial.println("Mouse Move");
  zeitspeicher = millis();
  //lcdDisplay(1, 0, intToStr(dX), " DX / DY ", intToStr(dY));
};

void MouseRptParser::OnLeftButtonUp(MOUSEINFO *mi) {
  Serial.println("L Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnLeftButtonDown(MOUSEINFO *mi) {
  Serial.println("L Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnRightButtonUp(MOUSEINFO *mi) {
  Serial.println("R Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnRightButtonDown(MOUSEINFO *mi) {
  Serial.println("R Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnMiddleButtonUp(MOUSEINFO *mi) {
  Serial.println("M Butt Up");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};
void MouseRptParser::OnMiddleButtonDown(MOUSEINFO *mi) {
  Serial.println("M Butt Dn");
  Serial.println(mi->bmLeftButton);
  Serial.println(mi->bmMiddleButton);
  Serial.println(mi->bmRightButton);
};

USB Usb;
USBHub Hub(&Usb);
HIDBoot<USB_HID_PROTOCOL_MOUSE> HidMouse(&Usb);

MouseRptParser Prs;

void setup() {
  lcd1.init();
  lcd1.backlight();
  lcd1.print("init DSP1");
  lcd1.setCursor(0, 1);
  lcd1.print("PRG Display 0x24");
  delay(2000);
  Serial.begin(9600);
#if !defined(__MIPSEL__)
  while (!Serial)
    ;  // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
  Serial.println("Start");

  if (Usb.Init() == -1)
    Serial.println("OSC did not start.");

  delay(200);

  HidMouse.SetReportParser(0, &Prs);
}

void loop() {
  unsigned long startloop = millis();
  Serial.println(String(startloop)+" start loop");
  //Serial.println("____loop____________"); //************************************************************************************************************************
  Usb.Task();
  
  laufzeit = millis() - zeitspeicher;
  
  lcdDisplay(1, 0, intToStr(dX), " DX / DY ", intToStr(dY));
  if ((dX != 0) or (dY != 0)) {
  
    lcdDisplay(1, 1, intToStr(dX), " dX / dY ", intToStr(dY));
    dX=0;dY=0;

  }
    
  lcd1.setCursor(0, 2);
  String Laufzeit = uhrzeit(millis());
  lcd1.print("Zeit ");lcd1.print(Laufzeit);
  

  if (laufzeit > 3000) {
    lcdDisplay(1, 3, "USB fehlt ", "mS:",longToStr(laufzeit));
    dX = 0;
    dY = 0;
  } 
  else {
    lcdDisplay(1, 3, "USB OK ","mS:",longToStr(laufzeit));
  }
  Serial.println(String((millis()-startloop))+" ende loop");
}
// __________________ENDE LOOP*****************************************************************************************************************************************

void lcdDisplay(int dis, int rowNum, String titleText, String valueText, String value2Text) {
  clearRow(dis, rowNum);
  String myStr;
  myStr = String(valueText);

  int titleTextLength = titleText.length();
  // Robojax.com multiple LCD1602 I2C display
  if (dis == 1) {
    lcd1.setCursor(0, rowNum);  //
    lcd1.print(titleText);
    lcd1.setCursor(titleTextLength, rowNum);  //
    lcd1.print(myStr);
    lcd1.setCursor(myStr.length() + titleTextLength, rowNum);  //
    lcd1.print(value2Text);
  }
  
}

/*
 * Written by Ahmad Shamshiri on Nov 17, 2018 for Robojax.com
 * @brief clears only one row of specific display
 * @param d, the display number integer
 * @param r, the row number integer
 * @return no return value
 */
void clearRow(int d, int r) {
  //
  for (int i = 0; i < 20; i++) {
    if (d == 1) {
      lcd1.setCursor(i, r);  //
      lcd1.print(" ");
    }
  
  }
}  //clearRow end

/*
 * Written by Ahmad Shamshiri on Nov 18, 2018 for Robojax.com
 * @brief converts integer to string
 * @param a, the integer wanted to convert
 * @return the converted value as string
 */
String intToStr(int a) {

  return String(a);
}  //intToStr end

String longToStr(long a) {
  return String(a);
}

/*
 * Written by Ahmad Shamshiri on Nov 18, 2018 for Robojax.com
 * @brief converts float to string
 * @param a, the float wanted to convert
 * @return the converted value as string
 */
String floatToStr(float a, int pos, int deci) {
  char buff[6];                 // create a buffer of 6 character
  dtostrf(a, pos, deci, buff);  // 5 positions and 2 decimal places
  return buff;                  // return the buffer
}  //floatToStr end

String ulongToStr(unsigned long a) {
  return String(a);
}

//Funktion uhrzeit _____________________________________________________________________________________________
String uhrzeit(unsigned long millisekunden) { //Übergabe von millis() und Rückgabewert Uhrzeit im Format String 00:00:00
 

  unsigned long secUHR; unsigned long sec10; unsigned long sec01; unsigned long Sekunden;
  unsigned long minUHR; unsigned long min10; unsigned long min01; unsigned long Minuten;
  unsigned long stdUHR; unsigned long std10; unsigned long std01; unsigned long Stunden;
  unsigned long tagUHR; unsigned long Tag;
  String backString;

  Sekunden = millisekunden / 1000;
  Minuten = Sekunden /60;
  Stunden = Minuten / 60;
  Tag = Stunden / 24;
  
  tagUHR = Tag;
  stdUHR = Stunden - Tag * 24;
  minUHR = Minuten - Stunden * 60;
  secUHR = Sekunden - Minuten * 60;

  //Serial.print(tagUHR);Serial.println(" taUHR");
  //Serial.print(stdUHR);Serial.println(" stdUHR");
  
  std10 = stdUHR / 10;
  std01 = stdUHR - std10 * 10;
  //Serial.print(std10);Serial.println(" std10");
  //Serial.print(std01);Serial.println(" std01");

  //Serial.print(minUHR);Serial.println(" minUHR");
  min10 = minUHR / 10;
  min01 = minUHR - min10 * 10;
  //Serial.print(min10);Serial.println(" min10");
  //Serial.print(min01);Serial.println(" min01");


  //Serial.print(secUHR);Serial.println(" secUHR");
  sec10 = secUHR / 10;
  sec01 = secUHR - sec10 * 10;
  //Serial.print(sec10);Serial.println(" sec10");
  //Serial.print(sec01);Serial.println(" sec01");
 

  backString = String(tagUHR) + "/" + String(std10) + String(std01) + ":" + String(min10) + String(min01) + ":" + String(sec10) + String(sec01);
  //Serial.print(backString);Serial.println(" ZEIT");

  return backString;

} // Funktion UHRZEIT ENDE ________________________________________________________________


noch zur Info : am USB steckt nur ein Jiggler, dieser senden innherhalb der 2 Sekunden ein DY=1

Hmm...
also ich verwende diese Library und mit dem mitgelieferten Beispiel -> HID -> USBHIDBootKbdAndMouse bekomme ich (auch Funk-)Maus-Aktionen auf dem seriellen Monitor angezeigt.
(auf dem Mega2560)

Evtl. ein Kontaktproblem der (wahrscheinlich) langen dünnen Beinchen der Platine, die gerne für stacking shields verwendet werden? Mit denen hatte ich am Mega manchmal Probleme. Allerdings erkennt er ja zumindest schon das shield... (keine Fehlermeldung bei der Initialisierung)

Ich habe eben auch nochmal das Besispiel geladen (USBHIDBootKbdAndMouse )
es erscheint nur:
Start

sonst nichts mehr...
welches MEGA Model benutzt du ? evtl liegts am Delivery-Model ?
der UNO den ich habe ist ELEGOO und funktioniert.

teste mal ein anderes kabelgebundenes HID ... ein Keyboard z.B. .. vielleicht stört er sich ja am Funk-Empfänger...

(Mein Mega ist v. Elegoo)

das ist kein Funkempfänger sondern ein Jiggler.
Aber auch mit einer Microsoft Kabelmaus funktioniert es auf dem Mega nicht.
dann werde ich mal ein MEGA von ELEGOO kaufen gehen....

Solange Du auf Lieferung wartest, würde ich es am vorhandenen Mega mit Minimalkonfiguration probieren. Ich würde mich auch nur auf ein Beispiel mit der seriellen Ausgabe via IDE konzentrieren:
(1) I2C-Display (physisch wie auch aus dem Programm) entfernen, da ich auf dem Foto nicht erkennen kann, wie die Stromversorgung auf dem Steckbrett passiert. Kommt da noch zusätzliche externe Spannung dazu?
(2) 5V-Spannung am USB-Port des Shields vorhanden?
(2) verschiedene HID-Geräte probieren
(3) Anfänger-Tipp: Baudrate am Monitor wie im Sketch angegeben eingestellt?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.