rsrsrsr

Olá pessoal, é o seguinte:

estou na fase final de um projeto, onde uso um potenciometro como acelerador para variar o delay entre os passos de um stepper, e tambem uso um encoder para ler a rotação deste mesmo motor.

Após algumas pesquisas acabei chegando nesse codigo, graças ao video sobre threads do Ivan Seidel.

#include <Thread.h>
#include <ThreadController.h>
#define potPin 0
#define chave 3

ThreadController nwb;
int Mydelay = 0;

Thread Acelerador;
void Acelerator(){

Mydelay = analogRead(potPin);
Mydelay = map(Mydelay,0,1023,4,24);
}
Thread GiroMotor;
void GirarMotor(){
digitalWrite(0,HIGH);
delay(Mydelay);
digitalWrite(1,HIGH);
delay(Mydelay);
digitalWrite(0,LOW);
delay(Mydelay);
digitalWrite(2,HIGH);
delay(Mydelay);
digitalWrite(1,LOW);
delay(Mydelay);
digitalWrite(4,HIGH);
delay(Mydelay);
digitalWrite(2,LOW);
delay(Mydelay);
digitalWrite(0,HIGH);
delay(Mydelay);
digitalWrite(4,LOW);
}

Thread Encoder;
long rpmconta=0;
void CalculoEncoder(){
attachInterrupt(1,rotacao,FALLING);
delay(1000);
detachInterrupt(0);
rpmconta = rpmconta*60;
}
void rotacao()
{
rpmconta++;
}

void setup(){
GiroMotor.setInterval(0);
GiroMotor.onRun(GirarMotor);
Encoder.setInterval(1000);
Encoder.onRun(CalculoEncoder);
Acelerador.setInterval(0);
Acelerador.onRun(Acelerator);
nwb.add(&GiroMotor);
nwb.add(&Encoder);
nwb.add(&Acelerador);
}
void loop(){
nwb.run();
}

Agora eis minhas pequenas duvidas:

-acho que a função delay não pode ser usada, como muda-la usando millis() ? "tanto em GiroMotor quanto em Encoder e Acelerador"

-como transforma-la numa variavel "time" e usar junto com millis para tudo rodar redondo?

-não me importo de usar esse codigo para girar o motor, mas seria melhor usar a AcelStepper ?

-com a AcelStepper talvez eu não precisaria de nenhum Delay, sobraria apenas o delay de 1 segundo do encoder necessario para o calculo de RPM

-o motor nunca deve parar de girar, so variar a velocidade de rotação, é correto usar setInterval(0), isso cria um loop infinito ou tenho que criar um dentro de GirarMotor ?

----------------------------------------------------------------------------------------------------------------------------------------------

por hora é isso, realmente preciso dessa ajuda, muito obrigado a todos pela atenção.

P.S: sei que parece idiota usar esse motor, ja que seria mais facil medir a rotação de um DC, mas esse projeto é para uso didatico num projeto da faculdade para expandir o aprendizado em robotica,automação,etc... e o uso de threads é essencial para quem vai começar a projetar neste universo de possibilidades.

Exibições: 291

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço