Quick Guide: Arduino Driver libraries

Atmel, PIC, VEX, Fischertechnik

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 09:33

LCD1602 I2C oder LCD2004_I2C

LCD1602_I2C.jpg


16x2 Display, aber I2C-Ansteuerung
i2c-chip meist PCF8574, z.B. auch Platine FC 113

Library: LiquidCrystal_I2C.h
Link: https://github.com/fdebrabander/Arduino ... 2C-library

Code: Alles auswählen

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
   // initialize the LCD
   lcd.begin();
   // Turn on the blacklight and print a message.
   lcd.backlight();
   lcd.print("Hello, world!");
}

void loop()
{
   // Do nothing here...
}


alternativ, je nach Modell:
Library: LiquidCrystal_I2C.h
Link: http://wentztech.com/radio/arduino/files/LCDI2C.html

Code: Alles auswählen

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x20,16,2);
void setup()
{
   lcd.init();
   lcd.backlight();
}
void loop()
{
   lcd.setCursor(0,0);
   lcd.print("Hello,world");
   lcd.setCursor(0,1);
   lcd.print("Hello");
}

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 09:33


Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Baustelle: Arduino Driver libraries: Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

(Platzhalter)

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

(Platzhalter)

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

Platzhalter

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33


DONATE / SPENDE:
Gefällt dir dieses Kompendium und möchtest du dafür einen kleinen Betrag über PAYPAL spenden ?
Dann klicke einfach auf diesen Link -
Gegen eine Spende ab EUR 5,- kannst du dieses gesamte Kompendium (teilw.ohne Fotos aus urheberrechtlichen Gründen) auch als WORD.doc erhalten (per Email als .zip):

-> Ja, ich möchte etwas als Anerkennung spenden <-


Ein ganz herzliches Dankeschön! :prima:


Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

Display: OLED 128x64 u.a. (SSD1306, SH1106)

Bild Bild


Schnittstellen: I2C oder SPI

verbaute IC-Typen: z.B. SSD1306 oder SH1106

Beschreibung: u.a. https://www.adafruit.com/product/326
Libraries: z.B. https://learn.adafruit.com/monochrome-o ... d-examples
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Betr. nodeMCU board: häufig inkompatibel zu Adafruit libs; Patchs funktionieren auch nicht immer:
https://github.com/somhi/ESP_SSD1306
zus. Änderungen:
#define OLED_RESET 5 // Pin RESET digital signal
+ nach display.begin() hinzufügen: Wire.begin(D4,D5);

variant für SH_1106:
https://github.com/wonho-maker/Adafruit_SH1106

Fonts zu Adafruit libs: https://learn.adafruit.com/adafruit-gfx ... sing-fonts

Tipps zur Adafruit Lib, wenn bei Verwendung von ssd1306-Clonen das Display nicht funktioniert:
- i2c dev addr kontrollieren: Adafruit verwendet of 0x3D, Clone hingegen 0x3C
- bei Verwendung von nodeMCU: s. https://github.com/somhi/ESP_SSD1306
- wenn nicht das komplette Display angezeigt wird oder die Compilierung abgebrochen mit Fehlermeldung "Height incorrect, please fix Adafruit_SSD1306.h!", dann dort das korrekte Display auswählen und den Rest auskommentieren:

Code: Alles auswählen

/*=========================================================================
    SSD1306 Displays
    -----------------------------------------------------------------------
    The driver is used in multiple displays (128x64, 128x32, etc.).
    Select the appropriate display below to create an appropriately
    sized framebuffer, etc.

    SSD1306_128_64  128x64 pixel display

    SSD1306_128_32  128x32 pixel display

    SSD1306_96_16

    -----------------------------------------------------------------------*/
    #define SSD1306_128_64  //  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//   #define SSD1306_128_32
//   #define SSD1306_96_16






alternative Lib:
Daniel Eichhorn squix78
https://github.com/squix78/esp8266-oled-ssd1306
ggf. bei China-Klonen die alternativen SH1106-Treiber per #include "SH1106.h" statt #include "SSD1306.h" einbinden

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

Platzhalter

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino Driver libraries (Baustelle): Displays, SD, I2C, UART,...

Beitragvon HaWe » 15. Jan 2015 09:33

a) Display TFT ILI9341 2.2" 240x320
TFT_ILI9341.jpg


b) Display TFT ILI9341 2.4" 240x320 mit Touch Screen.
Rückseite: TFT+Touch pins, SD Slot:
20151022ILI9341.jpg


Preis: beide ca. 12-20 EUR - mit oder ohne Touchscreen -

Bezugsquelle: z.B. diverse in China ansässige Händler, auch z. B. ähnlich wie (ohne Gewähr):
Roboter Bausatz Shop
http://www.ebay.de/itm/171819008028?_tr ... EBIDX%3AIT

Driver-libs von Adafruit TFT_22_ILI9340 :
Adafruit_ILI9340 lib https://github.com/adafruit/Adafruit_ILI9340
Adafruit_ILI9340.zip
(71.34 KiB) 161-mal heruntergeladen

plus Adafruit_GFX lib https://github.com/adafruit/Adafruit-GFX-Library
Adafruit_GFX.zip
(81.72 KiB) 143-mal heruntergeladen


Benchmark-Tests: viewtopic.php?f=71&t=8095&p=65463#p65463

empfohlenes SD-Formatier-Tool: https://www.sdcard.org/downloads/formatter_4/

Code: Alles auswählen

// hw brickbench
// Adafruit ILI9340 / ILI9340

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9340.h"

#if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
#endif

#define  _DUEMISO_    74  // Arduino Due SPI Header
#define  _DUEMOSI_    75
#define  _DUESCK_     76

// These are the pins used for the UNO
// for Due/Mega/Leonardo use the hardware SPI pins (which are different)
/*
#define _sclk 13
#define _miso 12
#define _mosi 11
*/

#define _cs 10
#define _dc 9
#define _rst 8


// Using software SPI is really not suggested, its incredibly slow
//Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _mosi, _sclk, _rst, _miso);
// Use hardware SPI

Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);



#define  WHITE     ILI9340_WHITE
#define  TimerMS() millis()

unsigned long runtime[8];


void TFTprint(char sbuf[], int16_t x, int16_t y) {
  tft.setCursor(x, y);
  tft.print(sbuf);
}
   

inline void displayValues() {

  char buf[120];
  tft.fillScreen(ILI9340_BLACK); // clrscr()

    sprintf (buf, "%3d %9ld  int_Add",    0, runtime[0]); TFTprint(buf, 0,10);
    sprintf (buf, "%3d %9ld  int_Mult",   1, runtime[1]); TFTprint(buf, 0,20);
    sprintf (buf, "%3d %9ld  float_op",   2, runtime[2]); TFTprint(buf, 0,30);
    sprintf (buf, "%3d %9ld  randomize",  3, runtime[3]); TFTprint(buf, 0,40);
    sprintf (buf, "%3d %9ld  matrx_algb", 4, runtime[4]); TFTprint(buf, 0,50);
    sprintf (buf, "%3d %9ld  arr_sort",   5, runtime[5]); TFTprint(buf, 0,60);
    sprintf (buf, "%3d %9ld  TextOut",    6, runtime[6]); TFTprint(buf, 0,70);
    sprintf (buf, "%3d %9ld  Graphics",   7, runtime[7]); TFTprint(buf, 0,80);
   
   
}


int32_t test_TextOut(){
  int  y;
  char buf[120];
 
  for(y=0;y<20;++y) {   
    tft.fillScreen(ILI9340_BLACK); // clrscr()
    sprintf (buf, "%3d %9d  int_Add",    y, 1000);  TFTprint(buf, 0,10);
    sprintf (buf, "%3d %9d  int_Mult",   0, 1010);  TFTprint(buf, 0,20);
    sprintf (buf, "%3d %9d  float_op",   0, 1020);  TFTprint(buf, 0,30);
    sprintf (buf, "%3d %9d  randomize",  0, 1030);  TFTprint(buf, 0,40);
    sprintf (buf, "%3d %9d  matrx_algb", 0, 1040);  TFTprint(buf, 0,50);
    sprintf (buf, "%3d %9d  arr_sort",   0, 1050);  TFTprint(buf, 0,60);
    sprintf (buf, "%3d %9d  displ_txt",  0, 1060);  TFTprint(buf, 0,70);
    sprintf (buf, "%3d %9d  testing...", 0, 1070);  TFTprint(buf, 0,80);

  }
  return y;
}


int32_t test_graphics(){
  int y;
  char buf[120];
 
 
  for(y=0;y<100;++y) {
    tft.fillScreen(ILI9340_BLACK);
    sprintf (buf, "%3d", y);  TFTprint(buf, 0,80); // outcomment for downwards compatibility

    tft.drawCircle(50, 40, 10, WHITE);
    tft.fillCircle(30, 24, 10, WHITE);
    tft.drawLine(10, 10, 60, 60, WHITE);
    tft.drawLine(50, 20, 90, 70, WHITE);
    tft.drawRect(20, 20, 40, 40, WHITE);
    tft.fillRect(65, 25, 20, 30, WHITE);
    //tft.drawEclipse(70, 30, 15, 20); //  original test
    tft.drawCircle(70, 30, 15, WHITE); // alternatively, just if no drawEclipse is avaiable in the Arduino graph libs!

  }
  return y;
}



int test(){

  unsigned long time0, x, y;
  double s;
  char  buf[120];
  int   i;
  float f;

 
 
  // lcd display text / graphs
 
  time0=TimerMS();
  s=test_TextOut();
  runtime[6]=TimerMS()-time0;
  sprintf (buf, "%3d %9ld  TextOut", 6, runtime[6]); Serial.println( buf);
  TFTprint(buf, 0,70);
 
  time0=TimerMS();
  s=test_graphics();
  runtime[7]=TimerMS()-time0;
  sprintf (buf, "%3d %9ld  Graphics", 7, runtime[7]); Serial.println( buf);
  TFTprint(buf, 0,80);
 

  Serial.println();
 
  y = 0;
  for (x = 0; x < 8; ++x) {
      y += runtime[x];
  }
 
  displayValues();
 
  sprintf (buf, "gesamt ms: %9ld ", y);
  Serial.println( buf);
  TFTprint(buf, 0,110);
 
  x=50000000.0/y;
  sprintf (buf, "benchmark: %9ld ", x);
  Serial.println( buf);
  TFTprint(buf, 0,120);

  return 1;

}



void setup() {
 
  Serial.begin(9600);
 
  // Setup the LCD
  tft.begin();
  tft.setTextColor(ILI9340_WHITE); tft.setTextSize(1);
 
}

void loop() {
  char  buf[120];
  test();
 
  sprintf (buf, "Ende HaWe brickbench");   
  Serial.println( buf);
  TFTprint(buf, 0, 140);
 
  while(1);
}


HaWe Brickbench TFT benchmark:

Code: Alles auswählen

Mega:   
Text:       ms
Graphic:   ms   

Due:
Text:       9110 ms
Graphic:   40675 ms
Summe:     49785 ms

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 10:57

alternative, schnellere lib: ILI9341_due

TFT lib: https://github.com/marekburiak/ILI9341_due
Touch lib: https://github.com/ghlawrence2000/ILI9341_due_Buttons


http://marekburiak.github.io/ILI9341_due/

ILI9341_due_config.h

Some of the default settings can be set in ILI9341_due_config.h file.
SPI Mode

// comment out the SPI mode you want to use
//#define ILI9341_SPI_MODE_NORMAL
//#define ILI9341_SPI_MODE_EXTENDED // make sure you use pin 4, 10 or 52 for CS
#define ILI9341_SPI_MODE_DMA

Uncomment the line depending on the SPI mode you want to use. DMA mode is the default. For AVR, it does not matter which mode you use, ILI9341_SPI_MODE_NORMAL is always going to be used since there is no Extended SPI or DMA available on AVRs.


geeignet u.a. für Arduino DUE und ebenfalls UNO und MEGA etc.
Vorteil: volle Ausnutzung des Hardware-SPI-Busses mit schneller Taktung!

