Ir ao conteúdo

Posts recomendados

Postado

Bom dia, tenho um MPU-6050 e estou querendo variar 2 pwm de acordo com o ângulo.
A principio iria utilizar o comando "if", porém tenho que determinar o duty de acordo com o valor do ângulo x ou y e a minha intenção é variar os 2 juntos, por exemplo:

Se aumentar um grau no ângulo "x", aumentar 1% no duty do pwm "x" e assim por diante.
Ai vi que o laço "for" poderia ser mais útil nesse caso, só que tenho muita dificuldade em visualizar como esse laço iria funcionar ( sou leigo em programação), alguém pode me ajudar?
O laço "for" realmente seria melhor? 

 

  • Membro VIP
Postado

Olá amigo. O laço for e while têm funções mais nobres. Se o seu microcontrolador tiver 2 canais pwm, basta alimentá-los com o dado vindo do seu dispositivo dentro do laço (loop) principal mesmo. P.ex. o arduíno tem uma tal função analogwrite https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/ que nada + é do que o controle da largura pwm.
 

loop()
{
x=dado_x_do_acelerometro(); //crie ou consulte função mastigada pra isso
y=dado_y_do_acelerometro();
analogwrite(9,x);
analogwrite(5,y);
}

Apesar de você ser 1/2 leigo, espero não precisar te dizer que ctrl-c ctrl-v no código acima vai resolver sua vida, ok?

 

Postado

@.if O comando analogWrite(),tem a sua frequência limitada entre 490hz-980hz (dependendo do pino),  por causa da sua frequência baixa, programei o arduino para o "Fast Mode" por meio do TCCR2A,ai surge a outra duvida, continuo a programação utilizando o comando "analogWrite"? porque vi alguns exemplos utilizando uma função de auxilio "void setDuty_pin" e não sei se já utilizando o analogWrite() direto a frequência já vai alterar, e por conta da pandemia estou sem osciloscópio para analisar o pwm... ficando mais difícil ! 😪
 

  • Membro VIP
Postado

Ao mencionar TCCR2A penso que você está no caminho certo pois está a usar o recurso de hardware e não software do mc. Infelizmente não sei te informar ao certo como a função void setDuty_pin manipula os registros do mc pra esta missão. Vai ter que dar uma olhadela no datasheet do mc e dar uma estudada na seção pwm dele. P.ex. digamos que ele seja o atmegaXXX que me parece que tem sim 2 canais pwm

avr_pwm_04.jpg

http://www.ermicro.com/blog/?p=1971

Após entender, sugiro que escrevas direto nos registros do mc pra programá-lo de forma mais... "maxa"😁

E quanto à falta de instrumentos cogite usar simulador p.ex. proteus.

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...