Teensy 3.0. class Not defined in scope

Status
Not open for further replies.

bsunisol

New member
Hi,
I am new to teensy and this forum. I tried to compile a little project but the compiler fails with an error.
Both ino files are in the same folder.


I declared my class in Timer.ino:
Code:
Code:
class _CDimmer : IntervalTimer {
private:
	// Daten
	_Heute Heute;
	elapsedMillis	test;

	// Funktionen
	int getDimmIntervall( int data );
	void getHeute( unsigned int Datensatz );

public:
	_CDimmer();
	~_CDimmer();

	void Setup();
	void Dimmer( void );
} Dimmer;


but when I want to use it in the main program:

Code:
Code:
// Objekte
extern _CDimmer	Dimmer;

void setup()
{
	pinMode( PIN_INTERN_LED, OUTPUT );
	digitalWrite( PIN_INTERN_LED, 255 );

	Serial.begin( 9600 );
	delay( 5000 );

	//DisplaySetup();
	//Dimmer_Setup();
	Dimmer.Setup();
	....
}



I get this message from the compiler:
Quote:
Compiling 'TerrariumController' for 'Teensy 3.0'
TerrariumController.ino : '_CDimmer' does not name a type
TerrariumController.ino : : In function 'void setup()':
TerrariumController.ino : 'Dimmer' was not declared in this scope
Error compiling

Am I wrong about classes?
Or how can I fix it?

Thanks and happy Holidays
Rob
 
Main file Terrarium.ino:
Code:
// Includes
#include "DataList.h"
#include "Pins.h"
#include <SoftPWM_timer.h>
#include <SoftPWM.h>
#include <LiquidCrystal.h>



// Variablen zum Testen
unsigned int	test_daten_satz = _pTagesdaten[1];

// Objekte
//extern _CDimmer	Dimmer;
//extern DCF77 DCF;

void setup()
{
	pinMode( PIN_INTERN_LED, OUTPUT );
	digitalWrite( PIN_INTERN_LED, 255 );

	Serial.begin( 9600 );
	delay( 5000 );

	//DisplaySetup();
	//Dimmer_Setup();
	//Dimmer.Setup();
	DCF.Setup();

	/*
	getHeute( test_daten_satz );
	Serial.print( "Datensatz:\t" );
	Serial.println( Heute.Datensatz, HEX );
	Serial.print( "Dauer: " );
	Serial.print( Heute.Dimmdauer, DEC );
	Serial.print( "\t100% um: " );
	Serial.print( Heute.EndeAufgang, DEC );
	Serial.print( "\tBeginn Untergang: " );
	Serial.print( Heute.BeginnUntergang, DEC );
	Serial.print( "\tIntervalle: " );
	Serial.println( Heute.Intervall, DEC );
	*/

	digitalWrite( PIN_INTERN_LED, 0 );
}

void loop()
{
  /* add main program code here */

}

File Timer.ino
Code:
// Objekte
/*
IntervalTimer	Dimm_Timer;
elapsedMillis	test;

// Macros
//#define 1_SEKUNDE	1000000

// Funktionsprototypen

void Dimmer( void );
void Dimmer_Setup( void );


// Funktionsdefinitionen
void Dimmer( void ) {
	Heute.Aktuell.Zaehler--;
	if( Heute.Aktuell.Zaehler == 0 ) {
		++Heute.Aktuell.Dimmstatus;
		SoftPWMSetPercent( PIN_INTERN_LED, Heute.Aktuell.Dimmstatus );
		Heute.Aktuell.Zaehler = Heute.Intervall;
		if( Heute.Aktuell.Dimmstatus == Heute.Maximum ) {
			Heute.Aktuell.Richtung = -Heute.Aktuell.Richtung;
		}

		Serial.print( Heute.Aktuell.Dimmstatus, DEC );
		Serial.print( "% " );
		Serial.print( (test / 60000), DEC );
		Serial.print( ":" );
		Serial.print( ((test % 60000)/100), DEC );
		Serial.println( "min" );
	}
}

void Dimmer_Setup( void ) {

	Dimm_Timer.begin( Dimmer, 1000000 );		// Starte sekündlichen Timer
	SoftPWMBegin();						// Starte PWM-Modul für den Dimmer
}
*/


struct _Heute {
	float			Aufgang;
	unsigned int	Dimmdauer;
	unsigned int	Intervall;
	float			EndeAufgang;
	float			BeginnUntergang;
	float			Nachtruhe;
	unsigned int	Datensatz;
	unsigned short	Maximum;
	struct _Aktuell {
		unsigned short	Richtung;
		unsigned short	Zaehler;
		unsigned short	Dimmstatus;
	} Aktuell;
};


class _CDimmer : IntervalTimer {
private:
	// Daten
	_Heute Heute;
	elapsedMillis	test;

	// Funktionen
	int getDimmIntervall( int data );
	void getHeute( unsigned int Datensatz );

public:
	_CDimmer();
	~_CDimmer();

	void Setup();
	void Dimmer( void );
} Dimmer;

void ISR_DIMMER_HACK() {
	Dimmer.Dimmer();
}



_CDimmer::_CDimmer() {
}

_CDimmer::~_CDimmer() {
}



void _CDimmer::Setup() {
	begin( ISR_DIMMER_HACK, 1000000 );		// Starte sekündlichen Timer
	SoftPWMBegin();								// Starte PWM-Modul für den Dimmer
}


void _CDimmer::getHeute( unsigned int Datensatz )  {
	Heute.Aufgang = 7.5f;
	Heute.Nachtruhe = 21.5f;
	Heute.Datensatz = Datensatz;
	Heute.Dimmdauer = getDauer( Datensatz );
	Heute.EndeAufgang = Heute.Aufgang + Heute.Dimmdauer / 60;
	Heute.BeginnUntergang = Heute.Nachtruhe - Heute.Dimmdauer / 60;
	Heute.Intervall = round( ((getDauer( Datensatz ) * 60) / getMaximum( Datensatz )) );// * 1000000;
	Heute.Maximum = LICHT_MINIMUM + Datensatz & 0x00000F * 3;
	Heute.Aktuell.Richtung = 1;
	Heute.Aktuell.Zaehler = Heute.Intervall;
	Heute.Aktuell.Dimmstatus = 0;
}

int _CDimmer::getDimmIntervall( int data ) {
	return round( ((getDauer( data ) * 60) / getMaximum( data )) ) * 1000000;
}

pins.h
Code:
#ifndef __PINS_H__
#define __PINS_H__

// Pinbelegung am Teensy für Angeschlossene Perepherie

// Pin 13 für Debug
#define PIN_INTERN_LED	13

// DCF77 Modul
#define PIN_DCF_PON		0
#define PIN_DCF_DATA	1
#define PIN_DCF_GND		2
#define PIN_DCF_VCC		3

// PTC Widerstand
#define PIN_PTC_1		23
#define PIN_PTC_2		22

// Display
#define PIN_LCD_RS		3
#define PIN_LCD_RW		4
#define PIN_LCD_ENABLE	5
#define PIN_LCD_D0		21	// Datenpins
#define PIN_LCD_D1		20
#define PIN_LCD_D2		19
#define PIN_LCD_D3		18
#define PIN_LCD_D4		17
#define PIN_LCD_D5		16
#define PIN_LCD_D6		15
#define PIN_LCD_D7		14
#define PIN_LCD_LEDA	11	// Pins für Anode und Kathode. Benutzung wohl nicht nötig.
#define PIN_LCD_LEDK	12	// Pins für Anode und Kathode. Benutzung wohl nicht nötig.

// Lampen
#define PIN_HALOGEN		0xFFFF
#define PIN_H5			0xFFFF
#define PIN_UV			0xFFFF

#endif

Code:
#ifndef __DATALIST_H__
#define __DATALIST_H__

// Includes
#include <arduino.h>

// Sondereinträge
#define LISTEN_ENDE	0xFFFFFF
#define WINTERRUHE	0x11F000

// Minimal Beleuchtung
#define LICHT_MINIMUM	55

// Macros für die einzelnen Speicherplätze
#define getMonat( d ) ( ((d) & 0xF00000) >> 20 )
#define getTag( d ) ( ((d) & 0x0FF000) >> 12 )
#define getDauer( d ) ( ((d) & 0x000FF0 ) >> 4 )
#define getMaximum( d ) ( (LICHT_MINIMUM + ((d) & 0x00000F) * 3) )

/*
// Aktuelle Tagesdaten
struct _Heute {
	float			Aufgang;
	unsigned int	Dimmdauer;
	unsigned int	Intervall;
	float			EndeAufgang;
	float			BeginnUntergang;
	float			Nachtruhe;
	unsigned int	Datensatz;
	unsigned short	Maximum;
	struct _Aktuell {
		unsigned short	Richtung;
		unsigned short	Zaehler;
		unsigned short	Dimmstatus;
	} Aktuell;
} Heute;

// Zeitintervalle zum Dimmen berechnen
inline int getDimmIntervall( int data ) {
	return round( ((getDauer( data ) * 60) / getMaximum( data )) ) * 1000000;
}

// Heute mit Daten füllen
inline void getHeute( unsigned int Datensatz ) {
	Heute.Aufgang = 7.5f;
	Heute.Nachtruhe = 21.5f;
	Heute.Datensatz = Datensatz;
	Heute.Dimmdauer = getDauer( Datensatz );
	Heute.EndeAufgang = Heute.Aufgang + Heute.Dimmdauer / 60;
	Heute.BeginnUntergang = Heute.Nachtruhe - Heute.Dimmdauer / 60;
	Heute.Intervall = round( ((getDauer( Datensatz ) * 60) / getMaximum( Datensatz )) );// * 1000000;
	Heute.Maximum = LICHT_MINIMUM + Datensatz & 0x00000F * 3;
	Heute.Aktuell.Richtung = 1;
	Heute.Aktuell.Zaehler = Heute.Intervall;
	Heute.Aktuell.Dimmstatus = 0;
}
*/

unsigned int _pTagesdaten[] = {
	/* 01.12 - 31.01 */	0x11F000,	/* Winterruhe                   */
	/*         01.02 */	0x201F00,	/* Dauer: 240min, Maximum:  52% */
	/*         02.02 */	0x202F01,	/* Dauer: 240min, Maximum:  55% */
	/*         03.02 */	0x203E12,	/* Dauer: 225min, Maximum:  58% */
	/*         04.02 */	0x204E13,	/* Dauer: 225min, Maximum:  61% */
	/*         05.02 */	0x205D24,	/* Dauer: 210min, Maximum:  64% */
	/*         06.02 */	0x206D25,	/* Dauer: 210min, Maximum:  67% */
	/*         07.02 */	0x207C36,	/* Dauer: 195min, Maximum:  70% */
	/*         08.02 */	0x208C37,	/* Dauer: 195min, Maximum:  73% */
	/*         09.02 */	0x209B48,	/* Dauer: 180min, Maximum:  76% */
	/*         10.02 */	0x20AB49,	/* Dauer: 180min, Maximum:  79% */
	/*         11.02 */	0x20BA5A,	/* Dauer: 165min, Maximum:  82% */
	/*         12.02 */	0x20CA5B,	/* Dauer: 165min, Maximum:  85% */
	/*         13.02 */	0x20D96C,	/* Dauer: 150min, Maximum:  88% */
	/*         14.02 */	0x20E96D,	/* Dauer: 150min, Maximum:  91% */
	/*         15.02 */	0x20F87E,	/* Dauer: 135min, Maximum:  94% */
	/*         16.02 */	0x21087F,	/* Dauer: 135min, Maximum: 100% */
	/* 17.02 - 14.11 */	0xB0E78f,	/* Dauer: 120min, Maximum: 100% */
	/*         15.11 */	0xB0F87F,	/* Dauer: 135min, Maximum: 100% */
	/*         16.11 */	0xB1087E,	/* Dauer: 135min, Maximum:  94% */
	/*         17.11 */	0xB1196D,	/* Dauer: 150min, Maximum:  91% */
	/*         18.11 */	0xB1296C,	/* Dauer: 150min, Maximum:  88% */
	/*         19.11 */	0xB13A5B,	/* Dauer: 165min, Maximum:  85% */
	/*         20.11 */	0xB14A5A,	/* Dauer: 165min, Maximum:  82% */
	/*         21.11 */	0xB15B49,	/* Dauer: 180min, Maximum:  79% */
	/*         22.11 */	0xB16B48,	/* Dauer: 180min, Maximum:  76% */
	/*         23.11 */	0xB17C37,	/* Dauer: 195min, Maximum:  73% */
	/*         24.11 */	0xB18C36,	/* Dauer: 195min, Maximum:  70% */
	/*         25.11 */	0xB19D25,	/* Dauer: 210min, Maximum:  67% */
	/*         26.11 */	0xB1AD24,	/* Dauer: 210min, Maximum:  64% */
	/*         27.11 */	0xB1BE13,	/* Dauer: 225min, Maximum:  61% */
	/*         28.11 */	0xB1CE12,	/* Dauer: 225min, Maximum:  58% */
	/*         29.11 */	0xB1DF01,	/* Dauer: 240min, Maximum:  55% */
	/*         30.11 */	0xB1EF00,	/* Dauer: 240min, Maximum:  52% */
	/*    Listenende */	0xFFFFFF	/* Identifikation               */
};

#endif
 
Status
Not open for further replies.
Back
Top