Me podrían ayudar con éste código..

Es para una banda transportadora la cual consta de tres sensores CNY70 que detectarán los objetos, el problema es que no me da resultados. Por qué el LED se queda encendido aunque le pase un objeto en frente del sensor? Aquí les dejo el programa, espero me puedan ayudar :slight_smile: :slight_smile: :sweat_smile:

int estadoBoton = 0;
int salida = 0;
int estadoAnterior = 0;

int ledPin1 = 3;    
int infraPin = 5;    
int valorInfra = 0;

int motor = 2;



void setup() {
 // put your setup code here, to run once:
pinMode(8 , INPUT );
pinMode(4 , OUTPUT );


pinMode(ledPin1, OUTPUT);     // Inicializa el pin del LED1 como salida digital
 
 pinMode(infraPin, INPUT);



pinMode(motor,OUTPUT);

} 

void loop() {
 /*
*/
 valorInfra = digitalRead(infraPin);    // Lee el valor de la entrada 5, esto es, el valor que lee el infrarrojo
       //Escribe en el pin 3 el valor que lee la entrada 5, esto es, el mismo valor que lee el infrarrojo
   //  digitalWrite(ledPin1, LOW);                                   //Si el infrarrojo lee 0, entonces, el LED estará apagado
                                       // Si el infrarrojo lee 1, entonces, el LED estará encendido */
if(valorInfra > 200) {             // Se asigna a valorInfra el valorInfra negado. Si valorInfra es 1, el nuevo valorInfra será 0; y viceversa
 digitalWrite(ledPin1, HIGH);
delay(1000);
} else{ 
digitalWrite(ledPin1, LOW);
}


//hdsdgscsvyte  
 // put your main code here, to run repeatedly:
estadoBoton = digitalRead(8);



if((estadoBoton == HIGH) && (estadoAnterior == LOW) ){
 
 salida = 1 - salida ;
 delay(20);
}

estadoAnterior = estadoBoton;
 
 if(salida == 1) {
 digitalRead(4);
 digitalWrite(motor,HIGH);
 }  
 
 
 else {
   digitalRead(4);

digitalWrite(motor,LOW); 
   
}


}

No acabo de entender lo que quieres, pero a ver si te ayuda un poco:

byte ledPin1 = 3;    
byte infraPin = 5;  
byte motor = 2;
byte botonPin = 8;    // Este lo supuse

bool valorInfra;
bool estadoBoton;
bool estadoAnterior = false;

bool salida = false;

void setup() 
{
  pinMode(ledPin1, OUTPUT);     // Inicializa el pin del LED1 como salida digital
  pinMode(motor, OUTPUT);
  pinMode(infraPin, INPUT);
  pinMode(botonPin, INPUT);
} 

void loop() 
{
  valorInfra = digitalRead(infraPin);    // Lee el valor de la entrada 5, esto es, el valor que lee el infrarrojo
  digitalWrite(ledPin1, valorInfra);
  
  estadoBoton = digitalRead(infraPin);
  if(estadoBoton  && !estadoAnterior)
  {
    salida = !salida ;
    delay(20);
  }
  estadoAnterior = estadoBoton;
  digitalWrite(motor,salida);
}

Hola,

Un consejo: si se trata de una banda transportadora industrial debes tener mucho cuidado con lo que haces. No sólo es que puedas estropearla, es que si hay un accidente pueden ocurrir cosas graves -cualquier motor a partir de 1/4 HP tiene mucho par-.

¿De qué se trata?

Saludos

saludos.

como haría en el caso de que colocando una medida vía serial, y un motor paso a paso se active hasta que sense la distancia introducida anterior mente ?

muchas gracias.

No revivas hilos viejos.
Crea un hilo con tu consulta y si quieres menciona este.
Lee las normas del foro y no hagas como el OP de este hilo que posteó código sin etiquetas.
Hilo cerrado