Ir ao conteúdo
  • Cadastre-se
Victor Teodoro

C++ queria converter esse programa de c++ para C

Recommended Posts

float Ts = 0.02;  // Time Sample => Tempo de amostragem
float kp = 0.000787669;
float ki = 0.0787669;
float kd = 0.0;

float termoP, termoI=0, termoD, termoI_ant=0;
float controle;
int aux;
float sp=1000,erro,vel,erro_ant;
int cont = 0;
boolean b2;

void setup()
{
  Serial.begin(9600);
  analogWrite(3,0);  // Pino 3 => PWM
  pinMode(2,INPUT);  // Funciona como um botão
  digitalWrite(2,1); // Encostamos o fio do pino 2 em algum lugar que tenha tensão
}                    // Por exemplo: a porta USB do Arduino (no nosso caso, foi o que fizemos)

void loop() 
{
  b2 = digitalRead(2);
  while(b2!=0)  b2 = digitalRead(2);

  while(cont<50) // Regime transitório 
  {
    Serial.println(analogRead(A2));
    cont++;
    delay(20);
  }

  while(cont<=500) // Regime permanente
  {
    vel = analogRead(A2);  // Valor analógico(correspondente à velocidade) antes da conversão => ("Valor analógico" é uma tensão)
    vel = vel*5/1023; // Conversão do valor analógico
    vel = (466.34*vel) - 5.25;  // Ajusta valor da velocidade de acordo com w(v)
    erro = sp - vel;
    erro_ant = erro;
    termoP = kp*erro;
    termoI = (ki*erro*Ts) + termoI_ant;
    termoI_ant = termoI;
    termoD = (erro - erro_ant)*kd*Ts;
    controle = termoP+termoI+termoD;
    if(controle>255)  controle=255;
    if(controle<0)    controle=0;
    aux = controle;
    analogWrite(3,aux);
    Serial.println(analogRead(A2));
    delay(20);
    cont++;  
  }

  while(1);
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Victor Teodoro     as linguagens c /c++ são praticamente iguais apenas que c++ tem alguns comandos a mais que a c, mas os comando desse seu código são todos da linguagem c mesmo, o que tem de diferente aí é esses comandos do arduíno tipo esse :

Serial.begin(9600);
analogWrite(3,0);  // Pino 3 => PWM
pinMode(2,INPUT);  // Funciona como um botão
digitalWrite(2,1); // Encostamos o fio do pino 2 em algum lugar que tenha tensão
Serial.println(analogRead(A2));
 vel = analogRead(A2);  // Valor analógico(correspondente à velocidade) antes da conversão => ("Valor analógico")

já de arduíno não sei  converter .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×