Für das Siebensegment-LED-Displaymodul von Adafruit habe ich eine kleine C-Library für Atmel Studio geschrieben.
Ein Beispielprogramm (main.c) und die Library könnt ihr am Ende des Beitrags herunterladen. Die Routinen für MasterTWI sind ebenfalls enthalten.
Files:
Im Hauptprogramm bindet ihr folgendes ein:
#include "SevenSegment_LEDBackpack.h"
#include "TWI_Master.h"
Danach könnt ihr folgende Routinen nutzen (hier die Prototypen):
CodeBox C
Das Bild zeigt das 7-segment LED backpack angeschlossen am Nano Board mit ATmega32A.
Es sind lediglich zwei Signale SCL (PC0) und SDA (PC1) zu verbinden, sowie VCC und GND.
Das Anzeigenmodul gibt es übrigens in den Farben gelb, rot, grün und blau.
Ein Auszug aus main() des Beispielprogramms:
CodeBox C
Wichtig ist die Defintion von F_CPU, da dies einige Routinen nutzen. F_CPU könnt ihr zum Beispiel in den Projekteinstellungen global definieren.
(Toolchain -> Symbols)
Beispiel: F_CPU=16000000UL
(für 16MHz Systemtakt)
Links
Sevensegment LED Backpack im Onlineshop (verfügbar in den Farben, gelb, rot, grün und blau)
Developmentboard Nano im Onlineshop
Developmentboard Nano auf dev-tools.de
Die Library könnt ihr nutzen unter
BSD License
Hier seht ihr noch ein sehr kurzes Video vom Displaymodul am ATmega32A auf dem Nano Board.
Ein Beispielprogramm (main.c) und die Library könnt ihr am Ende des Beitrags herunterladen. Die Routinen für MasterTWI sind ebenfalls enthalten.
Files:
- main.c
- SevenSegment_LEDBackpack.c
- SevenSegment_LEDBackpack.h
- TWI_Master.c
- TWI_Master.h
Im Hauptprogramm bindet ihr folgendes ein:
#include "SevenSegment_LEDBackpack.h"
#include "TWI_Master.h"
Danach könnt ihr folgende Routinen nutzen (hier die Prototypen):
CodeBox C
void LEDDriver_SetBrightness(uint8_t b); void LEDDriver_BlinkRate(uint8_t b); void LEDDriver_SetOscillator(bool osc_on); void LEDDriver_Init(void); void LEDDriver_WriteDisplay(void); void LEDDriver_DisplayClear(void); void LEDDriver_DisplayFill(void); void LEDDriver_DrawColon(bool state); void LEDDriver_WriteDigitNumber(uint8_t digit, uint8_t number, bool dot); void LEDDriver_DrawDigitDot(uint8_t digit, bool dot); void LEDDriver_WriteDigitRaw(uint8_t digit, uint8_t bitmask); void LEDDriver_DisplayDecimal8(uint8_t d); void LEDDriver_DisplayDecimal16(uint16_t d); void LEDDriver_DisplayHex8(uint8_t d); void LEDDriver_DisplayHex16(uint16_t d);
Das Bild zeigt das 7-segment LED backpack angeschlossen am Nano Board mit ATmega32A.
Es sind lediglich zwei Signale SCL (PC0) und SDA (PC1) zu verbinden, sowie VCC und GND.
Das Anzeigenmodul gibt es übrigens in den Farben gelb, rot, grün und blau.
Ein Auszug aus main() des Beispielprogramms:
CodeBox C
int main (void) { I2C_Init(); // 7bit address (A2..0 = 0b000 ... 0b111 -> Address 0x70 ..0x77) displaymodule_addr = 0x70; LEDDriver_Init(); while(1) { uint16_t blinkcounter = 0; bool drawColon = false; for (uint16_t counter = 0; counter < 10000; counter ++) { LEDDriver_DisplayDecimal16(counter); // Displays decimal 0..9999 // LEDDriver_DisplayDecimal8((uint8_t)counter); // Displays decimal 0..255 // LEDDriver_DisplayHex8((uint8_t)counter); // Displays hexadecimal 0x00..0xFF // LEDDriver_DisplayHex16(counter); // Displays hexadecimal 0x0000..0xFFFF LEDDriver_DrawColon(drawColon); LEDDriver_DrawDigitDot(0, drawColon); LEDDriver_DrawDigitDot(1, drawColon); LEDDriver_DrawDigitDot(3, drawColon); LEDDriver_DrawDigitDot(4, drawColon); blinkcounter+=10; if (blinkcounter < 500) { drawColon = false; } else if (blinkcounter < 1000) { drawColon = true; } else { blinkcounter = 0; } LEDDriver_WriteDisplay(); _delay_ms(10); } } return 0; }
Wichtig ist die Defintion von F_CPU, da dies einige Routinen nutzen. F_CPU könnt ihr zum Beispiel in den Projekteinstellungen global definieren.
(Toolchain -> Symbols)
Beispiel: F_CPU=16000000UL
(für 16MHz Systemtakt)
Links
Sevensegment LED Backpack im Onlineshop (verfügbar in den Farben, gelb, rot, grün und blau)
Developmentboard Nano im Onlineshop
Developmentboard Nano auf dev-tools.de
Die Library könnt ihr nutzen unter
BSD License
Hier seht ihr noch ein sehr kurzes Video vom Displaymodul am ATmega32A auf dem Nano Board.