Potenciômetro com memória 2 - Agora com Arduino
Eletrônica

Potenciômetro com memória 2 - Agora com Arduino


Bom, como diriam os BORG: "Resistir é inútil". Então lá fui eu dar uma conferida no Arduino. Resolvi começar por algo conhecido para não ter muitas surpresas e refiz o "potenciômetro com memória" na plataforma. Segue o vídeo:


Montei o potenciômetro numa placa separada, com as chaves:
Potenciometro Alps RK168

Além da placa Arduino usei um clone do "motor shield" da Adafruit. O Arduino também é um clone Chines, e ao colocar o shield tive um problema com a conexão do motor 1A que ficou em cima do conector USB, provocando um curto circuito. Ainda bem que o L293D tem proteção contra curto na saída e apenas esquentou o CI. A solução foi cortar o pino mais rente a placa e isolar o conector USB com fita isolante:
Arduino Motor Shield

Com o motor shield instalado não existe a possibilidade de usar estes fios para protoboard encaixados nos conectores do Arduino, por isso tive que soldar diretamente na placa:
Arduino Motor Shield
As chaves de controle do circuito foram conectadas a duas entradas analógicas do Arduino, também por causa do motor shield. Ele ocupa quase todas as portas digitais do Arduino, sobrando apenas as duas da porta serial. O esquema ficou assim:

Esquema potenciometro com memória em Arduino


Quanto ao código não foi tão difícil converter do C usado na primeira versão (feito no Code Warrior da Freescale) para o Arduino. Achei a IDE fraca e senti falta de um debugger, mas para quem quer começar a brincar com microcontroladores ela é até que muito boa. 

A biblioteca do motor shield funcionou perfeitamente, foi só instalar e usar. O código de controle do potenciômetro ficou muito parecido com o original, apenas acrescentei uma função para fazer a média de 64 amostras da leitura do potenciômetro (na verdade ela soma as 64 amostras de 10 bits criando um valor de 16 bits, para maior precisão).

Segue o código do sketch (preciso encontrar uma forma melhor de publicar códigos no blog  ou no GitHub):

 //******************************  
// Potenciometro com memoria
// http://www.pakequis.com.br
//******************************
#include <AFMotor.h>

const int Min_Value = 5; //Valor minimo da leitura do potenciometro
const int Max_Value = 65000; //Valor maximo da leitura do potenciometro

AF_DCMotor motor(1); //Define motor para a saida 1 do shield
int KeyStatus = 0; //Valor da tecla
unsigned int Mem_Value = 0; //Valor memorizado do potenciometro

void setup(){
motor.setSpeed(200); //Velocidade maxima
motor.run(RELEASE); //Desativa o motor
}

void loop(){
KeyStatus = analogRead(A4); //Verifica a tecla de memoria

if (KeyStatus > 950){ //Tecla pressionada?
Mem_Value = AvgMeasure(); //Memoriza o valor do potenciometro
if(Mem_Value > Max_Value){ //Verifica se ultrapassou os limites
Mem_Value = Max_Value; //Limite maximo atingido
}
if(Mem_Value < Min_Value){
Mem_Value = Min_Value; //Limite minimo atingido
}
KeyStatus = 0; //volta ao estado de tecla nao pressionada
}

KeyStatus = analogRead(A2); //Verifica tecla de recuperar memoria
if (KeyStatus > 950){ //Tecla pressionada?
if (Mem_Value > AvgMeasure()){ //
while(Mem_Value >= AvgMeasure()){ //Ateh chegar na posicao correta
//Serial.println(analogRead(A0));
motor.run(FORWARD); //aciona o motor
}
motor.run(RELEASE); //Desliga o motor
delay(250); //250ms de atraso
}else{
while(Mem_Value <= AvgMeasure()){ //Ateh chegar na posicao correta
motor.run(BACKWARD); //Aciona o motor
}
motor.run(RELEASE); //Desliga o motor
delay(250); //250ms de atraso
}
KeyStatus = 0; //volta ao estado de tecla nao pressionada
}
}

//Calcula a media de 64 amostras da entrada A0
//(de 10 bits para 16 bits)
unsigned int AvgMeasure(){
int i;
unsigned int Temp = 0;
for (i=0;i<64;i++){
Temp += analogRead(A0); //Soma 64 amostras do A0
}
return Temp; //Retorna valor da media
}



loading...

- Monitor Cardíaco Com Arduino E Pulse Sensor
Recentemente comprei este sensor de batimentos cardíacos no Aliexpress : Fiz um vídeo mostrando os primeiros testes com o sensor e com um software no Arduino: O sensor não tem nada demais, sendo composto por um LED, um sensor de luz e um amplificador...

- Multi Sequencial De Leds Com Arduino
Então eu resolvi brincar com Arduino (versão Uno R3) de novo. A outra vez foi só pra conhecer o ambiente. Desta vez queria descobrir um pouco mais sobre a plataforma e ver uns recursos mais avançados. A ideia aqui foi fazer o manjado circuito de sequencial...

- Arduino - Programa 06: Efeito Sequencial Variável Com Led
Olá pessoal, vamos dar continuidade aos tutoriais de arduino, desta vez trago o código do efeito sequencial com LED, porém há uma característica muito interessante nesse código. Este código é o mesmo do programa anterior, só que agora podemos...

- Circuito Pwm Com C.i. Ne 555
Olá pessoal hoje trago um circuito de um gerador de sinal PWM,  a sigla tem origem do inglês que significa Pulse Width Modulation, traduzindo para nosso belo idioma, Modulação Por Largura de Pulso. Um circuito de PWM tem inúmeras aplicações,...

- Controlando Motor Dc Com Transistor
Por hoje trago um circuito que testei e funciona muito bem, com ele podemos controlar a velocidade de um motor de corrente continua através de um potenciômetro e um transistor. Esse circuito aproveita a característica que o transistor tem que...



Eletrônica








.