Testergebnis mit DUE: Text 15x so schnell wie UTFT, Graphics 13x so schnell wie UTFT !

Code: Alles auswählen

Benchmark für Due:
ILI9341_due tft
TextOut          973 
Graphics        3255 
gesamt ms:      4228



Code: Alles auswählen

// UTFT Demo ported to ILI9341_due library by TFTLCDCyg


#include <SPI.h>

// ILI9341_due NEW lib by Marek Buriak http://marekburiak.github.io/ILI9341_due/
#include "ILI9341_due_config.h"
#include "ILI9341_due.h"
#include "SystemFont5x7.h"
//#include "Streaming.h"

// For the Adafruit shield, these are the default.
/*
#define TFT_RST 8
#define TFT_DC 9
#define TFT_CS 10
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
*/

#define    tft_cs     49
#define    tft_dc     48
#define    tft_rst     0


ILI9341_due tft = ILI9341_due(tft_cs, tft_dc); // <<<<<<<<<<<<<<<<<<<< drop RESET pin !

char textBuff[20];

// Color set
#define   BLACK           0x0000
#define   RED             0xF800
#define   GREEN           0x07E0
//#define   BLUE            0x001F
#define   BLUE            0x102E
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define ORANGE          0xFD20
#define GREENYELLOW     0xAFE5
#define DARKGREEN       0x03E0
#define WHITE           0xFFFF

uint16_t  color;
uint16_t  colorFONDO = BLACK;


#define  TimerMS() millis()

unsigned long runtime[8];


void TFTprint(char sbuf[], int16_t x, int16_t y) {
  tft.cursorToXY(x, y);
  tft.printAt(sbuf,x,y);
}
   

inline void displayValues() {

  char buf[120];
  tft.fillScreen(BLACK); // clrscr()

    sprintf (buf, "%3d %9ld  int_Add",    0, runtime[0]); TFTprint(buf, 0,10);
    sprintf (buf, "%3d %9ld  int_Mult",   1, runtime[1]); TFTprint(buf, 0,20);
    sprintf (buf, "%3d %9ld  float_op",   2, runtime[2]); TFTprint(buf, 0,30);
    sprintf (buf, "%3d %9ld  randomize",  3, runtime[3]); TFTprint(buf, 0,40);
    sprintf (buf, "%3d %9ld  matrx_algb", 4, runtime[4]); TFTprint(buf, 0,50);
    sprintf (buf, "%3d %9ld  arr_sort",   5, runtime[5]); TFTprint(buf, 0,60);
    sprintf (buf, "%3d %9ld  TextOut",    6, runtime[6]); TFTprint(buf, 0,70);
    sprintf (buf, "%3d %9ld  Graphics",   7, runtime[7]); TFTprint(buf, 0,80);
   
   
}


int32_t test_TextOut(){
  int  y;
  char buf[120];
 
  for(y=0;y<20;++y) {   
    tft.fillScreen(BLACK); // clrscr()
    sprintf (buf, "%3d %9d  int_Add",    y, 1000);  TFTprint(buf, 0,10);
    sprintf (buf, "%3d %9d  int_Mult",   0, 1010);  TFTprint(buf, 0,20);
    sprintf (buf, "%3d %9d  float_op",   0, 1020);  TFTprint(buf, 0,30);
    sprintf (buf, "%3d %9d  randomize",  0, 1030);  TFTprint(buf, 0,40);
    sprintf (buf, "%3d %9d  matrx_algb", 0, 1040);  TFTprint(buf, 0,50);
    sprintf (buf, "%3d %9d  arr_sort",   0, 1050);  TFTprint(buf, 0,60);
    sprintf (buf, "%3d %9d  displ_txt",  0, 1060);  TFTprint(buf, 0,70);
    sprintf (buf, "%3d %9d  testing...", 0, 1070);  TFTprint(buf, 0,80);

  }
  return y;
}


int32_t test_graphics(){
  int y;
  char buf[120];
 
 
  for(y=0;y<100;++y) {
    tft.fillScreen(BLACK);
    sprintf (buf, "%3d", y);  TFTprint(buf, 0,80); // outcomment for downwards compatibility

    tft.drawCircle(50, 40, 10, WHITE);
    tft.fillCircle(30, 24, 10, WHITE);
    tft.drawLine(10, 10, 60, 60, WHITE);
    tft.drawLine(50, 20, 90, 70, WHITE);
    tft.drawRect(20, 20, 40, 40, WHITE);
    tft.fillRect(65, 25, 20, 30, WHITE);
    //tft.drawEllipse(70, 30, 15, 20); //  original test
    tft.drawCircle(70, 30, 15, WHITE); // alternatively, just if no drawEclipse is avaiable in the Arduino graph libs!

  }
  return y;
}



int test(){

  unsigned long time0, x, y;
  double s;
  char  buf[120];
  int   i;
  float f;

 
 
  // lcd display text / graphs
 
  time0=TimerMS();
  s=test_TextOut();
  runtime[6]=TimerMS()-time0;
  sprintf (buf, "%3d %9ld  TextOut", 6, runtime[6]); Serial.println( buf);
  TFTprint(buf, 0,70);
 
  time0=TimerMS();
  s=test_graphics();
  runtime[7]=TimerMS()-time0;
  sprintf (buf, "%3d %9ld  Graphics", 7, runtime[7]); Serial.println( buf);
  TFTprint(buf, 0,80);
 

  Serial.println();
 
  y = 0;
  for (x = 0; x < 8; ++x) {
      y += runtime[x];
  }
 
  displayValues();
 
  sprintf (buf, "gesamt ms: %9ld ", y);
  Serial.println( buf);
  TFTprint(buf, 0,110);
 
  x=50000000.0/y;
  sprintf (buf, "benchmark: %9ld ", x);
  Serial.println( buf);
  TFTprint(buf, 0,120);

  return 1;

}



void setup() {
 
  Serial.begin(115200);
 
  // Setup the LCD

  tft.begin();
  tft.setRotation(iliRotation270);
  tft.fillScreen(colorFONDO);
  tft.setFont(SystemFont5x7);

  tft.setTextColor(WHITE);

  Serial.println("tft started");
 
}

void loop() {
  char  buf[120];
  test();
 
  sprintf (buf, "Ende HaWe brickbench");   
  Serial.println( buf);
  TFTprint(buf, 0, 140);
 
  while(1);
}




Anm.:
- TFT läuft mit Hardware-SPI-Pins auf AVRs (Uno, Mega) und ARM (Due)
- mit Adafruit libs kaum schneller als das ILI9225 mit Software-SPI und UTFT lib (Henning Karlsen)
- mit <ILI9341_due-lib> bis zu 15x schneller als das ILI9225 mit Adafruit oder <UTFT> lib !!
- eingebautes SD-Laufwerk funktioniert bisher NICHT !
- TFT läuft aber gemeinsam mit SD auf externem Backpane per Hardware-SPI -
- Einschränkung: mit <ILI9341_due> lib muss hierzu die <SdFat> lib anstelle der <SD> lib verwendet werden


(siehe Benchmark: viewtopic.php?p=64772#p64772)


//*************************************************************************************************//

weitere ILI9341 Library: ILI9341 ucglib
(Oli Kraus)


https://github.com/olikraus/ucglib/wiki

https://github.com/olikraus/ucglib

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 10:57


DONATE / SPENDE:
Gefällt dir dieses Kompendium und möchtest du dafür einen kleinen Betrag über PAYPAL spenden ?
Dann klicke einfach auf diesen Link -
Gegen eine Spende ab EUR 5,- kannst du dieses gesamte Kompendium (teilw.ohne Fotos aus urheberrechtlichen Gründen) auch als WORD.doc erhalten (per Email als .zip):

-> Ja, ich möchte etwas als Anerkennung spenden <-


Ein ganz herzliches Dankeschön! :prima:


Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 10:57

Platzhalter

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 10:57

(Platzhalter)

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 10:57

Platzhalter

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Arduino-Hardware Driver libraries: Displays (Baustelle)

Beitragvon HaWe » 15. Jan 2015 21:33

Platzhalter


Zurück zu „allgemeine / Nicht-Lego-Robotik und Elektronik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss