Hi, es ist 5 vor 12 ;) und ich bin scheinbar noch nicht ganz wach ODER ich habe einen defekten HT16K33 geliefert bekommen. Könnt ihr mir Tipps, geben um zweiteres auszuschließen? #define LCD_I2C_DEVICE 0x7E #define SEG7_I2C_DEVICE 0x70 ... while(1) { ioinit(); i2c_init(); lcd_init(); HT16K33_Init(); wait_10ms(1);//der ganze block nur zur Sicherheit, um das Device abziehen zu können. lcd_printlc_P(1, 1, PSTR("TEST AN")); lcd_light(true); lcd_printlc_P(2, 1, PSTR("TEST ")); HT16K33_ClearDisplay(0); HT16K33_ClearDisplay(1); HT16K33_ClearDisplay(2); HT16K33_ClearDisplay(3); HT16K33_ClearDisplay(4); wait_10ms(500); lcd_printlc_P(1, 1, PSTR("TEST ")); lcd_light(false); lcd_printlc_P(2, 1, PSTR("TEST AUS")); HT16K33_FillDisplay(0); HT16K33_FillDisplay(1); HT16K33_FillDisplay(2); HT16K33_FillDisplay(3); HT16K33_FillDisplay(4); wait_10ms(500); } Die lib habe ich mir von #include "HT16K33.h" /* alle Rechte by achim seeger unter GPL myroboter@web.de, wünsche viel Spass damit */ Geborgt. An dem HT16K33 auf dem Adafruit Breakoutborad habe ich stumpf 8 mini-LEDs direkt mit den kleinen Beinchen an C0-C7 und mit den langen (Annode) an A0-A7 verlötet. Die im Code angedeutete Schrift vom 2x16 LCD sehe ich! Irgendein Blinken oder Flackern an den LEDs am HT16K33 jedoch nicht. Verwende 1:1 das gleiche Kabel für Beide Devices. Irgendwer eine schlaue Testmethodik für mich? Codeschnipsel? Grüße Oekel
:
Bearbeitet durch User
Bis auf #define HT16K33 0x70 habe ich nun mal 1:1 folgenden Code verwendet: http://w8bh.net/avr/AvrDS1307.pdf Und natürlich nicht den DS1307 abgefragt, sondern fix mit x07F und x0FF getestet. Es bleibt trotzdem alles dunkel. Ist es denn ein Irrglaube, das eine LED verbunden mit COM0 & ROW0 leuchten muss, sofern ich die komplette Matrix auf "ON" setze? Nur zur Sicherheit: Wie lautet die Schleife, die das komplette Ausgangs-Mapping der LED-Matrix EINschaltet? (Ich iteriere da gerade stumpf beim I2C_WriteRegister(uint8_t busAddr, uint8_t deviceRegister, uint8_t data) über alle deviceRegister aus dem Datenblatt und für data von 0 bis x0FF. Habt ihr noch Tipps für mich? (Zweites Testboard mit verlöteter Anzeige ist bereits unterwegs, ich denke es liegt aber eher an der Ansteuerung==Denkfehler) Danke Oekel
Hab mir nun zum Testen diesen hier noch besorgt: https://learn.adafruit.com/adafruit-7-segment-led-featherwings/pinouts Laut Datenblat vertragt der HT16K33 5V. Im Shop steht aber etwas von 3.3V Brate ich mir dann die LEDs?
Danke für die diesmal ungewöhnlich niedrige Hilfestellung :P Auf den richtigen Pfad hat mich dann folgender Beitrag von Frank gebracht: Beitrag "Re: adafruit led backpack ht16k33" Basierend darauf habe ich folgende Anleitung geschrieben: http://www.mikrocontroller.net/articles/HT16K33_Schnelleinstieg Falls gewünscht kann DIESER ganze Thread gelöscht werden, da die Lösung ja nun im Wiki zu finden ist ;) Grüße Oekel
...ich glaube, ich bin auch nicht ganz da - habe eine CC 7 SEG Anzeige mit K an C0...4 und A an A0...8 angeschlossen - leider bleibt das Drecksding dunkel, COM klappt aber. Ich sehe auch die ~106 Hz Anzeige takt an den Pins, aber A wird nicht auf VDD gesetzt. -> Jmd eine Idee?
1 | #define LED 0xE0
|
2 | |
3 | void LED_init () { |
4 | |
5 | i2c_start_wait(LED+I2C_WRITE); |
6 | i2c_write(0x21); |
7 | i2c_write(0x81); |
8 | i2c_write(0xA0); |
9 | i2c_stop(); |
10 | |
11 | }
|
12 | |
13 | void LED_setbrt (char brt) { |
14 | |
15 | i2c_start_wait(LED+I2C_WRITE); |
16 | i2c_write(0xE0 | brt); |
17 | i2c_stop(); |
18 | |
19 | }
|
20 | |
21 | void LED_test () { |
22 | |
23 | char i; |
24 | |
25 | i2c_start_wait(LED+I2C_WRITE); |
26 | i2c_write(0x00); |
27 | |
28 | for(i=0; i<16; i++) { |
29 | |
30 | i2c_write(0xAA); |
31 | |
32 | }
|
33 | |
34 | i2c_stop(); |
35 | |
36 | }
|
(Die Fkt werden der Reihe nach in Main aufgerufen) Danke, Klaus.
...rästelhaft, es sieht so aus als wenn A0...15 nicht auf HIGH gehen, wenn man es erwartet. Ich sehe mit dem Oszi ansonsten alles so wie im DaBla angegeben, nur gehen die A nicht auf High (die C gehen auf low und dann auch High-Z). Auch die Keyscan Phase sieht man gut. EDIT: Modul mal gewechselt und nur eine LED dran - auch nix, selbes Problem. Gut...ich rästel mal weiter - bin mir sicher, dass das Problem vor dem Rechner sitzt. Klaus.
:
Bearbeitet durch User
SOLVED: Alter, man muss das Display nach dem (erstmaligen?) Übertragen von Daten nochmal neu EINSCHALTEN? Ja super...also reicht es nicht, das via "0x81" im INIT zu tun. Klaus.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.