Resolvido - Acionar motor motor 3,2 volt Arduíno uno alimentador automático

Boa noite, estou com um projeto simples de alimentador para aquário utilizando ração peletizada onde acionarei um motor de vibra call de celular para dosar a ração ao peixes, conforme vídeo em anexo.

Inicialmente gostaria de aciona-lo a cada 12 horas, mas sem o módulo RTC, pois ainda não o possuo.

Contudo a minha primeira duvida é como acionarei o vibracall no Arduíno, visto que o mesmo precisa de 3,2 volt para funcionar.

Outra duvida é como temporizar sem o módulo RTC, vi que é possível, mas não encontrei nenhum material sobre o assunto. Andei comprando alguns livros sobre o assunto, mas justamente o que me interessava não achei.

Estou entrando agora nesse mundo incrível do Arduíno e agradeceria a ajuda 

Exibições: 6889

Anexos

Responder esta

Respostas a este tópico

Tiago testei seu programa, mas alterei a hora para 0 horas e ele ligou o motor mas não desligou após 3 segundos, continuou ligado...

assim:

// temporizador para acionamento motor final

int seg=0, min=0,hor=0; // inteiros referente ao relógio
int motPin = 12; // pino de saida do sinal
int motState = LOW; // motState usado para armazena o estado atual do motor aceso o desligado
long intervalo = 1000; // intervalo de um segundo

void setup()
{
pinMode(motPin, OUTPUT); // saida do sinal para ativar o motor
Serial.begin(9600);

}
void loop (){

relogio();// aciona comando relógio
mot (); // aciona o comando motor

}
void relogio()
{
static unsigned long ult_tempo = 0;
int tempo = millis();
if(tempo - ult_tempo >= 1000) {
ult_tempo = tempo;
seg++;
}
if(seg>=60)
{
seg = 0;
min++;
}
if(min>=60) {
min = 0;
hor++;
}
if(hor>=24)
{
hor=0;
min=0;
}
Serial.print(hor); // imprime a hora no monitor serial para verificar se o relógio está funcionando
Serial.print(":");
Serial.print(min);
Serial.print(":");
Serial.println(seg);
}

void mot (){

if (hor == 0 || hor == 18 && min == 0 && seg <= 3){ // liga o motor quando for 0 ou 18 horas por aproximadamente 3 seg
motState = HIGH;//
}
else // caso contrário desliga o motor
{
motState = LOW; // caso contrário desliga o motor no restante do tempo
}

digitalWrite(motPin, motState);
if (motState == HIGH)
Serial.println("ligou"); // imprime ligou no serial monitor para verificar se o código está funcionando
else
Serial.println("desligou");// imprime "desligou" no serial monitor para verificar se o código está funcionando
}// fim

o que está faltando ai... tá tudo ligado como no seu exemplo com um motor...

Um amigo me ajudou e mudou o código.

assim:

int seg=0, minu=0,hor=0; // inteiros referente ao relógio
int motPin = 12; // pino de saida do sinal
int motState = LOW; // motState usado para armazena o estado atual do motor aceso o desligado
long intervalo = 1000; // intervalo de um segundo
void setup()
{
pinMode(motPin, OUTPUT); // saida do sinal para ativar o motor
Serial.begin(9600);
}
void loop (){
relogio();// aciona comando relógio
mot (); // aciona o comando motor
}
void relogio()
{
static unsigned long ult_tempo = 0;
int tempo = millis();
if(tempo - ult_tempo >= 1000) {
ult_tempo = tempo;
seg++;
}
if(seg>=60)
{
seg = 0;
minu++;
}
if(minu>=60) {
minu = 0;
hor++;
}
if(hor>=24)
{
hor=0;
minu=0;
}
Serial.print(hor); // imprime a hora no monitor serial para verificar se o relógio está funcionando
Serial.print(":");
Serial.print(minu);
Serial.print(":");
Serial.println(seg);
}
void mot (){

  if (hor == 0 && minu == 0 && seg > 5){ // define o primeiro horário de ligação do motor
motState = HIGH;//
}

if (hor == 0 && minu == 0 && seg > 10){ // define o primeiro horário de desligamento do motor
motState = LOW;//
}

if (hor == 0 && minu == 0 && seg > 15){ // define o segundo horário de ligação do motor
motState = HIGH;//
}

if (hor == 0 && minu == 0 && seg > 20){ // define o segundo horário de desligamento do motor
motState = LOW;//
}

digitalWrite(motPin, motState);
if (motState == HIGH)
Serial.println("ligou"); // imprime ligou no serial monitor para verificar se o código está funcionando
else
Serial.println("desligou");// imprime "desligou" no serial monitor para verificar se o código está funcionando
}

mas eu quero usar o seu código... oque está faltando nele???

descobri o erro, o código está em anexo. Quando você quer dar uma enfase em um intervalo deve ser colocado parenteses ex:

você colocou assim:

if (hor == 0 || hor == 18 && min == 1 && seg <= 3)

para reforçar que é exatamente em 1 min e 3 seg que o arduino devera ligar fica assim;

if ((hor == 0 || hor == 18) && ((min == 0) && (seg <= 3)))

desta forma o Arduíno é o obrigado verificar cada um dos parentes antes de executar a ação, sem eles o Arduíno não repeita o intervalo proposto.

Anexos

Tiago, me perdoe por ficar te perturbando, mas o display LCD é de uma marca nacional  vei no kit da robocore que comprei antes de conhecer o garagino, é um display LCD 1602 BYY OP 2014/5749DA LC ELETRÔNICA - ele tem 16 colunas de pinos atrás e exibe no display em duas colunas....

Esse como falei é simples, apesar de nunca ter utilizado, tem bastante material

http://labdegaragem.com/profiles/blogs/tutorial-lcd-com-arduino

http://labdegaragem.com/profiles/blogs/projeto-arduino-como-rel-gio

http://www.comofazerascoisas.com.br/projeto-arduino-com-display-lcd...

http://engenheirando.com/arduino/displaylcd/

e esse aqui acho que é o mais parecido com o meu código com lcd

http://forum.arduino.cc/index.php/topic,61886.0.html

você vai ver que é quase a mesma coisa que imprimir na serial

Que embalagem foi aquela que estava com a ração, no video.

Fiquei curioso para fazer um também.

Olá Sidney, eu utilizei Tubo Falcon 50ml, você compra em lojas de produtos laboratoriais, é bem barato, mas eu só achei no atacado tive que comprar 50 rsrsrs. Ele é bom pq possui forma uma espécie de funil e possui um excelente volume.

só não resolvi um problema, quando esbarro no potinho derrubo ração acidentalmente, precisava descobrir como fazer uma especie de tampinha para só derrubar ração só quando o motor acionasse, fora isso o sistema funciona muito bem.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço