Arduino programm fehlermeldungen

Hallo

Ich habe ein Problem mit meinem 8x8 Matrix Display immer wen ich auf Programm testen gehe bekomme ich eine fehler Maldung immer ihr FrequencyTimer2::disable(); ich weis nicht was ich da tun muss
Der ganze Programmcode ist unten

Danke im Voraus :slight_smile:

 /*
 * Show messages on an 8x8 led matrix,
 * scrolling from right to left.
 *
 * Uses FrequencyTimer2 library to
 * constantly run an interrupt routine
 * at a specified frequency. This
 * refreshes the display without the
 * main loop having to do anything.
 *
 */

#include <FrequencyTimer2.h>

#define SPACE { \
    {0, 0, 0, 0, 0, 0, 0, 0},  \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0} \
}

#define H { \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}  \
}

#define E  { \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}  \
}

#define L { \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 1, 1, 0}  \
}

#define O { \
    {0, 0, 0, 1, 1, 0, 0, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 1, 0, 0, 0, 0, 1, 0}, \
    {0, 0, 1, 0, 0, 1, 0, 0}, \
    {0, 0, 0, 1, 1, 0, 0, 0}  \
}

byte col = 0;
byte leds[8][8];

// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17]= {-1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9,8, 7, 6};

// col[xx] of leds = pin yy on led matrix
int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[06],pins[11], pins[15], pins[16]};

// row[xx] of leds = pin yy on led matrix
int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1],pins[7], pins[2], pins[5]};

const int numPatterns = 6;
byte patterns[numPatterns][8][8] = {
  H,E,L,L,O,SPACE
};

int pattern = 0;

void setup() {
  // sets the pins as output
  for (int i = 1; i <= 16; i++) {
    pinMode(pins[i], OUTPUT);
  }

  // set up cols and rows
  for (int i = 1; i <= 8; i++) {
    digitalWrite(cols[i - 1], LOW);
  }

  for (int i = 1; i <= 8; i++) {
    digitalWrite(rows[i - 1], LOW);
  }

  clearLeds();

  // Turn off toggling of pin 11
  FrequencyTimer2::disable();
  // Set refresh rate (interrupt timeout period)
  FrequencyTimer2::setPeriod(2000);
  // Set interrupt routine to be called
  FrequencyTimer2::setOnOverflow(display);

  setPattern(pattern);
}

void loop() {
    pattern = ++pattern % numPatterns;
    slidePattern(pattern, 60);
}

void clearLeds() {
  // Clear display array
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      leds[i][j] = 0;
    }
  }
}

void setPattern(int pattern) {
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      leds[i][j] = patterns[pattern][i][j];
    }
  }
}

void slidePattern(int pattern, int del) {
  for (int l = 0; l < 8; l++) {
    for (int i = 0; i < 7; i++) {
      for (int j = 0; j < 8; j++) {
        leds[j][i] = leds[j][i+1];
      }
    }
    for (int j = 0; j < 8; j++) {
      leds[j][7] = patterns[pattern][j][0 + l];
    }
    delay(del);
  }
}

// Interrupt routine
void display() {
  digitalWrite(cols[col], LOW);  // Turn whole previous column off
  col++;
  if (col == 8) {
    col = 0;
  }
  for (int row = 0; row < 8; row++) {
    if (leds[col][7 - row] == 1) {
      digitalWrite(rows[row], LOW);  // Turn on this led
    }
    else {
      digitalWrite(rows[row], HIGH); // Turn off this led
    }
  }
  digitalWrite(cols[col], HIGH); // Turn whole column on at once (for equal lighting times)
}

ggg.ino (3.87 KB)

Hallo Marcel,

Programmcode dabei ist schonmal gut, aber man kann es noch besser machen. Bei welchem Testen kommt welche Fehlermeldung genau. Wie ist der genaue Wortlaut der Fehlermeldung, und was tust Du damit diese Fehlermeldung kommt.

Grüße,

Sven

Die Lib ist eigentlich unnötig. Wenn du alle x ms was machen willst, tut es dafür auch millis() oder micros() abzufragen

Ansonsten gibt es noch msTimer2 als Alternative.

Außerdem wäre nicht schlecht zu wissen, welchen Arduino Du verwendest.
Ich hoffe des weiteren, daß DU die Matrix nicht ohne Treiber an den Arduino angeschlossen hast.
Grüße Uwe

die Fehlermeldung kommt immer wen ich auf Verifizieren klicke und dan ist die zeile FrequencyTimer2::disable(); gelb markiert
und dan kommt die Fehlermeldung
8x8_RED_LED_Display.ino: In function 'void setup()':
8x8_RED_LED_Display:107: error: 'FrequencyTimer2' has not been declared
8x8_RED_LED_Display:109: error: 'FrequencyTimer2' has not been declared
8x8_RED_LED_Display:111: error: 'FrequencyTimer2' has not been declared

ich habe ein Arduino UNO
Ich habe schon damit Musik auf Diskettenlaufwerken gemacht
und wollte jetzt mal aus probieren was ich noch so damit machen kann

Marcel87:
8x8_RED_LED_Display:107: error: 'FrequencyTimer2' has not been declared

Die per include verwendete Library

#include <FrequencyTimer2.h>

dürfte nicht oder nicht richtig installiert sein.

Prüfe die Installation der FrequencyTimer2-Library!

Das mit der Library hätte ich jetzt auch vermutet. Wie man die installiert ist hier erklärt:

http://arduino.cc/de/Guide/Libraries

Grüße,

Sven

Hallo Sven
danke für deine hilfe aber kannst du mir noch einen link schicken ich finde den richtigen download einfach nicht
für Library ich habe nur dehn hier gefunden FrequencyTimer2 Library aber ich weiß nicht wie man den installiert bei dem link von dir wollen die dateien mit dem namen ArduinoParty.cpp und ArduinoParty.h ich habe aber FrequencyTimer2.cpp und FrequencyTimer2.h

Grüß
Marcel87

Zip Datei in den libraries Ordner im Arduino Verzeichnies entpacken und fertig.

Aber wie gesagt nicht nötig. Displays Multiplexen muss nicht super genau sein. Vielleicht wenn man noch zig andere Sachen macht und Code unterbrechen muss. Aber bei einer leeren Loop ist es Overkill.

Hallo

Danke :slight_smile: an alle die mir geholfen haben ich habe dank der hilfe von euch habe ich es hinbekommen mein problem zu lösen

Danke :slight_smile:

Marel87