Go Down

Topic: PROBLEMA CON SENSORES Y LECTURA DE TIEMPO (Read 527 times) previous topic - next topic

monse_mon

Hola, que tal soy novata en el uso de arduino , pero por cosas de la escuela tengo que hacer un viscocimetro  y por lo que pido ayuda es que no se como hacer para obtener un valor de tiempo entre el accionamiento de dos sensores (efecto Hall), que cuando pase por el primero inicie el contador y al pasar por el segundo se detenga y guardar ese valor para que me lo muestre en el Seria.print :)  Si me pudieran ayudar porfavor . Muchas gracias . estoy ocupando un arduino mega 2560

Code: [Select]
const int HALLSENSOR1=5;
const int HALLSENSOR2=8;
const int LED1=7;
const int LED2=9;
unsigned long tinicio=0;
unsigned long tfinal=0;
unsigned long ttotal=0;

int v;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
  pinMode(LED1, OUTPUT);
  pinMode(HALLSENSOR1, INPUT);
   pinMode(LED2, OUTPUT);
  pinModeHALLSENSOR2, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
if(digitalRead(HALLSENSOR1)==HIGH)
{
 
  tinicio=millis();
   digitalWrite(LED1,HIGH);
  // Serial.print(millis()/1000);
   //Serial.print("\n");
   
  }
 else
 {
  digitalWrite(LED1,LOW);
  }
 if(digitalRead(HALLSENSOR2)==HIGH)
 {
 
  digitalWrite(LED2,HIGH);
  ttotal=millis()-tinicio;
 // Serial.print (ttotal);
  //Serial.print("\n");
  }
  else
  {
    digitalWrite(LED2,LOW);
    }

surbyte

Prueba de este modo. Leves correcciones

Code: [Select]
const byte HALLSENSOR1    = 5;
const byte HALLSENSOR2    = 8;
const byte LED1           = 7;
const byte LED2           = 9;
unsigned long tinicio     = 0;
unsigned long tfinal      = 0;
unsigned long ttotal      = 0;
bool hs1, hs2, hs1Ant, hs2Ant;
int v;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
  pinMode(HALLSENSOR1, INPUT);
  pinMode(LED2, OUTPUT);
  pinMode(HALLSENSOR2, INPUT);
}

void loop() {
 
  hs1 = digitalRead(HALLSENSOR1);
  hs2 = digitalRead(HALLSENSOR2);

  if (h1 && !h1Ant) {
      tinicio = millis();
      digitalWrite(LED1,HIGH);
      // Serial.print(millis()/1000);
      //Serial.print("\n");
   
  } else {
      digitalWrite(LED1,LOW);
  }
  hs1Ant = hs1;

  if (hs2 && !hs2Ant) {
      digitalWrite(LED2,HIGH);
      ttotal = millis()- tinicio;
      Serial.print("Total: ");
      Serial.println(ttotal);

  } else {
      digitalWrite(LED2,LOW);
  }
  hs2Ant = hs2;
}

monse_mon


Go Up