#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//Leitura do pino de sinal do moedeiro na entrada 12
#define moedeiro A0
//Variáveis para a contagem de milissegundos
unsigned long millisTarefa0 = millis();
unsigned long millisTarefa1 = millis();
unsigned long millisTarefa2 = millis();
unsigned long millisTarefa3 = millis();
unsigned long millisTarefa4 = millis();
unsigned long millisTarefa5 = millis();
unsigned long millisTarefa6 = millis();
unsigned long millisTarefa7 = millis();
LiquidCrystal_I2C lcd(0x27 ,16,2);
//Variáveis globais
int credito = 0;
int botao_start2=2;
int contador3=3;
int saida3=3;
int botao_start4=4;
int contador5=5;
int saida5=5;
int botao_start6=6;
int contador7=7;
int saida7=7;
int botao_start8=8;
int contador9=9;
int saida9=9;
int botao_start10=10;
int contador11=11;
int saida11=11;
int botao_start12=12;
int contador13=13;
int saida13=13;
int botao_startA2=A2;
int contadorA3=A3;
int saidaA3=A3;
int flag;
int fita_de_leds=A1;
void setup() {
lcd.init(); // Inicializando o LCD
lcd.backlight();
Serial.begin (9600);
lcd.begin(16,2);
lcd.setCursor(1,0);
lcd.print(" COQUETELEIRA");
lcd.setCursor(0,1);
lcd.print(" AUTOMATICA");
delay(6000);
lcd.clear();
delay(100);
pinMode(botao_start2, INPUT_PULLUP);
pinMode(saida3, OUTPUT);
pinMode(botao_start4, INPUT_PULLUP);
pinMode(saida5, OUTPUT);
pinMode(botao_start6, INPUT_PULLUP);
pinMode(saida7, OUTPUT);
pinMode(botao_start8, INPUT_PULLUP);
pinMode(saida9, OUTPUT);
pinMode(botao_start10, INPUT_PULLUP);
pinMode(saida11, OUTPUT);
pinMode(botao_start12, INPUT_PULLUP);
pinMode(saida13, OUTPUT);
pinMode(botao_startA2, INPUT_PULLUP);
pinMode(saidaA3, OUTPUT);
pinMode(moedeiro, INPUT_PULLUP);
pinMode(fita_de_leds, OUTPUT);
Serial.println ("Inicializado!");
}
void loop(){
// Executa tarefa 0 so lede enfeite
tarefa0();
// Executa tarefa 1
tarefa1();
// Executa tarefa 2
tarefa2();
// Executa tarefa 3
tarefa3();
// Executa tarefa 4
tarefa4();
// Executa tarefa 5
tarefa5();
// Executa tarefa 6
tarefa6();
// Executa tarefa 7
tarefa7();
}
void tarefa0(){
if((millis() - millisTarefa0) < 200){
// Acende o fita_de_leds
if(credito==0){
digitalWrite(fita_de_leds, LOW);}
}else{
// Apaga o fita_de_leds
digitalWrite(fita_de_leds, HIGH);
}
// Verifica se já passou 400 milisegundos
if((millis() - millisTarefa0) > 400){
millisTarefa0 = millis();
}
}
void tarefa1(){
// Verifica se já passou 50 milisegundos
if((millis() - millisTarefa1) < 50){
//Se detectar pulso do moedeiro, aumenta o crédito e exibe no LCD
if (!digitalRead(moedeiro)) {
credito++;
lcd.clear();
lcd.print("Credito: ");
lcd.print(credito);
Serial.print ("Moedas = ");
Serial.println (credito);
delay(500);
}
//Se apertar botão start, diminui um crédito e inicia contagem
botao_start2=digitalRead(2);
if(botao_start2==LOW && credito>0){
credito--;
contador3=2; //contagem de tempo
flag=1;
while(flag==1){
contagem();
}
delay(100);
}
//Atualiza no LCD o crédito
lcd.setCursor(0,0);
lcd.print("Credito: ");
lcd.print(credito);
lcd.print(" ");
}
// Verifica se já passou 100 milisegundos
if((millis() - millisTarefa1) > 100){
millisTarefa1 = millis();
}
}
void contagem(){
//Ativa a saída
digitalWrite(saida3, HIGH);
//Inicia a contagem decrescente
contador3--;
lcd.setCursor(0,1);
lcd.print("DOSANDO: ");
lcd.print("00:");
//Adiciona "0" se o número for menor que 10
if(contador3<10){
lcd.print("0");
}
lcd.print(contador3);
delay(1000);
//Quando o contador zerar, muda a flag, zera contador e desliga saída
if(contador3<= 0){
flag=0;
contador3=0;
digitalWrite(saida3, LOW);
delay(1000);
lcd.clear();
}
}
void tarefa2(){
// Verifica se já passou 50 milisegundos
if((millis() - millisTarefa2) < 50){
//Se detectar pulso do moedeiro, aumenta o crédito e exibe no LCD
if (!digitalRead(moedeiro)) {
credito++;
lcd.clear();
lcd.print("Credito: ");
lcd.print(credito);
Serial.print ("Moedas = ");
Serial.println (credito);
delay(500);
}
//Se apertar botão start, diminui um crédito e inicia contagem
botao_start4=digitalRead(4);
if(botao_start4==LOW && credito>0){
credito--;
contador5=3; //contagem de tempo
flag=1;
while(flag==1){
contagem5();
}
delay(100);
}
//Atualiza no LCD o crédito
lcd.setCursor(0,0);
lcd.print("Credito: ");
lcd.print(credito);
lcd.print(" ");
}
// Verifica se já passou 100 milisegundos
if((millis() - millisTarefa2) > 100){
millisTarefa2 = millis();
}
}
void contagem5(){
//Ativa a saída
digitalWrite(saida5, HIGH);
//Inicia a contagem decrescente
contador5--;
lcd.setCursor(0,1);
lcd.print("DOSANDO: ");
lcd.print("00:");
//Adiciona "0" se o número for menor que 10
if(contador5<10){
lcd.print("0");
}
lcd.print(contador5);
delay(1000);
//Quando o contador zerar, muda a flag, zera contador e desliga saída
if(contador5<= 0){
flag=0;
contador5=0;
digitalWrite(saida5, LOW);
delay(1000);
lcd.clear();
}
}
esse code esta funcionando o que eu gostaria é de alterar o valor de desconto de creditos atualmente ele desconta de 1 em 1 e gostaria de alterar em cada tarefa fosse valor diferente porem sou bem leigo e estou comesando agora comprogramação