INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fehlermeldung beim kompilieren
13.09.2018, 17:25
Beitrag #1
Fehlermeldung beim kompilieren
Hallo miteinander, ich bin der Cotti, bin neu hier und möchte Euch mal mit folgendem Problem belästigen.

Ich bin im Netz auf eine kleine Bastelei gestoßen, die sich Weihnachtsstern nennt (http://www.elektronik-labor.de/Arduino/W...stern.html). Ich wollte es mal ausprobieren und hab mir die Schaltung mal auf meinem Steckbrett zusammengebastelt.
Den sketch habe ich 1 zu 1 aus der Webseite entnommen und geladen, aber beim Hochladen/Kompilieren bekomme ich immer die Fehlermeldung
variable 'patternDemo' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
variable 'pattern0' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usw.
Hier mal der komplette Sketch:
Code:
#include <avr/pgmspace.h>

// LEDs:
// LED 1-6: PORTC.0-PORTC.5
// LED 7-14: PORTD.0-PORTD.7
// LED 15-20: PORTB.0-PORTB.5


struct STR_PATTERN
{  // Definition der Struktur eines Arrays für eine Leuchtmustersequenz
   unsigned char leds_1_6;
   unsigned char leds_7_14;
   unsigned char leds_15_20;
   unsigned int  duration;
};


// ein Array namens patternDemo sieht z.B. folgendermaßen aus:
struct STR_PATTERN patternDemo[] PROGMEM =
{
// Start: ab der nächsten Zeile beginnt die Leuchtmustersequenz, die mit dem PC-Tool erstellt und aus der Textdatei kopiert wurde
0x01,0x00,0x00,100,
0x03,0x00,0x00,100,
// Ende: hier endet die Leuchtmustersequenz, die mit dem PC-Tool erstellt wurde
// die nächste Zeile wird als Endekennung des Arrays benötigt und darf nicht gelöscht werden
0xFF,0xFF,0xFF,0  // end marker, do not remove
};



struct STR_PATTERN pattern0[] PROGMEM =
{
0x01,0x00,0x00,100,
0x02,0x00,0x00,100,
0x04,0x00,0x00,100,
0x08,0x00,0x00,100,
0x10,0x00,0x00,100,
0x20,0x00,0x00,100,
0x00,0x01,0x00,100,
0x00,0x02,0x00,100,
0x00,0x04,0x00,100,
0x00,0x08,0x00,100,
0x00,0x10,0x00,100,
0x00,0x20,0x00,100,
0x00,0x40,0x00,100,
0x00,0x80,0x00,100,
0x00,0x00,0x01,100,
0x00,0x00,0x02,100,
0x00,0x00,0x04,100,
0x00,0x00,0x08,100,
0x00,0x00,0x10,100,
0x00,0x00,0x20,100,
0x00,0x00,0x00,100,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};


struct STR_PATTERN pattern1[] PROGMEM =
{
0x00,0x00,0x00,100,
0x01,0x00,0x00,100,
0x03,0x00,0x00,100,
0x07,0x00,0x00,100,
0x0F,0x00,0x00,100,
0x1F,0x00,0x00,100,
0x3F,0x00,0x00,100,
0x3F,0x01,0x00,100,
0x3F,0x03,0x00,100,
0x3F,0x07,0x00,100,
0x3F,0x0F,0x00,100,
0x3F,0x1F,0x00,100,
0x3F,0x3F,0x00,100,
0x3F,0x7F,0x00,100,
0x3F,0xFF,0x00,100,
0x3F,0xFF,0x01,100,
0x3F,0xFF,0x03,100,
0x3F,0xFF,0x07,100,
0x3F,0xFF,0x0F,100,
0x3F,0xFF,0x1F,100,
0x3F,0xFF,0x3F,100,
0x3F,0xFF,0x3F,100,
0x3E,0xFF,0x3F,100,
0x3C,0xFF,0x3F,100,
0x38,0xFF,0x3F,100,
0x30,0xFF,0x3F,100,
0x20,0xFF,0x3F,100,
0x00,0xFF,0x3F,100,
0x00,0xFE,0x3F,100,
0x00,0xFC,0x3F,100,
0x00,0xF8,0x3F,100,
0x00,0xF0,0x3F,100,
0x00,0xE0,0x3F,100,
0x00,0xC0,0x3F,100,
0x00,0x80,0x3F,100,
0x00,0x00,0x3F,100,
0x00,0x00,0x3E,100,
0x00,0x00,0x3C,100,
0x00,0x00,0x38,100,
0x00,0x00,0x30,100,
0x00,0x00,0x20,100,
0x00,0x00,0x00,100,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};

struct STR_PATTERN pattern2[] PROGMEM =
{
0x3C,0x01,0x00,300,
0x00,0x1F,0x00,300,
0x00,0xF0,0x01,300,
0x00,0x00,0x1F,300,
0x07,0x00,0x30,300,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};


struct STR_PATTERN pattern3[] PROGMEM =
{
0x11,0x44,0x04,300,
0x33,0xCC,0x0C,300,
0x37,0xDD,0x1D,300,
0x3F,0xFF,0x3F,300,
0x00,0x00,0x00,300,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};


struct STR_PATTERN pattern4[] PROGMEM =
{
0x11,0x44,0x04,300,
0x22,0x88,0x08,300,
0x04,0x11,0x11,300,
0x08,0x22,0x22,300,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};

struct STR_PATTERN pattern5[] PROGMEM =
{
0x00,0x00,0x00,300,
0x11,0x44,0x04,300,
0x3B,0xEE,0x2E,300,
0x3F,0xFF,0x3F,300,
0x3F,0xFF,0x3F,300,
0x3B,0xEE,0x2E,300,
0x11,0x44,0x04,300,
0x00,0x00,0x00,300,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};


struct STR_PATTERN patternBlink[] PROGMEM =
{
0x3F,0xFF,0x3F,300,
0x00,0x00,0x00,300,

0xFF,0xFF,0xFF,0  // end marker, do not remove
};


void ledPattern(unsigned char led_1_6, unsigned char led_7_14, unsigned char led_15_20)
{
   PORTC = led_1_6;
   PORTD = led_7_14;
   PORTB = led_15_20;
}


void displayPatternWithDuration(struct STR_PATTERN * PROGMEM pattern)
{
   unsigned int j = 0;

   while(pgm_read_byte(&pattern[j].leds_1_6) != 0xFF)
   {
      ledPattern(pgm_read_byte(&pattern[j].leds_1_6), pgm_read_byte(&pattern[j].leds_7_14), pgm_read_byte(&pattern[j].leds_15_20));
      delay(pgm_read_word(&pattern[j].duration));
      j++;
   }
}



void clearPattern(void)
{
   PORTC = 0;
   PORTD = 0;
   PORTB = 0;
}


void setup()
{    
    PORTB = 0;
    DDRB |= 0x3F;
    PORTD = 0;
    DDRD |= 0xFF;
    PORTC = 0;
    DDRC |= 0x3F;
}



void loop()
{
   unsigned char i;

   clearPattern();

   displayPatternWithDuration(pattern0);

   for(i = 0; i < 3; i++)
   {
      displayPatternWithDuration(patternBlink);
   }

   displayPatternWithDuration(pattern1);

   for(i = 0; i < 3; i++)
   {
      displayPatternWithDuration(pattern2);
   }

   for(i = 0; i < 3; i++)
   {
      displayPatternWithDuration(pattern3);
   }

   for(i = 0; i < 3; i++)
   {
      displayPatternWithDuration(pattern4);
   }

   for(i = 0; i < 3; i++)
   {
      displayPatternWithDuration(pattern5);
   }

}

Statt des UNO verwende ich zwar einen Arduino NANO ATmega 328P, aber ich denke daran kann es nicht liegen, denn selbst wenn ich unter ATmega 168 oder unter UNO kompiliere erhalte ich dieselbe Fehlermeldung.
Ich hoffe, irgend jemand kann mir helfen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.09.2018, 17:47
Beitrag #2
RE: Fehlermeldung beim kompilieren
Die Bastelei ist wohl schon etwas älter und wurde mit einer älteren IDE Version erstellt.
Bei den neueren IDE Version hat sich die Schreibweise etwas geändert.
Ersetze einfach überall
Code:
struct
durch
Code:
const struct

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.09.2018, 18:32
Beitrag #3
RE: Fehlermeldung beim kompilieren
Hab den Sketch grad mal entsprechend überarbeitet und kompiliert.
Super, keine Fehlermeldung mehr.
Werd' es morgen mal am Board testen (das liegt leider auf Arbeit (ich bastel dort in der Pause gerne mal was rum)).
Erstmal Danke für die schnelle Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.09.2018, 18:57
Beitrag #4
RE: Fehlermeldung beim kompilieren
Ok, und danke für die Rückmeldung.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.09.2018, 14:01
Beitrag #5
RE: Fehlermeldung beim kompilieren
Hab das Ganze eben mal getestet, läuft super.Jetzt kann ich mich daran machen, die Leuchtsequenzen zu ändern.Ich möchte die LED's nämlich auf einen kleinen Tannenbaum montieren und dafür die Leuchtmuster entsprechend anpassen.
Kleiner Tipp für alle, die das evtl. auch mal nachbauen wollen.Ich weiß nicht, was für LED's in dem Beispiel verwendet wurden, aber für stinknormale LED's ist der Vorwiderstand von 1,5 kΩ einfach zu groß.220 Ω sind völlig ausreichend.
Und was den Sketch angeht:
In Zeile 9
Code:
#include <avr/pgmspace.h>

// LEDs:
// LED 1-6: PORTC.0-PORTC.5
// LED 7-14: PORTD.0-PORTD.7
// LED 15-20: PORTB.0-PORTB.5


struct STR_PATTERN
{  // Definition der Struktur eines Arrays für eine Leuchtmustersequenz
   unsigned char leds_1_6;
   unsigned char leds_7_14;
   unsigned char leds_15_20;
   unsigned int  duration;
};
muß
Code:
struct STR_PATTERN
so stehen bleiben, also NICHT
Code:
const struct STR_PATTERN
Und nochmal Danke für die schnelle Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Problem beim Kompilieren Mega2560 und Dallastemp sepp01 2 84 Gestern 11:33
Letzter Beitrag: sepp01
  Roboterbein, Probleme beim Methoden programmieren Thundernici 3 146 22.09.2018 20:25
Letzter Beitrag: Tommy56
  Mit 022 compilierter Sketch - wie kompilieren mit akt. Version? DL1AKP 4 250 15.08.2018 12:49
Letzter Beitrag: DL1AKP
  Reset beim Arduino Franz54 14 1.642 04.08.2018 10:20
Letzter Beitrag: hotsystems
  Probleme beim Hochladen eines Sketches Thandor 8 1.540 08.06.2018 13:19
Letzter Beitrag: Thandor
  Hilfe bei Fehlermeldung TroyPan 3 610 23.03.2018 23:38
Letzter Beitrag: Tommy56
  Hilfe beim skript Devtris 24 2.308 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 2.670 10.03.2018 13:36
Letzter Beitrag: hotsystems
Question Arduino Due nach dem 2. Start Fehlermelddung beim flashen juergen001 2 569 03.03.2018 09:07
Letzter Beitrag: juergen001
  Plötzliche Fehlermeldung: avrdude: stk500_recv(): programmer is not responding Flap 10 2.151 02.03.2018 17:52
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste