prime vfd library out-dated, error on compiling.

hi all,
i want to make a home made fire-panel, with the “brains” of the arduino,
all the buttons, incomming alarms, sound evac controll, phone dialer, displays, led’s, relay’s, etc etc. are connected with 2/maybe 3 arduino boards.
i have bought 3 VFD (vacuum fluorescent display) display’s model nr: NA202MD13AA from futaba. they are nice, but cost a lot of power…
now i downloaded the “primevfd” library here from the arduino.cc web, but on the compiling proces there was an error.
this error is not produced by me, because it is a sample code witch was included in this “primevfd” packedge.
under here i have added the code, the error, and the error in the prime.h script ( wich the compiling error says where the error is )
i have also made 2 screenshots of it so you can ether read or look at the screenshots.

http://www.secretplay.de/anonymous0/index.html

HELLO WORLD! sample from prime vfd with arduino 1.5.1r2:

// include the library code:
#include <PrimeVfd.h>

// initialize the library with the numbers of the interface pins
PrimeVfd vfd(PrimeVfd::PIN_CONFIG_PORT_D_OPTION_1);

void setup() {
  // start the library/displaying to the vfd 
  vfd.begin();
  // Print a message to the VFD.
  vfd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  vfd.setCursor(0, 1);
  // print the number of seconds since reset:
  vfd.print(millis()/1000);
}

ERROR CODE AFTER TRYING TO COMPILE:

In file included from HelloWorld.pde:33:
C:\Users\Eddie\Documents\Arduino\libraries\PrimeVfd/PrimeVfd.h:80: error: conflicting return type specified for 'virtual void PrimeVfd::write(uint8_t)'
C:\Users\Eddie\Desktop\arduino\arduino 1.5.1\arduino-1.5.1r2\hardware\arduino\avr\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'

PRIME.H file where the error exist, rule 80 lined ( ===—=== ), it is where the error is :

#ifndef PRIME_VFD_H
#define PRIME_VFD_H

// #include <inttypes.h>
// #include <avr/pgmspace.h> // Allows storing of data in program memory, used for charater bitmaps.
// #include "Print.h"
#include "Arduino.h"

// API is designed to be identical to the standard LiquidCrystal library.
// The only exception are:
// 
// * The initalization (constructor and begin method) are different since
//   the VFD has a different number of pins and the display dimensions are fixed.
// * We don't support the command() method to simplify implementation.
// 
// All other HD44780 behaviors and idiosyncrasies are mimicked.

class PrimeVfd : public Print {

public:
  
  enum PinConfig
  {
    // See the implementation of selectRegisterPinsForConfig() for how these values are used.
    // On the display, the pins are:
    //
    // 2/TP2   - +5v
    // 4/TP4   - data
    // 6/TP6   - clock
    // 8/TP8   - latch (simplified: low = blanks output, low->high = latch data, high display latched data)
    // 10/TP10 - gnd
    
    PIN_CONFIG_PORT_D_OPTION_1, // Port D/Arduino pins 2(data), 3(clock), 4(latch).
    PIN_CONFIG_PORT_D_OPTION_2, // Port D/Arduino pins 2(data), 3(clock), 5(latch).
    PIN_CONFIG_PORT_D_OPTION_3, // Port D/Arduino pins 2(data), 3(clock), 6(latch).
    PIN_CONFIG_PORT_D_OPTION_4, // Port D/Arduino pins 2(data), 3(clock), 7(latch).
    
    // When using multiple displays, Port B options can not be used at the same time.
    PIN_CONFIG_PORT_B_OPTION_1,
    // Option 1 uses SS (latch), SCK (clock) and MOSI (data) of Arduino Uno, etc.
    PIN_CONFIG_ARDUINO_SPI_PINS = PIN_CONFIG_PORT_B_OPTION_1, 
    PIN_CONFIG_PORT_B_OPTION_2,
    // Option 2 uses SS (latch), SCK (clock) and MOSI (data) of Arduino Mega, Teensy, etc.
    PIN_CONFIG_ARDUINO_MEGA_SPI_PINS = PIN_CONFIG_PORT_B_OPTION_2,
        
    NUM_PIN_CONFIGS
  };
  
  PrimeVfd(PinConfig pinConfig);
  ~PrimeVfd();
  
  void begin();

  void clear();
  void home();

  void noDisplay();
  void display();
  void noBlink();
  void blink();
  void noCursor();
  void cursor();
  void scrollDisplayLeft();
  void scrollDisplayRight();
  void leftToRight();
  void rightToLeft();
  void autoscroll();
  void noAutoscroll();

  void createChar(uint8_t characterIndex, uint8_t pixels[] /* 8 bytes, 1 for each row */);
  void setCursor(uint8_t column, uint8_t row); 
  ===---===---=== virtual void write(uint8_t character); ===---===---===
  // command() not implemented. See note above.
  //void command(uint8_t commandCode);
  
  // Do not call this directly , bad things will happen. 
  // It is a private method made public so the interrupt
  // handler can get at it.
  static void handleInterruptPrivate();
  
private:

  enum Flag
  {
    FLAG_BEGIN_HAS_BEEN_CALLED,
    FLAG_DISPLAY_ON,
    FLAG_CURSOR_ON,
    FLAG_BLINK_ON,
    CURSOR_MOVE_INCREMENT,
    DISPLAY_SHIFT_ON,
    
    NUM_FLAGS
  };

  static const uint8_t CHARACTER_PIXEL_WIDTH = 5;
  static const uint8_t CHARACTER_PIXEL_PRETEND_HEIGHT = 8;
  static const uint8_t CHARACTER_PIXEL_ACTUAL_HEIGHT = 7;
  static const uint8_t DISPLAY_NUM_COLUMNS = 20;
  static const uint8_t DISPLAY_NUM_ROWS = 2;
  static const uint8_t FIRST_CHARACTER_IN_ROM = 30;
  static const uint8_t LAST_CHARACTER_IN_ROM = 127;
  static const uint8_t NUM_ROM_CHARACTERS = LAST_CHARACTER_IN_ROM + 1 - FIRST_CHARACTER_IN_ROM;
  static const uint8_t NUM_CUSTOM_CHARACTERS = 8;
  static const uint16_t CURSOR_BLINK_INTERRUPT_ON_COUNT = 1000; // 1/2 second.
  static const uint16_t CURSOR_BLINK_INTERRUPT_LOOP_COUNT = 2000; // 1 second.
  static const uint8_t BLINK_CHARACTER = 30;
  static const uint8_t CURSOR_CHARACTER = 31;
  
  // For 500 us interval (100Hz) refresh and clock of 16MHz, prescalar of /16,
  // We get a remainder of 125, or start TCNT of (256-125).
  static const uint8_t TIMER_START_COUNT = (256-125);
  
  static const prog_uint8_t _characterSet[NUM_ROM_CHARACTERS][CHARACTER_PIXEL_WIDTH] PROGMEM;

  volatile uint8_t *_port;
  volatile uint8_t *_ddr;
  uint8_t _dataPinMask;
  uint8_t _clockPinMask;
  uint8_t _latchPinMask;

  uint8_t _flags;
  uint8_t _addressCounter;
  int8_t _displayOffset;
  
  // Linked list of all PrimeVfd instances, in theory to allow multiple displays
  // at the same time. Mutliple displays is untested.
  static bool _haveMultipleInstances;
  static bool _inInterruptHandler;
  static uint16_t _blinkInterruptCount;
  static PrimeVfd *_firstInstance;
  PrimeVfd *_nextInstance;
  uint8_t _currentUpdateColumn;

  // These large arrays are at the bottom of the class member variables 
  // in case large address offsets are expensive.
  uint8_t _displayData[80]; // Mimics layout of LCD module RAM.
  uint8_t _customCharacterSet[NUM_CUSTOM_CHARACTERS][CHARACTER_PIXEL_WIDTH];

  inline void setFlag(Flag flag) { _flags |= (1<<flag); }
  inline void clearFlag(Flag flag) { _flags &= ~(1<<flag); }
  inline bool getFlag(Flag flag) { return (_flags & (1<<flag)) ? true : false; }

  void selectRegisterPinsForConfig(PinConfig pinConfig);
  void setupPins();
  void restorePins();

  void blankDisplay();
  
  void displayUpdate();
  void clockCharacter(uint8_t character);
  void clockCustomCharacter(uint8_t character);  
  void clockColumnSelect(uint8_t column);
  uint8_t getCursorCharacter(uint8_t originalCharacter);
};

#endif // PRIME_VFD_H

i am not good at programming c / c++
and i am a beginner of the arduino programming ( its quit the same as c / c++ i have heard… )

if someone could help me by :
editing the primevfd.h and could publish it to the www so i could download it
or send me an answer below here,
i will ohnestly be verry greatful and thankfully.
i hope you could read this all becouse my english is not that good :stuck_out_tongue:
thanx all !!!

I’ve downloaded, changed some of the code to make it compile.
I have no way to test it, so you’ll have to do it yourself.
I’m using Arduino IDE 1.0.4. You should update to 1.0.5, to have the latest version.

PrimeVfd-New.zip (8.49 KB)