banner left Boxtec Banner
Platzhalter BoxtecProdukteForumShopKontaktPlaygroundn/aJobs
 

HelvePic32

I2C 8x8 Matrix

Das kleine Matrixmodul von Adafruit hat von Hause aus die I2C Adresse 0x72, wenn man das Modul fertig aufgebaut kauft. Diese Adresse kann über die Rückseite des Moduls an den Brücken A1 und A0 verändert werden. Die Basisadresse ist 0x70.

A1 A0 I2C Adresse
offen offen 0x70
offen geschlossen 0x71
geschlossen offen 0x72
geschlossen geschlossen 0x73

Im Zweifelsfall sollte man mit dem Sketch i2cscanner.ino die Adressen auflisten lassen.

Angeschlossen wird das Module an den I2C Port des HelvePic32, das Modul funktioniert problemlos mit 3.3V.

Für den Chip HT16K33 bietet Adafruit wie bei ihren Produkten üblich eine Bibliothek an (Adafruit_LEDBackpack), die alle sogenannten Backpacks behandelt (also auch das hier beschriebenen Alphanumerische Modul). Diese verwendet die Grafikbibliothek von Adafruit, die zusätzlich installiert werden muss (Adafruit_GFX)

Da für die Fonts der für den Arduino spezifische PROGMEM Speicherbereich verwendet wird, muss man die Zeile 244 der Bibliothek-Datei Adafruit_LEDBackpack.cpp von

  uint16_t font = pgm_read_word(alphafonttable+a);

in den direkten Zugriff des HelvePic32 abändern:

  uint16_t font = alphafonttable[a];

An der Bibliothek Adafruit_GFX muss keine Änderung vorgenommen werden.

Der Beispielcode für die Matrix lautet:

#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
 
Adafruit_8x8matrix matrix = Adafruit_8x8matrix();
 
void setup() {
  Serial.begin(9600);
  Serial.println("8x8 LED Matrix Test");
 
  matrix.begin(0x72);  // pass in the address
}
 
static const uint8_t PROGMEM
  smile_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10100101,
    B10011001,
    B01000010,
    B00111100 },
  neutral_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10111101,
    B10000001,
    B01000010,
    B00111100 },
  full_bmp[] =
  { B11111111,
    B11111111,
    B11111111,
    B11111111,
    B11111111,
    B11111111,
    B11111111,
    B11111111 },
  frown_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10011001,
    B10100101,
    B01000010,
    B00111100 };
 
void loop() {
  matrix.clear();
  matrix.drawBitmap(0, 0, full_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);
 
  matrix.clear();
  matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);
 
  matrix.clear();
  matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);
 
  matrix.clear();
  matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);
 
  matrix.clear();      // clear display
  matrix.drawPixel(0, 0, LED_ON);  
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);
 
  matrix.clear();
  matrix.drawLine(0,0, 7,7, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);
 
  matrix.clear();
  matrix.drawRect(0,0, 8,8, LED_ON);
  matrix.fillRect(2,2, 4,4, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);
 
  matrix.clear();
  matrix.drawCircle(3,3, 3, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);
 
  matrix.setTextSize(1);
  matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  matrix.setTextColor(LED_ON);
  for (int8_t x=0; x>=-36; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("Hello");
    matrix.writeDisplay();
    delay(100);
  }
  matrix.setRotation(3);
  for (int8_t x=7; x>=-36; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("World");
    matrix.writeDisplay();
    delay(100);
  }
  matrix.setRotation(0);
} 

HelvePic32

 
helvepic32/bspi2cmatrix/start.txt · Last modified: 2015/03/12 17:08 by mathiasw
 
 

zum Seitenanfang

Letzte Aktualisierung: © boxtec internet appliances · the better security products