<avr/pgmspace.h>

Hallo,

wo kann ich diese Bibliothek , als zip Datei herunterladen.

Wer kann mir helfen?

Danke Bernd

bbtkmd: Hallo,

wo kann ich diese Bibliothek , als zip Datei herunterladen.

Wer kann mir helfen?

Schon mal bei Github versucht ?

Die Datei steht in deiner Arduino Installation,

bei mir ist das C:\Programme (x86)\Arduino\hardware\tools\avr\avr\include\avr\pgmspace.h

Die ist Teil der AVR libc die bei der Arduino Software dabei ist. Der Header ist auch immer gleich eingebunden

Funktioniert nicht mit ESP, fals du das vorhast.

Danke an alle für die schnelle Antwort.

Ich habe die Datei am angegebenen Ort gefunden.

Ich will ein LED Display ansteuern und der Sketch bleibt immer an einer Stelle hängen (PROGMEM prog_uchar CH[]) . So habe ich vermutet, das diese Bibliothek fehlt.

include

include

PROGMEM prog_uchar CH[] = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !

Sorry ich meinte nicht LED Display, sondern LED Matrix!

bbtkmd: Ich will ein LED Display ansteuern und der Sketch bleibt immer an einer Stelle hängen (PROGMEM prog_uchar CH[]) . So habe ich vermutet, das diese Bibliothek fehlt.

Vorschlag: Du gibst uns den gesamen Sketch und die gesamten Fehlermeldungen und wir machen keine blöden Bemerkungen über Kristallkugeln. Wie findest Du das? Grüße Uwe

bbtkmd: Ich will ein LED Display ansteuern und der Sketch bleibt immer an einer Stelle hängen (PROGMEM prog_uchar CH[]) . So habe ich vermutet, das diese Bibliothek fehlt.

Was bedeutet für Dich "hängen bleiben"? Gibt es eine Fehlermeldung, wenn Du das Programm kompilieren willst, oder wird es kompiliert, aber nicht korrekt ausgeführt?

Mario (noch ohne Einsatz der Kristallkugel).

Okay, mit der Kristallkugel mußte ich erst mal überlegen....grins...

Anbei der Sketch, den ich gern ausprobieren möchte um die Matrix kennen zu lernen. Ich muß die Info aufspalten, da alles zu lang wird.

include

include

PROGMEM prog_uchar CH[] = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // ) 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // * 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // + 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // , 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // - 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // . 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // / 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // : 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ; 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // < 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // = 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // > 4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ? 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @ 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [ 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ] 3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat 4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _ 2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // ` 4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a 4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b 4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c 4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d 4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e 3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g 4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h 3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i 4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j 4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k 3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l 5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m 4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n 4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o 4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p 4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q 4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r 4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s 3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t 4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u 5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v 5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w 5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x 4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // { 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // | 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // } 4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~ };

int data = 8; // DIN pin of MAX7219 module int load = 9; // CS pin of MAX7219 module int clock = 10; // CLK pin of MAX7219 module

int maxInUse = 4; //change this variable to set how many MAX7219's you'll use

MaxMatrix m(data, load, clock, maxInUse); // define module

byte buffer[100];

// active sentenses char string1[] = " Hello, my name is ... "; char string2[] = " I am glad to show you my Arduino scrolling dot Matrix "; char string3[] = " using MAX7219 IC "; char string4[] = " hahaha "; char string5[] = " There you will find a lot of projects with Arduino. "; char string6[] = " =) ";

// just for tests char string7[] = " A B C D E F G H I J K L M N O P Q R S T U V X W Y Z "; char string8[] = " a b c d e f g h i j k l m n o p q r s t u v x w y z "; char string9[] = " 1 2 3 4 5 6 7 8 9 0 - = "; char string10[] = " ! @ # $ % ¨ & * ( ) _ + "; char string11[] = " ' , . ; ~ ] ´ [ | < > : ^ } ` { / ? ";

void setup(){ m.init(); // module initialize m.setIntensity(5); // dot matix intensity 0-15 Serial.begin(9600); // serial communication initialize }

void loop(){

// this is the code if you want to entering a message via serial console while (Serial.available() > 0){ byte c = Serial.read(); Serial.println(c, DEC); printCharWithShift(c, 100); } delay(100); m.shiftLeft(false, true);

/* // print the active sentences printStringWithShift(string1, 100); printStringWithShift(string2, 100); printStringWithShift(string3, 100); printStringWithShift(string4, 100); printStringWithShift(string5, 100); printStringWithShift(string6, 100); */

}

void printCharWithShift(char c, int shift_speed){ if (c < 64) return; c -= 64; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(64, 0, buffer); m.setColumn(64 + buffer[0], 0);

for (int i=0; i

void printStringWithShift(char* s, int shift_speed){ while (*s != 0){ printCharWithShift(*s, shift_speed); s++; } }

So und nun die Fehlermeldung:

Arduino: 1.8.0 (Windows 10), TD: 1.35, Board: "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\bernd\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\bernd\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries E:\Arduiono Sketch\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -ide-version=10800 -build-path C:\Users\bernd\AppData\Local\Temp\arduino_build_278822 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9 -prefs=runtime.tools.arduinoOTA.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.1.1 -verbose C:\Users\bernd\AppData\Local\Temp\Temp1_Matrix16x8-master(1).zip\Matrix16x8-master\MAX7219_8\MAX7219_8.ino C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\bernd\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\bernd\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries E:\Arduiono Sketch\libraries -fqbn=arduino:avr:pro:cpu=16MHzatmega328 -ide-version=10800 -build-path C:\Users\bernd\AppData\Local\Temp\arduino_build_278822 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9 -prefs=runtime.tools.arduinoOTA.path=C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.1.1 -verbose C:\Users\bernd\AppData\Local\Temp\Temp1_Matrix16x8-master(1).zip\Matrix16x8-master\MAX7219_8\MAX7219_8.ino Using board 'pro' from platform in folder: C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18 Using core 'arduino' from platform in folder: C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18 WARNUNG: Kategorie 'Device Control, Signal Input/Output' in der Bibliothek rc-switch ist ungültig und wird auf 'Uncategorized' festgelegt Detecting libraries used... "C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino" "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs" "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\sketch\MAX7219_8.ino.cpp" -o "nul" "C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino" "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs" "-IE:\Arduiono Sketch\libraries\MaxMatrix" "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\sketch\MAX7219_8.ino.cpp" -o "nul" "C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino" "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs" "-IE:\Arduiono Sketch\libraries\MaxMatrix" "E:\Arduiono Sketch\libraries\MaxMatrix\MaxMatrix.cpp" -o "nul" Generating function prototypes... "C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino" "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs" "-IE:\Arduiono Sketch\libraries\MaxMatrix" "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\sketch\MAX7219_8.ino.cpp" -o "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\preproc\ctags_target_for_gcc_minus_e.cpp" "C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\preproc\ctags_target_for_gcc_minus_e.cpp" Sketch wird kompiliert... "C:\Users\bernd\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino" "-IC:\Users\bernd\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs" "-IE:\Arduiono Sketch\libraries\MaxMatrix" "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\sketch\MAX7219_8.ino.cpp" -o "C:\Users\bernd\AppData\Local\Temp\arduino_build_278822\sketch\MAX7219_8.ino.cpp.o" MAX7219_8:24: error: 'prog_uchar' does not name a type

PROGMEM prog_uchar CH[] = {

^

C:\Users\bernd\AppData\Local\Temp\Temp1_Matrix16x8-master(1).zip\Matrix16x8-master\MAX7219_8\MAX7219_8.ino: In function 'void printCharWithShift(char, int)':

MAX7219_8:182: error: 'CH' was not declared in this scope

memcpy_P(buffer, CH + 7*c, 7);

^

Bibliothek MaxMatrix im Ordner: E:\Arduiono Sketch\libraries\MaxMatrix (legacy) wird verwendet exit status 1 'prog_uchar' does not name a type

Fehler beim Herunterladen von http://arduino.esp8266.com/stable/package_esp8266com_index.json

Es wäre schön, wenn ihr mir helfen könnt.

Im voraus vielen Dank

Bernd

Das kommt davon wenn du irgendwo einen Uralt Sketch ausgräbst. prog_uchar ist "deprecated". Verwende einfach die normalen Datentypen. Außerdem müssen Daten im PROGMEM immer const sein

Aber:

Fehler beim Herunterladen von http://arduino.esp8266.com/stable/package_esp8266com_index.json

Falls du wirklich einen ESP8266 hast (oben steht dagegen wieder ein AVR): Bei den ESPs gibt es die ganze PROGMEM Sache nicht. Das ist eine andere Prozessor-Architektur. Auf den AVRs ist das wegen deren Harvard-Architektur nötig (Flash und RAM sind getrennte Adressräume).

Außerdem hast du da auch generell viel mehr Speicher. Da muss man nicht darum kämpfen Bytes im Flash zu lassen, weil man nur 2k oder 6k RAM hat. Also "normal" programmieren und gut ist

ErsetzePROGMEM prog_uchar CH[] = {durchPROGMEM const unsigned char CH[] = {.

Hallo Serenifly und Whandall,

danke für eure schnelle Hilfe.

Serenifly, wie kommst du auf den ESP8266? Ich habe eine 8x8 Matrix „MAX7219“ mit den LED‘ 1088AS. Die 4 sind schon in Reihe miteinander verbunden. Diese würde ich gern kennen lernen. Wenn du ein einfachen Sketch hast, der dies ermöglicht, würde ich mich sehr darüber freuen.

Whandall, danke für deinen Tipp, er hat fast funktioniert. Ich kann den Sketch auf den Arduino laden und die Buchstaben laufen auch. Dieser Sketch muss allerdings für 4 Matrix geschrieben worden sein, die senkrecht stehen. Mein Modul ist vom Hause aus bereits als ein Teil verlötet. So das jede Matrix die Zeichen darstellt, aber um 90 Grad gedreht. Vielleicht kannst du mir noch einen Tipp geben um dies zu ändern.

Bernd

Jetzt stellst du also fest, dass die ausgesuchte Library nicht das leistet, was du brauchst und erwartest dass wir jetzt für dich herausfinden warum und das entsprechend ändern?

Scherzkeks. ;)

Schau doch mal ob diese aktuellere Library Scrolling LED matrix display - Parola for Arduino nicht direkt funktioniert. Der Author ist auch recht aktiv hier im Forum.

https://github.com/MajicDesigns/MD_Parola