Servo und Receiver PWM Tester - Arduino LCD 4884 shield

HeinMuck

Neuer Benutzer
#24
Hi Lars,

ich bin ein absoluter Newbie was Arduino und C angeht. Aber dein Projekt hätte ich schon gerne nachgebaut, vor allem wenn ich hier lese, wie einfach das geht.
Habe beim compilieren nur ein Problem - es gibt eine Fehlermeldung:

In file included from E:\PROGRAMME\ARDUINO\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
from E:\PROGRAMME\ARDUINO\SKETCHES\libraries\LCD4884\LCD4884.h:22,
from E:\PROGRAMME\ARDUINO\SKETCHES\libraries\LCD4884\LCD4884.cpp:18:
E:\PROGRAMME\ARDUINO\SKETCHES\libraries\LCD4884\font_6x8.h:6:29: error: variable 'font6_8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
unsigned char font6_8[][6] PROGMEM =
^
E:\PROGRAMME\ARDUINO\SKETCHES\libraries\LCD4884\font_big.h:9:39: error: variable 'big_number' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
unsigned char big_number[13][3][16] PROGMEM = {
^
Fehler beim Kompilieren.
Habe das LCD4884 auf einen Uno gesteckt und kann leider nix probieren.
Wäre nett, wenn du mir auf die Sprünge helfen könntest.

Grüße,
Stephan

Nachtrag: ändert man unsigned char in const char, dann gibt es weitere Fehler aus der eeprom.h
Da steige ich beim besten Willen nicht mehr durch.
Mit anderen Sketches läuft es ohne jedwede Änderungen an den .h Dateien, allerdings ohne eeprom.h
 
Zuletzt bearbeitet:

HeinMuck

Neuer Benutzer
#26
Hi Lars,

genau, ich nutze ebenfalls die original Arduino Software, letzte Version 1.6.4.

Deinen Link hatte ich gestern bereits gefunden und habe das unsigned in const geändert. Daraufhin maulte der Compiler dann die eeprom.h an. Die Fonts liefen durch.
Ich kann mir die Fehler nicht erklären, da ich den Sketch nicht abgetippt sondern kopiert habe. Andere hatten diese Probleme nicht, insofern wundert mich das.
Aber nochmal zum mitschreiben: Dein Sketch setzt sich aus mehreren Teilen zusammen, wird quasi in ein File zusammenkopiert und dann compiliert, richtig?
Eingestellt ist der UNO auf COM7(USB).

Auf http://www.arduinospielwiese.de/ habe ich diesen Sketch gefunden:
Code:
/*
  Joystick
  Library LCD4884 notwendig
  www.arduinospielwiese.de
*/
 
#include "LCD4884.h"

int Wertneu=0, Wertalt=100;
char string[10];

 
void setup()
{
  lcd.LCD_init();
  lcd.LCD_clear();
  lcd.LCD_write_string(10, 0, "Joystick:", MENU_NORMAL);
}
 

void loop()
{
   Wertneu = analogRead(A0)/10; //Durch 10, damit's weniger "wackelt"

  /*
    //Analogwerte bei mir:
      //links: 0
      //gedrückt: 141
      //unten: 324
      //rechts:502
      //oben: 740
      //unbetätigt: 1023
 
      itoa(Wertneu, string, 10);
      lcd.LCD_write_string(15, 0, string, MENU_NORMAL);
  */
  
   if (Wertneu != Wertalt)
   {
     lcd.LCD_write_string(10, 2, "           ", MENU_NORMAL);
    
     if ( Wertneu < 10)                    lcd.LCD_write_string(10, 2, "links      ", MENU_NORMAL);
     if ((Wertneu > 10) && (Wertneu < 20)) lcd.LCD_write_string(10, 2, "gedrueckt  ", MENU_NORMAL);
     if ((Wertneu > 20) && (Wertneu < 40)) lcd.LCD_write_string(10, 2, "unten      ", MENU_NORMAL);
     if ((Wertneu > 40) && (Wertneu < 60)) lcd.LCD_write_string(10, 2, "rechts     ", MENU_NORMAL);
     if ((Wertneu > 60) && (Wertneu < 80)) lcd.LCD_write_string(10, 2, "oben       ", MENU_NORMAL);
     if ( Wertneu > 80)                    lcd.LCD_write_string(10, 2, "unbetaetigt", MENU_NORMAL);
  
     Wertalt = Wertneu;
     //delay(100);
    
   }
}
Den habe ich mir zu Übungszwecken noch modifiziert und von einer RTC die Uhrzeit ausgelesen und dargestellt.
Läuft einwandfrei. Warum klappt das nicht mit deinem Sketch? Die Libraries sind doch die gleichen...

Grüße,
Stephan
 

HeinMuck

Neuer Benutzer
#27
Wenn ich die LCD4884.h von unsigned char auf const char umgestellt habe, kommen folgende Fehlermeldungen:
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:40:9: error: redefinition of 'uint8_t EEPROMClass::read(int)'
uint8_t EEPROMClass::read(int address)
^
In file included from E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:26:0:
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.h:120:13: error: 'uint8_t EEPROMClass::read(int)' previously defined here
uint8_t read( int idx ) { return EERef( idx ); }
^
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:45:6: error: redefinition of 'void EEPROMClass::write(int, uint8_t)'
void EEPROMClass::write(int address, uint8_t value)
^
In file included from E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:26:0:
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.h:121:10: error: 'void EEPROMClass::write(int, uint8_t)' previously defined here
void write( int idx, uint8_t val ) { (EERef( idx )) = val; }
^
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:50:13: error: redefinition of 'EEPROMClass EEPROM'
EEPROMClass EEPROM;
^
In file included from E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.cpp:26:0:
E:\PROGRAMME\ARDUINO\hardware\arduino\avr\libraries\EEPROM\EEPROM.h:145:20: error: 'EEPROMClass EEPROM' previously declared here
static EEPROMClass EEPROM;
^
Fehler beim Kompilieren.
Macht es Sinn, wenn du deine dazugehörigen Files zipst und mir schickst?

Grüße,
Stephan
 

Airpac

I'll be watching you ...
#28
Geschrieben habe ich es mit der 1.56 (Version steht glaube im ersten Post) vielleicht liegt es daran. Manchmal ändern sich Commands.

Das Sketch besteht aus dem Hauptsketch und den Tab-Sketchen. Man kann um den Code übersichtlicher zu gestalten, rechts oben an dem Arduino-Programmierfenster im blauen Horizontalstreifen auf den "Pfeil runter" klicken und neue Sheets einfügen.

Beim Kompilieren werden dann immer automatisch alles Sketche übertragen, wenn es funktioniert ...
 

HeinMuck

Neuer Benutzer
#29
Hi Lars,

es läuft!!!!!!!!

Habe mir die 1.5.7er Umgebung installiert und es gab beim compilieren keine Fehler, wie du vermutet hast.

Danke!

Grüße,
Stephan
 
#32
Sowohl der hier veröffentlichte Arduino-Code ist veraltet, als auch die LCD-lib.
Wconstanst.h muss gestrichen werden und die üblichen Compiler_Mimosen ab 1.5.8 eingepflegt werden, z.B. const...
 

pcpro

Neuer Benutzer
#33
Sowohl der hier veröffentlichte Arduino-Code ist veraltet, als auch die LCD-lib.
Wconstanst.h muss gestrichen werden und die üblichen Compiler_Mimosen ab 1.5.8 eingepflegt werden, z.B. const...
Hallo,

ich würde den Servotester gerne benutzen, aber leider bekomme ich beim Überprüfen des Codes schon eine Fehlermeldung.

Könnte mir bitte jemand dabei helfen den Code auf den neusten Stand zu bringen, ich habe leider wenig bis keine Ahnung davon. Ich benutze das Sainsmart und ein LCD4884 Shield.

Danke
 

pcpro

Neuer Benutzer
#36

Arduino: 1.8.1 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\Ronald\Desktop\Servotester Arduino\servotester_final_mit_lcd_4884_shield_012__beta_variable_border\servotester_final_mit_lcd_4884_shield_012__beta_variable_border\servotester_final_mit_lcd_4884_shield_012__beta_variable_border.ino:30:21: fatal error: LCD4884.h: No such file or directory

#include <LCD4884.h>

^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
 

pcpro

Neuer Benutzer
#37
Arduino: 1.5.7 (Windows 7), Board: "Arduino Uno"

In file included from C:\Users\Ronald\Desktop\Servotester Arduino\arduino-1.5.7-windows\arduino-1.5.7\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
from C:\Users\Ronald\Documents\Arduino\libraries\LCD4884\LCD4884.h:22,
from C:\Users\Ronald\Documents\Arduino\libraries\LCD4884\LCD4884.cpp:18:
C:\Users\Ronald\Documents\Arduino\libraries\LCD4884\font_6x8.h:6:29: error: variable 'font6_8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
unsigned char font6_8[][6] PROGMEM =
^
C:\Users\Ronald\Documents\Arduino\libraries\LCD4884\font_big.h:9:39: error: variable 'big_number' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
unsigned char big_number[13][3][16] PROGMEM = {
^

Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen
 

kalle123

Jugend forscht ....
#38

Anhänge

pcpro

Neuer Benutzer
#39
danke Kalle123, das hatte ich auch schon gefunden, da ich aber etwas langsam bin habe ich es erst heute ausprobieren können. Hat ne Weile gedauert bis ich dahinter gekommen bin, wie ich die Werte in der Bibliothek ändern kann. Ist halt Neuland für mich.
 
FPV1

Banggood

Oben Unten