Pages: 1 ... 9 10 [11] 12 13 14   Go Down
Author Topic: Daten speichern + 16x16 RGB-LED-Matrix ansteuern  (Read 16331 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab ich gemacht.
Ich hab bemerkt, dass wenn ich den Sketch uploade, das Kabel einmal raus nehme und wieder reinstecke,
nicht mehr die ganze Reihe leuchtet, allerdings dafür immer nur die erste LED der Reihe.
Die Spalte kann ich irgendwie nicht beeinflussen.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Was meint ihr?
Soll ich mal 3 TLCs, 2 Matrizen, 2 UDNs und 1 SR verkabeln?
Ich hab jetzt nämlich neue Steckbrücken bekommen.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So, ich habe jetzt mal 3 TLCs verbaut und jeweils die ersten 8 Channel (0-7) mit einer Farbe belegt.
TLC1: 0-7 Grün
TLC2: 0-7 Rot
TLC3: 0-7 Blau
Beim zweiten Zusammenbau ist mir aufgefallen, was der Fehler sein könnte:

Einst hat Megaionstrom geschrieben:
Quote
Arduino -> 74HC595
-------------------
A0        -> Pin 14
A1        -> Pin 11
D9        -> Pin 12

Ich benutze ja einen Mega. Wo sollen dann D9, A0 und A1 liegen.
Output 9 ist ja schon vom TLC belegt, und damals hab ich das wohl gar nicht bemerkt, weil ich glaub ich 74HC595-Pin12 an den analogen Eingang 9 geklemmt habe.
Also wo genau sollen die 3 obigen Pins am Mega angeschlossen werden und welchen Sketch soll ich nun benutzen?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sowohl der TLC als auf der 74HC595 werden an D9 angeschlossen !!!

A0, A1 ? Da wo die Analog Pins des Arduino Mega sind !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, ich werds mal später testen, Danke!
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also es leuchtet weiterhin die ganze 1 Reihe/Spalte blau,
wenn ich das USB-Kabel raus ziehe und wieder reinstecke leuchtet dann nur die erste LED der Reihe/Spalte,
und manchmal auch die ersten zwei, oder random irgendwelche.
Folgender Code wird benutzt:
Code:
#define  NUM_TLCS  3 // Hier Anzahl der verwendeten TLC5940 hinschreiben
#define  NUM_ROWS  8 // Anzahl der ROWS der Matrix
#define  NUM_COLUMNS 8 // An zahl der Columns der Matrix
#include "Tlc5940Mux.h"

volatile uint8_t isShifting;
uint8_t shiftRow;

                     
// SHIFT_DATA_PIN (PC0 is analog 0) = '595 SER pin (Pin 14)
#define SHIFT_DATA_PORT PORTC
#define SHIFT_DATA_PIN  PC0
#define SHIFT_DATA_DDR  DDRC
// SHIFT_CLK_PIN (PC1 is analog 1) = '595 SRCLK (Pin 11)
#define SHIFT_CLK_PORT  PORTC
#define SHIFT_CLK_PIN   PC1
#define SHIFT_CLK_DDR   DDRC
// '595 RCLK is hooked to tlc XLAT pin (Arduino digital Pin 9, 74HC595 Pin 12)

uint16_t Led_Red;
uint16_t Led_Green;
uint16_t Led_Blue;

static inline void
shift8_595_row(uint8_t row)
{
  // the output of the '595 for the selected row should be low, all others
  // high
  //uint8_t output = ~(1 << row);
  uint8_t output = (1 << row); // Eventuell beides mal probieren
  for (uint8_t bit = 0x80; bit; bit >>= 1) {
    if (bit & output) {
      SHIFT_DATA_PORT |= _BV(SHIFT_DATA_PIN);
    } else {
      SHIFT_DATA_PORT &= ~_BV(SHIFT_DATA_PIN);
    }   
    // pulse the '595 sclk
    SHIFT_CLK_PORT |= _BV(SHIFT_CLK_PIN);
    SHIFT_CLK_PORT &= ~_BV(SHIFT_CLK_PIN);
  }
}

ISR(TIMER1_OVF_vect)
{
  if (!isShifting) {
    disable_XLAT_pulses();
    isShifting = 1;
    sei();
    TlcMux_shiftRow(shiftRow);
    shift8_595_row(shiftRow);
    shiftRow++;
    if (shiftRow == NUM_ROWS) {
      shiftRow = 0;
    }
    enable_XLAT_pulses();
    isShifting = 0;
  }
}

void setup()
{
  SHIFT_DATA_DDR |= _BV(SHIFT_DATA_PIN);
  SHIFT_CLK_DDR  |= _BV(SHIFT_CLK_PIN);
  TlcMux_init();
}

void loop()
{
  Matrix_Pixel(0, 0, 0, 0, 255);
   //RandomColors(NUM_ROWS, NUM_COLUMNS, 150, 250);
   delay(250);
}

void RandomColors(uint8_t NumRow, uint8_t NumColumn, int Again, int Speed)
{
  byte Nr;
  uint8_t Row;
  uint8_t Column;
  for (Nr = 0; Nr < Again; Nr += 1)
  {
     for (Row = 0; Row < NumRow ; Row += 1)
     {
        for (Column = 0; Column < NumColumn; Column += 1)
        {
           if (Nr < (Again - 1))
           {
              Matrix_Pixel(Row, Column, random(255), random(255), random(255));
           }
             else
             {
                Matrix_Pixel(Row, Column, 0, 0, 0);
             }
        }
     }
     delay(Speed);
  }
}

void Matrix_Pixel(uint8_t Row, uint8_t Column, byte Red, byte Green, byte Blue)
{   
   Led_Red = map(Red, 0, 255, 0, 4095);
   Led_Green = map(Green, 0, 255, 0, 4095);
   Led_Blue = map(Blue, 0, 255, 0, 4095);
   TlcMux_set(Row, Column, Led_Green);
   TlcMux_set(Row, Column + 16, Led_Red / 1.8);
   TlcMux_set(Row, Column + 32, Led_Blue);

 
« Last Edit: August 23, 2012, 01:18:08 pm by Nathax » Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kopier mal die folgenden beiden Dateien in das Pinouts Verzeichnis deiner TLCMux Library !

Danach IDE neu starten !

* Arduino_Mega.h (2.63 KB - downloaded 12 times.)
* chip_includes.h (2.61 KB - downloaded 11 times.)
« Last Edit: August 23, 2012, 02:56:18 pm by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bringt leider auch nichts.
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Probier dies nun mal mit folgender Änderung in deinem Sketch aus !

Code:
#define  NUM_TLCS  3 // Hier Anzahl der verwendeten TLC5940 hinschreiben
#define  NUM_ROWS  8 // Anzahl der ROWS der Matrix
#define  NUM_COLUMNS 8 // An zahl der Columns der Matrix
#include "Tlc5940Mux.h"
#define __AVR_ATmega2560__

Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Leider keine Wirkung!
Edit: Hab folgendes Board: http://www.ebay.de/itm/SainSmart-MEGA-2560-ATMEGA-2560-AVR-Module-Board-Free-Cable-DE-shipping-/320858965905?pt=Wissenschaftliche_Ger%C3%A4te&hash=item4ab4af4791
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Megaionstrom und ich sind schon etwas weiter gekommen.
An meinem Uno klappt alles einwandfrei.
Muss wohl irgendwie an den PinMappings des Megas liegen.
Leider wissen wir/weiß ich nicht genau, was verändert werden muss, sowohl soft- als auch hardwareseitig,
damit es auch mit dem Mega klappt.
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habe mir das Pinout des Mega2560 nochmal angeschaut, vielleicht klappt es mit dieser Änderung im Sketch:

Code:
// SHIFT_DATA_PIN (PF0 is analog 0) = '595 SER pin
#define SHIFT_DATA_PORT PORTF
#define SHIFT_DATA_PIN  PF0
#define SHIFT_DATA_DDR  DDRF
// SHIFT_CLK_PIN (PF1 is analog 1) = '595 SRCLK
#define SHIFT_CLK_PORT  PORTF
#define SHIFT_CLK_PIN   PF1
#define SHIFT_CLK_DDR   DDRF
// '595 RCLK is hooked to tlc XLAT pin


Die analog Pins befinden sich beim Atmega328 bei PortC, beim Atmega2560 hingegen bei PortF !

Weiterhin gilt:
Arduino -> 74HC595
-------------------
A0        -> Pin 14
A1        -> Pin 11
D9        -> Pin 12
« Last Edit: August 26, 2012, 08:30:49 am by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry, aber da muss ich dich leider entäuschen, ich habe das bereits getestet, doch es funktioniert nicht.
Ich muss, wenn ich F nehme, Data und Clock an die analogen Eingänge 0 und 1 klemmen, oder?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Geht wie gesagt nicht.
Hast du sonst noch Ideen, was ich ändern könnte?

PS: Habe nicht den Arduino Mega R3 sondern einen Sainsmart Mega mit dem Atmega8U2 (anstelle des Atmega16U2).
Logged

Pages: 1 ... 9 10 [11] 12 13 14   Go Up
Jump to: