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
Tags:
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.
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por