Olá, estou tentando montar uma biblioteca com as estruturas de controle digital RST e Compensação pela malha de realimentação.As funções já foram testadas, porém agora na hora de empacotar em uma biblioteca, acontece o seguinte erro:
request for member 'RST' in 'control', which is of non-class type 'Control_Loop(int, float, float, float, float)'.
Segui o tutorial de Biblioteca que o site nos disponibiliza para implementar código morse,porém na hora de fazer este projeto de biblioteca tive problemas. o código do header e do cpp da biblioteca é este aqui:
/*
Control_Loop.h - Library for Implementation of Digital Controllers Using Arduino.
This Library was made with the goal to implementation of RST control Structure,and others.
Created by M.Sc. Engineer Florindo Antonio de Carvalho Ayres Júnior, November 24, 2015.
*/
#ifndef Control_Loop_H
#define Control_Loop_H
#include "Arduino.h"
class Control_Loop
{
public:
Control_Loop(volatile int sensorValue,volatile float R_ef,float R[10],float S[10],float TT);
~Control_Loop();
volatile unsigned int RST();
volatile unsigned int FC();
private:
float ro;
float r1;
float r2;
float r3;
float r4;
float r5;
float r6;
float r7;
float r8;
float r9;
float so;
float s1;
float s2;
float s3;
float s4;
float s5;
float s6;
float s7;
float s8;
float s9;
float T;
float Ref;
float sensorValue;
float u[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
float y[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
volatile float d;
};
#endif
Abaixo o código do .cpp:
/*
Control_Loop.cpp - Library for flashing Morse code.
Created by M.Sc. Engineer Florindo Antonio de Carvalho Ayres Júnior, November 24, 2015.
Not yet Released into the public domain.
*/
#include "Arduino.h"
#include "Control_Loop.h"
Control_Loop::Control_Loop(volatile int sensorValue,volatile float R_ef,float R[10],float S[10],float TT)
{
ro = R[0];
r1 = R[1];
r2 = R[2];
r3 = R[3];
r4 = R[4];
r5 = R[5];
r6 = R[6];
r7 = R[7];
r8 = R[8];
r9 = R[9];
so = S[0];
s1 = S[1];
s2 = S[2];
s3 = S[3];
s4 = S[4];
s5 = S[5];
s6 = S[6];
s7 = S[7];
s8 = S[8];
s9 = S[9];
T = TT;
Ref = R_ef;
float u[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
float y[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
}
Control_Loop::~Control_Loop(){}
volatile unsigned int Control_Loop::RST()
{
volatile float d;
float ya = (float)(5.0000*sensorValue)/1023.0;
y[0]= ya;
//u[0] = (r-y[0])ro +(r-y[1])r1+(r-y[2])r2-s1u[1]-s2u[2];
u[0] = TRef-(roy[0]+r1y[1]+r2y[2]+r3y[3]+r4y[4]+r5y[5]+r6y[6]+r7y[7]+r8y[8]+r9y[9])-(s1u[1]+s2u[2]+s3u[3]+s4u[4]+s5u[5]+s6u[6]+s7u[7]+s8u[8]+s9*u[9]);
if(u[0]>=1.0000)u[0]=1.0000;
if(u[0]<=0.0000)u[0]=0.0000;
// y[10] = y[9];
y[9] = y[8];
y[8] = y[7];
y[7] = y[6];
y[6] = y[5];
y[5] = y[4];
y[4] = y[3];
y[3] = y[2];
y[2] = y[1];
y[1] = y[0];
// u[10] = u[9];
u[9] = u[8];
u[8] = u[7];
u[7] = u[6];
u[6] = u[5];
u[5] = u[4];
u[4] = u[3];
u[3] = u[2];
u[2] = u[1];
u[1] = u[0];
d = (u[0]);
return d;
}
volatile unsigned int Control_Loop::FC()
{
// float u[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
// float y[10] = {0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000};
volatile float d_2;
float ya = (float)(5.0000*sensorValue)/1023.0;
y[0]= ya;
u[0] = -(s1u[1]+s2u[2]+s3u[3]+s4u[4]+s5u[5]+s6u[6]+s7u[7]+s8u[8]+s9u[9])+(roy[0]+r1y[1]+r2y[2]+r3y[3]+r4y[4]+r5y[5]+r6y[6]+r7y[7]+r8y[8]+r9*y[9]);
if(u[0]>=1.0000)u[0]=1.0000;
if(u[0]<=0.0000)u[0]=0.0000;
//y[10] = y[9];
y[9] = y[8];
y[8] = y[7];
y[7] = y[6];
y[6] = y[5];
y[5] = y[4];
y[4] = y[3];
y[3] = y[2];
y[2] = y[1];
y[1] = y[0];
// u[10] = u[9];
u[9] = u[8];
u[8] = u[7];
u[7] = u[6];
u[6] = u[5];
u[5] = u[4];
u[4] = u[3];
u[3] = u[2];
u[2] = u[1];
u[1] = u[0];
d = (u[0]);
return d;
}
Alguma sugestão por favor, e desde já grato.