ARDUINO - PRECISO ACIONAR QUATRO MOTORES CADA UM EM UM HORARIO DIFERENTE E POR PERIODOS DE TEMPO DIFERENTES ALGUEM PODE ME AJUDAR???
Tags:
Não tenho conhecimentos em arduino mas já programei em Delphi e gostaria de saber por onde iniciar, eu preciso acionar quatro motores para um alimentador de cães cada
um em um horário e por períodos de funcionamento diferentes.
ESSE MODELO EU ACHEI AQUI NO SITE SERIA ALGO PARECIDO, MAS O USUARIO IRIA USAR UM 3 PUSH BUTTOM PARA SELECIONAR ENTRE 3 PROGRAMAS DIFERENTE .
CADA PROGRAMA ACIONARIA OS 4 MOTORES CADA UM EM UM TEMPO DIFERENTE E POR UM PERÍODO DE FUNCIONAMENTO, TUDO PRÉ PROGRAMADO.
A ÚNICA COISA QUE O USUÁRIO PODERIA SELECIONAR SERIA ENTRE AS TRES PROGRAMAÇÕES.
ESSE FOI O MODELO QUE ACHEI NO SITE ALGUÉM PODE ME AJUDAR???
// 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 == 6 || hor == 18 && min == 0 && seg <= 3){ // liga o motor quando for 6 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
testei o código funciona o circuito ficou igual abaixo:
Utilizei os seguintes componentes
1 vibramotor de celular
1 TIP 222
1 resistor 1 k ohlm
1 diodo IN4007
no projeto final irei utilizar dois motores
Agora com o esquema funcionando só preciso descobrir quantos segundos o motor precisa funcionar para que derrube a quantidade de ração que eu preciso, mas isso é tranquilo.
Olá Clayton,
Sim, dá pra fazer em arduino e com uma relativa facilidade o que você deseja.
Nesse codigo que você apresentou, é utilizado o proprio clock do arduino para gerar um relogio, o que signfica dizer que quando faltar energia vai tudo pra o ralo, mas se sua intenção é fazer funcionar, mas não se preocupando com o horario em si, mas apenas com a diferença de tempo entre acionamentos, então tá tudo ok.
Vamos ao codigo que você colocou, vou tentar explicar já que você diz que não entende muito de arduino.
Nesse codigo, a parte importante esta dentro do void loop, é lá que acontece a festa.
No seu exemplo, foi criada uma programação estruturada, onde se criou duas funções, uma é a função relogio, a outra é o acionamento de um motor em horario fixo setado no programa que serias as 6 e as 18h.
Bem, o que você pode fazer é copiar essa função mot() e coloca-la como mot1(), mot2(), mot3()... etc. mudando apenas o horario em cada uma delas, isso é bem facil de fazer, é uma programação meio grande, mas é o mais facil de fazer.
Pra que a coisa fique mais fácil, dê uma olhada nesse meu tutorial ensinando justamente a fazer isso, ou seja, estruturar o codigo : http://labdegaragem.com/forum/topics/tutorial-programando-de-forma-...
Sobre ter botões pra acionar, você os coloca na chamada de cada função, dentro do void loop, fica algo mais ou menos tipo:
int buttonState=digitalRead(2);
if (buttonState==HIGH){
mot1();
}
Dai é só replicar pra os outros botões.
Mas antes de mais nada, aconselho vocÊ a dar uma lida a mais sobre arduino, existem otimos livros, vale a pena dar uma estudada, eu programava no antigo Clipper e tambem já programei em Delphi, parei, mas a experiencia de programação ajuda de uma forma monstro a entender o arduino.
Esse é ó código que vou usar com apenas um motor e dois horários para ligar e desligar
Esse é ó código que vou usar com apenas um motor e dois horários para ligar e desligar:
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
}
Estou precisando do seguinte um push button para hora e um push button para os minutos, a intenção é que o usuário possa programar a hora em que o motor vai ligar e desligar, tudo isso sendo exibido num Display de 16x2. Ah! que essas mensagens exibidas no serial monitor possam ser impressas no monitor. Você pode me ajudar???
Tem muita cosa na internet - procure Arduino dog feeder ou cat feeder
https://www.youtube.com/watch?v=YejpfCDh4Lc
http://www.instructables.com/id/DogduinoThe-Automatic-Dog-Feeder/?l...
http://lifehacker.com/5904141/diy-automatic-cat-feeder
http://makezine.com/projects/automatic-pet-feeder/
http://mad-science.wonderhowto.com/how-to/build-vacation-pet-feeder...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por