Go Down

Topic: Arduino uno 8x8 LED max7219 (Read 4943 times) previous topic - next topic

Kunde

Finde hier aber nichts über Fonts.
Wenn ich in der ino die Fonts ändere werden nur 4 Zeilen Breite Zeichen gesetzt.
Die null zb.   Am Anfang 8 und dann 8x b11111111, eigentlich müsste dann ja alle LEDs an gehen. Aber es fehlen am Anfang und am Ende 2 Zeilen.
In der maxmatrix ist noch eine Excel Tabelle. Ist die für die volle Breite zuständig?

Kunde

So nach 5 Stunden bin ich immer noch nicht weiter gekommen. Die Schriftgröße wird durch irgendein Befehl nicht größer dargestellt. Habe nur gefunden das ich in der ersten Reihe mit der Zahl beginne und das die volle Höhe dargestellt wird. Bekomme es aber nicht breiter wie 4-5 Zeilen.

agmue

So nach 5 Stunden bin ich immer noch nicht weiter gekommen.
Schade  ::)

Ich gehe mal davon aus, Du möchtest auf der 8x8 Matrix auch 8x8 Buchstaben darstellen?

Der zweite Parameter displayChar('0', 2); gibt die Startspalte an. Setz den mal auf Null
displayChar('0', 0);, dann steht die Null linksbündig, richtig?
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Kunde

Richtig. Das hatte ich eben auch raus getüftelt. Aber die breite des Zeichens bekomme ich nicht breiter.
Ich habe gedacht das wir im sketch sagen wie groß oder klein der Buchstabe zu sein hat. Habe ich da was falsch verstanden?
Ich denke es liegt daran das es mal ein Laufschrift sketch war. Und irgend ein Befehl noch sagt das der Buchstabe nicht breiter wie 5 zeilen sein darf.
Kann das sein

agmue

#49
Nov 17, 2015, 09:22 pm Last Edit: Nov 17, 2015, 09:23 pm by agmue
Der Font ist 5x8 (BxH) proportinal, also maximal 5 Punkt breit. Ein 8x8 Font geht aber auch:
Code: [Select]

#include <MaxMatrix.h>
#include <avr/pgmspace.h>
const byte maxInUse = 1;        // Anzahl der MAX7219-Anzeigen (8x8-Matrix)
const byte DIN = 8;   // verbunden mit DIN
const byte CS  = 9;   // verbunden mit CS,
const byte CLK = 10;  // verbunden mit CLK
MaxMatrix m(DIN, CS, CLK, maxInUse);

const unsigned char CH[] PROGMEM = {
  B00000000, B00000000, B00111110, B01000001, B01000001, B00111110, B00000000, B00000000, // 0
  B00000000, B00000000, B01000010, B01111111, B01000000, B00000000, B00000000, B00000000, // 1
  B00000000, B00000000, B01100010, B01010001, B01001001, B01000110, B00000000, B00000000, // 2
  B00000000, B00000000, B00100010, B01000001, B01001001, B00110110, B00000000, B00000000, // 3
  B00000000, B00000000, B00011000, B00010100, B00010010, B01111111, B00000000, B00000000, // 4
  B00000000, B00000000, B00100111, B01000101, B01000101, B00111001, B00000000, B00000000, // 5
  B00000000, B00000000, B00111110, B01001001, B01001001, B00110000, B00000000, B00000000, // 6
  B00000000, B00000000, B01100001, B00010001, B00001001, B00000111, B00000000, B00000000, // 7
  B00000000, B00000000, B00110110, B01001001, B01001001, B00110110, B00000000, B00000000, // 8
  B00000000, B00000000, B00000110, B01001001, B01001001, B00111110, B00000000, B00000000, // 9
  B11111111,
  B10000001,
  B11010001,
  B10000001,
  B10000001,
  B10000001,
  B10000001,
  B11111111, // :
};

byte sprite[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
byte helligkeit = 0;    // Helligkeit der Matrix 0 - 15, dunkel - hell
byte blitz = 15;    // Helligkeit der Matrix bei Gangwechsel

int Speed;
int Gear;
int Rpm;
int RpmLeds;
int RpmMax = 8000;
int ShiftPoint = 4000;
int LimitRange = 0;
int UnderShiftPoint;
int OverShiftPoint;
int OverShift;
int UnderShift;
int buttonCheck = 1;
int bufferArray[12];
char zeichenAlt;

void setup() {
  Serial.begin(9600);
  m.init();
  m.setIntensity(helligkeit);
  m.clear();
  displayChar(':');
  Serial.println("Bitte Wert 012345678901 eingeben!");
  Serial.println("           000000G50000");
}

void loop() {
  if (Serial.available() == 12)  {
    int i;
    for (i = 0; i < 12; i = i + 1) { // read and label each byte.
      bufferArray[i] = Serial.read();
    }
    if (bufferArray[6] == 'G') {
        displayChar(bufferArray[7]);
    }
    if (bufferArray[7] != zeichenAlt){
        m.setIntensity(blitz);
        delay(5);
        m.setIntensity(helligkeit);
        zeichenAlt = bufferArray[7];
    }
  }
}

void displayChar(byte zeichen) {
  memcpy_P(sprite + 2, CH + (zeichen - 48) * 8, 8);
  sprite[0] = 8;
  sprite[1] = 8;
  m.clear();
  m.writeSprite(0, 0, sprite);
}
Ich habe die Null am Anfang durch einen umrahmten Doppelpunkt ersetzt. Beim Doppelpunkt habe ich die Bytes untereinandergeschrieben, wenn Du den Kopf nach rechts neigst, erkennst Du das Zeichen. Links ist also unten.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Kunde


Habe mit der 0 heute einen test gemacht.
Da hatte ich 8 x b11111111 rein geschrieben. Es wurden aber nur 5 volle zeilen aber 8 volle Spalten angezeigt.
Ah ich glaube ich habe meinen Fehler erkannt.
Bei void displayChar hatte ich alles auf den alten Werten gelassen.
Ich bin ein hoffnungsloser Fall.
Werde es morgen testen.
Dank dir.
Schönen Abend noch

Kunde

Hat mir keine Ruhe gelassen. Gerade noch getestet. 1a super
Danke danke danke

agmue

#52
Nov 18, 2015, 06:13 pm Last Edit: Nov 18, 2015, 06:13 pm by agmue
Danke danke danke
Bitte gerne   :) Hast Du eigentlich den Schaltblitz entdeckt?
Gibt es ein deutsches tutorial was ich mir durchlesen kann? Was für meine Bedürfnisse ausreicht?
Da ich nicht weiß, was Du schon kannst, kann ich Deine Bedürfnisse nicht gut einschätzen. Außerdem ist natürlich die Frage, wo Du hinwillst. Wenn Du nach einer deutschsprachigen Seite Ausschau hälst, fällt mir http://funduino.de/ ein, da habe ich begonnen. Da auch ich deutsch Texte verfasse, weise ich mal ganz unbescheiden auf Anleitung Ein Endlicher Automat entsteht hin, da ein endlicher Automat (Ablaufsteuerung) und die Verwendung von millis() mir schon manche Aufgabe gelöst hat.

Letztlich bleiben noch Bücher, die bei mir allerdings eher ein tristes Dasein fristen. Die Leseprobe von Die elektronische Welt mit Arduino entdecken hat mir gefallen.
So dann nochmal tausendfachen Dank, ich weiß nicht ob ich das jemals wieder gut machen kann.
Helfe, wie Dir geholfen wurde!
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Kunde

ja schaltblitz habe ich gefunden .er funktioniert auch aber dafür schaltet der gang nicht mehr hoch.
habe nun ein so weit fertigen sketch. habe den blitz vorerst einmal rausgenommen. damit ich die gänge in doppelter matrix testen kann.das ist nun mit beigefügten sketch 1a
der schaltblitz blitzt wenn ich schalte, aber es wäre cool wenn er bei ereichter drehzahl blitzt.

dann habe ich mir mal dein sketch genommen den mit dem anderen zusammengefügt hast, da bekomme ich immer fehlermeldungen:
Arduino: 1.6.4 (Windows 8.1), Platine: "Arduino Uno"

Test_Forum.ino: In function 'void loop()':
Test_Forum:212: error: expected initializer before 'if'
Test_Forum:296: error: expected '}' at end of input
Test_Forum:296: error: expected '}' at end of input
Test_Forum:296: error: expected '}' at end of input
Test_Forum:296: error: expected '}' at end of input
expected initializer before 'if'

habe deinen sketch genommen von post 41.

 

agmue

habe deinen sketch genommen von post 41.
Ich auch und bekomme mit IDE 1.6.5
Der Sketch verwendet 10.796 Bytes (4%) des Programmspeicherplatzes. Das Maximum sind 253.952 Bytes.
Globale Variablen verwenden 539 Bytes (6%) des dynamischen Speichers, 7.653 Bytes für lokale Variablen verbleiben. Das Maximum sind 8.192 Bytes.

als Meldung.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Kunde

Also soll ich mir mal 1.6.5 drauf machen. Und dann funktioniert es?

Kunde

Dank dir erstmal für deine hilfe. Bin jetzt erst mal 2 Wochen in Urlaub. Melde mich dann nochmal wenn ich nicht weiter weiß.

agmue

Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Go Up