#define ECHOPIN 2 // Echo pin z HC-SC04 na pin 2
#define TRIGPIN 10 // Trig pin z HC-SC04 na pin 5
float distance = 0.0;
static unsigned long startTime;
static unsigned long pulseWidth;
void EchoPinISR()
{
if (digitalRead(2)) // Gone HIGH
startTime = micros();
else{ // Gone LOW
pulseWidth = micros() - startTime;
distance = pulseWidth * 0.017315f;
}
}
void setup()
{
//Nastaví sériovou komunikaci
Serial.begin(9600);
//Nastaví pin 2 jako vstupní
pinMode(ECHOPIN, INPUT);
attachInterrupt(digitalPinToInterrupt(ECHOPIN), EchoPinISR, CHANGE);
//Nastaví pin 5 jako výstupní
pinMode(TRIGPIN, OUTPUT);
}
void trig()
{
// Vyšle impuls do modulu HC-SR04
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
}
int lastPing=0;
void loop()
{
if (lastPing+20 < millis())
{
lastPing = millis();
trig();
}
//delay(12); // 4m čekání
if (distance < 1000)
{
// odešle informace na sérivý port
Serial.println(distance); // pro zobrazení na plotru
}else
{
// ERROR
}
}
Zdroj:
http://forum.arduino.cc/index.php?topic=283086.0
Žádné komentáře:
Okomentovat