Ajuda com codigo socorro

estou tentendo executar esse codigo ate a tarrefa 2 ele funciona apartir da 3 da erro por favor me ajudem
coqueteleira - Wokwi ESP32, STM32, Arduino Simulator esse link tem a simulação

o objetivo équandocoloca credito libera umasaida quando aciona o botao da saida diminui o credito porem se colocar mais de um botão da erro

#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 millisTarefa1 = millis();
unsigned long millisTarefa2 = 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 flag;
int fita_de_leds=A1;

void setup() {

Serial.begin (9600);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Coloque moeda");
delay(2000);
pinMode(botao_start2, INPUT_PULLUP);
pinMode(saida3, OUTPUT);
pinMode(botao_start4, INPUT_PULLUP);
pinMode(saida5, OUTPUT);
pinMode(moedeiro, INPUT_PULLUP);
pinMode(fita_de_leds, OUTPUT);

Serial.println ("Inicializado!");
}
void loop(){
// Executa tarefa 1
tarefa1();
// Executa tarefa 2
tarefa2();

tarefa3();
}
void tarefa1(){
if((millis() - millisTarefa1) < 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() - millisTarefa1) > 400){
millisTarefa1 = millis();
}
}

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_start2=digitalRead(2);
if(botao_start2==LOW && credito>0){
credito--;
contador3=3; //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() - millisTarefa2) > 100){
millisTarefa2 = millis();
}
}

void contagem(){
//Ativa a saída
digitalWrite(saida3, HIGH);
//Inicia a contagem decrescente
contador3--;
lcd.setCursor(0,1);
lcd.print("tempo: ");
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 tarefa3(){
//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){
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() - millisTarefa3) > 100){
millisTarefa2 = millis();
}
}

void contagem5(){
//Ativa a saída
digitalWrite(saida5, HIGH);
//Inicia a contagem decrescente
contador5--;
lcd.setCursor(0,1);
lcd.print("tempo: ");
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(saida3, LOW);
delay(1000);
lcd.clear();
}

}

  // } // esto fuera
  // Verifica se já passou 100 milisegundos
  if ((millis() - millisTarefa2) > 100) { // cambio millisTarefa>>3<< millisTarefa2

mesmo alterando da erro

Incorreto. Faça as duas alterações.

Dois tópicos, mesmo assunto.

Existem 2 erros:

  1. Uma chave indevida (}) fechando na linha 148; (148 no simulado e 144 no codigo postado).
  2. Falta definir a variável millisTarefa3 usada na linha 150.

PS: Por favor refaça seu tópico e coloque o seu codigo entre as tags, clicando em < code > na barra de ferramentas.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.