Necesito contar objetos de 5-10 mm con el uso de 2 sensores en el mega board de arduino. He usado un sensor fotoeléctrico pero es realmente muy lento. Tengo que usar los comandos de retardo (1000) después de contar un objeto porque no está listo para contar un nuevo elemento antes de este período (no sé si este problema está relacionado con el sensor o con mega). Si no uso este período de espera, entonces cuenta con 2-3 elementos, aunque solo 1 artículo pasa por el sensor.
Necesito contar 2 o 3 elementos cada segundo. Incluso no pude usar 1 sensor correctamente y necesito usar dicho sensor 2 en 1 mega board. ¿Qué me ofrece YPU? ¿Los sensores capacitivos son mejores y más rápidos? ¿O no es Arduino lo suficientemente rápido para este proyecto?
Aquí está mi código: (Yo también uso Ethernet Shield)
#include <Ethernet.h>
#include <SPI.h>
int sensorPin = A2;
int ledPin = 13;
int MachineID=2;
int sensorValue = 0;
int dummy=0;
unsigned long TimerB=0;
unsigned long LastTime=0;
unsigned long CurrentTime =0;
unsigned long ElapsedTime =0;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xE0 };
byte ip[] = { 10, 10, 10, 113 };
byte server[] = { 10, 10, 10, 112 };
//byte server[] = { 10, 10, 10, 30 };
EthernetClient client;
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
digitalWrite(ledPin, LOW);
delay(1000);
if (client.connect(server, 8080)) {
Serial.println("connected");
digitalWrite(ledPin, HIGH);
LastTime = millis();
} else {
Serial.println("connection failed");
}
}
void loop()
{
dummy=0;
dummy=SensorControl();
if (dummy>0) {
//Send data to SQL
}
}
int SensorControl()
{
sensorValue=0;
sensorValue = analogRead(sensorPin);
if (sensorValue>1020) {
// Sometimes objects stays in front of sensor for a while.
// So i have to wait until objects leave
while (sensorValue>1020) {
sensorValue = analogRead(sensorPin);
}
//Here i have to wait 1 seconds
TimerB=millis();
while (millis()-TimerB <= 1000) { }
return MachineID;
} else {
return 0;
}
}