ajuda com o código

Pessoal o código abaixo foi feito em duas parte separadas e ambas funcionavam muito bem

quando juntei as duas quase tudo funcionou mas o botão1 que deveria acender a lampada de forma fixa passou a piscar bem fraco

não sei se é algum bug ou conflito
alguém consegue ajudar ?

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int contador = 0;
//int valorCalibrado = 236;
int ValorLido = A0;
const int ledPin = 13;
const int Botao1 = 4;
const int Botao2 = 3;
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int var1=0; // valor instantaneo enviado pelo botão
int var2=0; // valor guardado

void setup(){
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print(“Karamuru”);
lcd.setCursor(0,1);
lcd.print("Num.Pecas: ");
}
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
}

void loop(){
if(analogRead(A0) > 600) //objeto passando entre o LDR e o LED
{
contador++;//Incrementa o contador em 1

Serial.println(contador);
while(analogRead(A0) > 600)
{
}
delay(100);//Aguarda 500 ms.
lcd.setCursor(11,1);
lcd.print(contador);
}

{
Serial.print("Valor lido pelo LDR= ");
Serial.println(ValorLido);
delay(500);
}
{
var1=digitalRead(Botao1); // ler o valor enviado pelo botão: “HIGH” ou “LOW”
if ((var1 == HIGH) && (var2 == LOW))
{
EstadoBotao1 = 1 - EstadoBotao1;
delay(20); // de-bouncing
}
var2=var1;
if (EstadoBotao1 == 1) {
digitalWrite(ledPin, HIGH); // liga o led
} else {
digitalWrite(ledPin, LOW); // desliga o led
}
EstadoBotao2 = digitalRead(Botao2);
if(EstadoBotao2 == HIGH){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
}

Não definiste botao1 como entrada... como tens o botão ligado? Tens um pull-up??

De resto a tua lógica é um pouco complexa, mas será melhor tirar a limpo a ligação do botão antes de prosseguir com mais possibilidades.