Estou projeto de um dosador, e tenho o programa em c para o Arduíno, a ideia é fazer com que tenham três válvulas (as bombas) e que elas abram em tempos diferentes e separadas (primeira e segunda dosam dois líquidos, e a terceira abre pra mistura):
int bombaum = 3;
int bombadois = 5;
int bombatres = 6;
int botaoliga = 9;
void setup()
{
pinMode (bombaum, OUTPUT);
pinMode (bombadois, OUTPUT);
pinMode (bombatres, OUTPUT);
pinMode (botaoliga, INPUT);
}
void loop()
{
if (botaoliga == 1)
{
delay(2000); //espera dois segundos
digitalWrite (3,HIGH); //abre bomba 1 por 2 segundos
delay(2000); //espera dois segundos
digitalWrite (3,LOW); //fecha bomba 1
delay(2000); //espera dois segundos
digitalWrite (5,HIGH); //abre bomba 2
delay(3000); // 3 segundos
digitalWrite (5,LOW); //fecha bomba 2
delay(2000); //espera dois segundos
digitalWrite (6,HIGH); //abre bomba 3
delay(5000); //5 segundos
digitalWrite (6,LOW); //fecha bomba 3
delay(2000); //espera dois segundos
}
}
Preciso adicionar o display no dosador, minha intenção é que a pessoa escolha o programa através do display, ou seja, serão três programas igual o de cima que terão tempos de aberturas das bombas diferentes, o que, automaticamente, irá mudar a quantidade do liquido dosado. Como faço essa programação do display? Como coloco os três programas dentro (no display só vai aparecer 50ml, 100ml, 200ml como nomes dos programas) para a pessoa escolher a opção? E se eu quiser colocar um botão de emergência, como faz?
Tags:
As respostas para este tópico estão encerradas.
OI Caroline, bom dia.
Este é aquele código que corrigi, do seu outro post?
Se for e estiver OK, sugiro colocar a palavra "Resolvido" antes do título do outro post.
Agora voce que adicionar no codigo um LCD com 3 rotinas de tempos diferentes
e um botão de "ESP" ("Emergency Stop Program") . Correto?
Rui
Caroline, boa noite.
ESP = Electronic Stability Program ?
Rui
Caroline, bom dia.
Coisa de velho, esquece tudo. kkk
Vou verificar o codigo. Ok.
Rui
Oi Caroline:
Qual recurso voce pretende usar para mudar de um programa para o outro?
No seu post anterior, voce fala os tempos em "Segundos" e 4 tempos diferentes . Ok?
2seg, 3seg, 5seg e 2seg.
Agora voce fala em ml.
Vou fazer as rotinas em segundos assim : 200ml = 2seg, 3seg, 5seg e 2seg.
100ml = 1seg, 1,5seg, 2,5seg e 2seg.
50ml = 0,5seg, 0,75seg, 1,25seg e 2seg.
Depois voce modifica os valores.
Rui
Oi caroline, veja se isto resolve.
Rui
#include <LiquidCrystal.h> // Biblioteca do LCD
LiquidCrystal lcd(13,12,11,10,9,8); // Pinos do LCD
const int bombaum = 5; // Mudei
const int bombadois = 6; // Mudei
const int bombatres = 7; // Mudei
const int botao_prgm1 = 0;
const int botao_prgm2 = 1;
const int botao_prgm3 = 2;
const int botaoliga = 3; // Mudei para 3 por usar este pino no LCD
const int EPO = 4; // ESP kkkkk
unsigned int debounceDelay = 5; // Tempo de debounce
unsigned int Flagbotaoliga;
unsigned int FlagEPO;
unsigned int Flagbotao_prgm1;
unsigned int Flagbotao_prgm2;
unsigned int Flagbotao_prgm3;
unsigned int ml_50_T1 = 500;
unsigned int ml_50_T2 = 750;
unsigned int ml_50_T3 = 1250;
unsigned int ml_50_T4 = 2000;
unsigned int ml_100_T1 = 1000;
unsigned int ml_100_T2 = 1500;
unsigned int ml_100_T3 = 2500;
unsigned int ml_100_T4 = 2000;
unsigned int ml_200_T1 = 1000;
unsigned int ml_200_T2 = 1500;
unsigned int ml_200_T3 = 2500;
unsigned int ml_200_T4 = 2000;
void setup()
{
lcd.begin(20, 2); // Inicializa LCD de 20 posiçoes e 2 linhas
lcd.setCursor(0,0); // Posiciona cursor na 1 posição da 1a linha
lcd.clear();
lcd.print ("Dosador");
pinMode (bombaum, OUTPUT);
pinMode (bombadois, OUTPUT);
pinMode (bombatres, OUTPUT);
pinMode (botaoliga, INPUT);
pinMode (EPO, INPUT);
pinMode (botao_prgm1, INPUT);
pinMode (botao_prgm2, INPUT);
pinMode (botao_prgm3, INPUT);
digitalWrite(botaoliga, HIGH); // Puul-Up Entrada
digitalWrite(EPO, HIGH); // Puul-Up Entrada
digitalWrite(botao_prgm1, HIGH); // Puul-Up Entrada
digitalWrite(botao_prgm2, HIGH); // Puul-Up Entrada
digitalWrite(botao_prgm3, HIGH); // Puul-Up Entrada
lcd.setCursor(9,0); // Posiciona cursor na 10a. posição da 2a linha
lcd.print ("Deslig.");
Flagbotaoliga = 0;
}
void loop()
{
/* //For debug
digitalWrite(bombaum, HIGH); // Puul-Up Entrada
digitalWrite(bombadois, HIGH); // Puul-Up Entrada
digitalWrite(bombatres, HIGH); // Puul-Up Entrada
delay(100);
digitalWrite(bombaum, LOW); // Puul-Up Entrada
digitalWrite(bombadois, LOW); // Puul-Up Entrada
digitalWrite(bombatres, LOW); // Puul-Up Entrada
delay(100);
*/
// ================= botaoliga deboucing ===================
if(!digitalRead(botaoliga))
{
delay(debounceDelay);
if(!digitalRead(botaoliga))
{
Flagbotaoliga = 1;
FlagEPO = 0;
lcd.setCursor(9,0); // Posiciona cursor na 10a. posição da 2a linha
lcd.print ("Ligado ");
while(!digitalRead(botaoliga)) // Espera pela liberação do switch
delayMicroseconds(1);
}
}
// ================= EPO deboucing ===================
if(!digitalRead(EPO))
{
delay(debounceDelay);
if(!digitalRead(EPO))
{
FlagEPO = 1;
Flagbotaoliga = 0;
lcd.setCursor(9,0); // Posiciona cursor na 10a. posição da 2a linha
lcd.print ("Deslig. ");
lcd.setCursor(0,1); // Posiciona cursor na 1a. posição da 2a linha
lcd.print (" ");
while(!digitalRead(EPO)) // Espera pela liberação do switch
delayMicroseconds(1);
}
}
if (Flagbotaoliga == 1)
{
if (Flagbotao_prgm1 == 1) Program50ml();
if (Flagbotao_prgm2 == 1) Program100ml();
if (Flagbotao_prgm3 == 1) Program200ml();
// ================= botao_prgm1 deboucing ===================
if(!digitalRead(botao_prgm1))
{
delay(debounceDelay);
if(!digitalRead(botao_prgm1))
{
Flagbotao_prgm1 = 1;
Flagbotao_prgm2 = 0;
Flagbotao_prgm3 = 0;
lcd.setCursor(0,1); // Posiciona cursor na 1a. posição da 2a linha
lcd.print ("Programa 50ml ");
while(!digitalRead(botao_prgm1)) // Espera pela liberação do switch
delayMicroseconds(1);
}
}
// ================= botao_prgm2 deboucing ===================
if(!digitalRead(botao_prgm2))
{
delay(debounceDelay);
if(!digitalRead(botao_prgm2))
{
Flagbotao_prgm2 = 1;
Flagbotao_prgm1 = 0;
Flagbotao_prgm3 = 0;
lcd.setCursor(0,1); // Posiciona cursor na 1a. posição da 2a linha
lcd.print ("Programa 100ml");
while(!digitalRead(botao_prgm2)) // Espera pela liberação do switch
delayMicroseconds(1);
}
}
// ================= botao_prgm3 deboucing ===================
if(!digitalRead(botao_prgm3))
{
delay(debounceDelay);
if(!digitalRead(botao_prgm3))
{
Flagbotao_prgm3 = 1;
Flagbotao_prgm1 = 0;
Flagbotao_prgm2 = 0;
lcd.setCursor(0,1); // Posiciona cursor na 1a. posição da 2a linha
lcd.print ("Programa 200ml");
while(!digitalRead(botao_prgm3)) // Espera pela liberação do switch
delayMicroseconds(1);
}
}
}
}
// ================= programa 50ml ===================
void Program50ml()
{
digitalWrite (3,HIGH); //abre bomba 1
delay(ml_50_T2); // Delay
digitalWrite (3,LOW); //fecha bomba 1
delay(ml_50_T4); //espera dois segundos
digitalWrite (5,HIGH); //abre bomba 2
delay(ml_50_T3); // Delay
digitalWrite (5,LOW); //fecha bomba 2
delay(ml_50_T4); //espera dois segundos
digitalWrite (6,HIGH); //abre bomba 3
delay(ml_50_T3); // Delay
digitalWrite (6,LOW); //fecha bomba 3
delay(ml_50_T4); //espera dois segundos
Flagbotao_prgm1 =0;
}
// ================= programa 100ml ===================
void Program100ml()
{
digitalWrite (3,HIGH); //abre bomba 1
delay(ml_100_T1); // Delay
digitalWrite (3,LOW); //fecha bomba 1
delay(ml_100_T4); //espera dois segundos
digitalWrite (5,HIGH); //abre bomba 2
delay(ml_100_T2); // Delay
digitalWrite (5,LOW); //fecha bomba 2
delay(ml_100_T4); //espera dois segundos
digitalWrite (6,HIGH); //abre bomba 3
delay(ml_100_T3); // Delay
digitalWrite (6,LOW); //fecha bomba 3
delay(ml_100_T4); //espera dois segundos
Flagbotao_prgm2 =0;
}
// ================= programa 200ml ===================
void Program200ml()
{
digitalWrite (3,HIGH); //abre bomba 1
delay(ml_200_T1); // Delay
digitalWrite (3,LOW); //fecha bomba 1
delay(ml_200_T4); //espera dois segundos
digitalWrite (5,HIGH); //abre bomba 2
delay(ml_200_T2); // Delay
digitalWrite (5,LOW); //fecha bomba 2
delay(ml_200_T4); //espera dois segundos
digitalWrite (6,HIGH); //abre bomba 3
delay(ml_200_T3); // Delay
digitalWrite (6,LOW); //fecha bomba 3
delay(ml_200_T4); //espera dois segundos
Flagbotao_prgm3 =0;
}
Caroline, de um retorno se funcionou ou não.
Pode ser útil para outros garagistas também.
Rui
Rui!Poderia me dar uma mão?Coisa simples
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por