problemas com codigo

amigos bom dia estou com um problema que é o seguinte:

preciso fazer o arduino acionar dois reles no projeto tem um contador de voltas com um sensor IR quando atingir a volta de numero 20 aciona o rele1, esse mesmo rele1 deve ser acionado quando o contador marcar 40, 60, 80 e 100 voltas porem quando o contador chegar na volta de numero 100 aciona tambem o rele2 e zera a contagem voltando ao numero 1 e repetindo todo o loop.

podem me ajudar abaixo segue o codigo que fiz mais sem sucesso:

#include<LiquidCrystal.h> // Inclui a biblioteca do display
#define ir A0// Define o pino do sensor como entrada
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// PINS FOR LCD
#define rele1 6 // Define o pino do rele de 20 voltas
#define rele2 7 // Define o pino do rele de 100 voltas
int count = 0;// Variavel para contar o numero de voltas

// observação os reles ligam em nivel baixo LOW e desligam em nivel alto HIGH.

void setup() {
pinMode(2, OUTPUT); // Definição dos pinos do display LCD 16x2 e pinos do rele1 e rele2 e pino de entrada do sensor IR
pinMode(3, OUTPUT); // display
pinMode(4, OUTPUT); // display
pinMode(5, OUTPUT); // display
pinMode(11, OUTPUT); // display
pinMode(12, OUTPUT); // display
pinMode(A0, INPUT); // sensor porta A0
pinMode(6, OUTPUT); // rele1
pinMode(7, OUTPUT); // rele2
digitalWrite(6, HIGH); // coloca o rele1 iniciando desligado
digitalWrite(7, HIGH); // coloca o rele2 iniciando desligado

lcd.begin(16, 2); // Ligando o Display
lcd.clear();
lcd.print(“Contador de Voltas”);
lcd.setCursor(0, 2);
lcd.print(" De ");
delay(1000);
lcd.clear();
lcd.print(“Nikolas Anjos”);
lcd.setCursor(0, 2);
lcd.print(“Thiago G Lima”);// Programador
delay(1000);

}

void loop() {
if (digitalRead(ir) == 1) // verificando entrada de sinal
{
while (digitalRead(ir) == 1) // aguardando entrada e saida
{};
count = count + 1; // Incremento do contador mais 1
lcd.clear();
lcd.print(“No. de voltas:”);
lcd.setCursor(0, 2);
lcd.print(count);// mostra no display o numero de voltas
delay(50);
}
else
{
lcd.clear();// Caso um sinal seja recebino no sensor
lcd.print(“No. De Voltas:”);
lcd.setCursor(0, 2);
lcd.print(count);
delay(50);

if (count == 20) { // acionar rele1 na volta 20
digitalWrite(rele1, LOW);
delay(500);
digitalWrite(rele1, HIGH);

if (count == 40) { // acionar rele1 na volta 40
digitalWrite(rele1, LOW);
delay(500);
digitalWrite(rele1, HIGH);

if (count == 60){ //acionar rele1 na volta 60
digitalWrite(rele1, LOW);
delay(500);
digitalWrite(rele1, HIGH);

if (count == 80){ //acionar rele1 na volta80
digitalWrite(rele1, LOW);
delay(500);
digitalWrite(rele1, HIGH);

if (count == 100) { //acionar rele1 e rele2 na volta 100
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
delay(500);
digitalWrite(rele1, HIGH);
digitalWrite(rele2, HIGH);

if (count == 100){ // zera o contador
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ");
delay(1);
}
}
}
}
}
}
}
}

Boa tarde,

Uma coisa que me deixou confuso é o fato que você está lendo seu sensor em um pino analógico, mas você lê ele de maneira digital (analogRead). Isso é intencional? Se não, você deve usar analogRead().
Outra coisa, quando você usa o comando "lcd.setCursor(0, 2);", o primeiro parâmetro se refere a coluna que você quer escrever e o segundo a qual linha. E observe que a linha vai de 0 a 1 já que seu display é 16x2. Então o ponto (0,2) não existe.
A ultima coisa que eu pude perceber que está estranha é que você está desligando o relé 1 a cada 20 voltas e ligando ele 500ms depois, e ele se mantem acionado até dar 20 voltas novamente. (É intencional?) E também quando chega na volta 100, você está esquecendo de acionar o relé 1 e o 2.
Dê uma olhadinha no que eu falei e qualquer duvida coloca o código arrumado aqui que eu tento arrumar ele pra você e te explicar.

Att,
Fábio

Não intendi sua duvida. Sugiro uma otimização:

troque os IF'S por switch case possivelmente amenizara problemas de conflito:

switch(count) {

case 10:
//codigo aqui
break; // para e continua o loop
case 20:
//codigo aqui
break; // para e continua o loop
case 30:
//codigo aqui
break; // para e continua o loop
.....
case 100: //(o 100 você esta repetindo já que poderia apenas fazer isso:)
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
delay(500);
digitalWrite(rele1, HIGH);
digitalWrite(rele2, HIGH);
delay(100); // só para da uma suavizada
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ");
delay(100); // tirei um para mais 100 só para suavizar
break; // para e continua o loop

}

O teu problema é com a contagem... apesar de não o teres dito. E muito provavelmente o que causa o problema é estares a usar delays no teu código.