Sensor de distância HC-SR04 com Arduino e Programação C#

Continuando na mesma linha , agora é apresentada uma aplicação para um sensor de distância bastante conhecido, o HC-SR04  para o Arduino usando programação em C# para ler a informação proveniente deste sensor (ver fotografia). A medição da distância por vezes torna-se um parâmetro bastante importante em diversos campos. Com esta intenção foi feito este simples trabalho.

2015-11-08 18.36.43

Mas para isso é necessário compilar e carregar o seguinte código para o Arduino:

// Sensor HC-SR04 

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin

long duration, distance; 

void setup()
{
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  delay(200);
}

void loop() 
{
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration/58.2;
  Serial.println(distance);
  delay(1000);
}

Código este que é standard para este sensor.  Quanto à rotina em programação em C# é mostrada abaixo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;

namespace Arduino_test1
{
    class Program
    {
        static void Main(string[] args)
        {
            SerialPort port = new SerialPort();
            port.BaudRate = 9600;
            port.PortName = "COM8";
            port.Open();
            int N = 20, distance;

            Console.WriteLine("       ");
            Console.WriteLine("       ");
            Console.WriteLine("   Ler distancia com HS-SR04, Arduino e programação em C# - Tech-Portugal \n");
            for (int i = 1; i < N; i++)
            {

                string data_rx = port.ReadLine();
                distance = Convert.ToInt32(data_rx); // to converter to int type

                Console.WriteLine(string.Format("                   Distancia: {0:0.0##}  cm", distance));

            }

            Console.ReadKey(true);

        }
    }
}

A programação em C# é uma linguagem de alto nível e comparando com o trabalho anterior Aquisição de dados com DFR Arduino Romeo e o Dev-C++, assiste-se agora à simplicidade de código.

Por fim, este trabalho culminou na seguinte interface:

Capturar11

Onde é possível visualizar os dados da distância do sensor ao alvo. O Tech-Portugal tem o gosto de partilhar estas pequenas aplicações para incentivar as pessoas a programar e a fazer as suas próprias soluções.