Luna is an object-oriented programming language for AVR microcontrollers.

Luna supports (with small restrictions)

  • Inheritance
  • Encapsulation
  • Polymorphism
  • Method-Overloading
  • Operator-Overloading

OpenBook: Objektorientierte Programmierung von Bernhard Lahres, Gregor Rayman


Object-oriented programming uses generally known programming terms and additional terms like:

General Programm Structure

  • Controller definition
  • Defines, Declarations
  • Configurations, Initializations
  • Main Programm
  • Methods/Interrupts
  • User Classes
  • Data Objects


  • Executable code is encoded in the textual order so that classes and programs must follow in the source code after the main program.
  • The preprocessor determined in a pre-flow automatically the containing subroutines, classes and data objects, so an extra declaration of classes or methods before the main program is not necessary.