Hola mucho gusto, estoy tratando de hacer una banda transportadora, uso sensores infrarojo de arduino, uno es para activar el motor 28byj48 y despues de un tiempo se detendra, la idea es que con otros 2 sensores uni arriba del otro, diferenciar un objeto grande de otro chico ( cuando pasa un objeto chico solo se activa un sensor, cuando pasa uno grande se activan los 2 sensores) el asunto es que mientras el motor corre cuando el sensor siente el objeto el contador no cambia ( uso dos 7 segmentos, uno para objetos grandes y otro para chicos) no logro que el codigo tenga esas 2 secciones por separado, me pueden ayudar? les dejo mi codigo
#include <Stepper.h>
int stepsPerRevolution = 2048;
int motSpeed = 12;
Stepper myStepper(stepsPerRevolution,53,49,51,47);
byte sensor3=12;
int display7a[10]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};
byte a=2;
byte b=3;
byte c=4;
byte d=5;
byte e=6;
byte f=7;
byte g=8;
int contador=0;
void puerto(int bits,int ini,int fin){
for(int i=ini;i<=fin;i++)
{
digitalWrite(i,bitRead(bits,i-ini));
}
}
byte sensor=9;
int display7b[10]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};
byte h=22;
byte k=23;
byte l=24;
byte n=25;
byte m=26;
byte o=27;
byte p=28;
int contador2=0;
byte sensor2=10;
void setup() {
myStepper.setSpeed(motSpeed);
for(int i=a;i<=g;i++){
pinMode(i,OUTPUT);
}
for(int j=h;j<=p;j++){
pinMode(j,OUTPUT);
}
pinMode(sensor,INPUT);
pinMode(sensor2,INPUT);
pinMode(sensor3,INPUT);
}
void loop() {
if(digitalRead(sensor3) == LOW){
delay(100);
myStepper.step(stepsPerRevolution);
delay(5000);
myStepper.step(0);
delay(100);
}
//
if(digitalRead(sensor) == LOW && digitalRead(sensor2) == HIGH ){
delay(100);
while(digitalRead(sensor) == LOW && digitalRead(sensor2) == HIGH ); //Anti-Rebote
delay(100);
contador++;
}
if(contador>9){
contador=0;
}
if(digitalRead(sensor) == LOW && digitalRead(sensor2) == LOW ){
delay(100);
while(digitalRead(sensor) == LOW && digitalRead(sensor2) == LOW ); //Anti-Rebote
delay(100);
contador2++;
}
if(contador2>9){
contador2=0;
}
puerto(display7a[contador],a,g);
puerto(display7b[contador2],h,p);
}