Etiquetas: , , ,

Um robô se constitui de quatro componentes principais: os motores para dar movimento, a mecânica para a sua estrutura, sensores para fazê-lo reagir ao ambiente, e o programa para relacionar e gerenciar estes componentes e assim criar a funcionalidade desejada.

Os sensores são importantes quando se pretende dar um certo nível de autonomia ao robô. Veremos agora como utilizá-los.

Introdução aos sensores

Um sensor serve para medir uma variável física (velocidade, ângulo, temperatura, etc.). Existe uma diversidade de sensores, alguns passivos, outros ativos (precisam de alimentação elétrica). Neste tutorial, veremos o caso de um sensor de luminosidade, mas o nosso exemplo pode ser aplicado a outros tipos de sensores.

Este tutorial se aplica para sensores:

Passivos:

  • fotorresistores (sensores de luminosidade)
  • sensores de vibração
  • botões de pressão

Ativos:

  • sensores infravermelhos
  • sensores de ultrassom

Esquema de ligação

Os sensores podem ter diferentes montagens, sobretudo em função do número de ligações necessárias. Em geral, eles têm dois ou mais pinos de conexão (câmera). O sensor é ligado ao Vin/GND e a um ou mais canais analógicos da placa Arduino. Para criar o terceiro canal no caso de sensores passivos, é preciso adicionar uma resistência para ler a tensão nos seus terminais.

bp-sensor-scheme_bb Sensores para dar sentidos ao seu robô
ir-sensor-scheme_bb-640x340 Sensores para dar sentidos ao seu robô

Código básico para leitura dos valores

Dependendo do tipo de sensor, ele pode devolver dois tipos de informação sob a forma de tensão elétrica: um estado (alto ou baixo) ou um valor discreto.

Para ler um estado, a função utilizada é digitalRead(). Ela devolve um estado alto (HIGH) ou baixo (LOW), que reflete a tensão aplicada no terminal digital do Arduino (números 0,1,2,etc.).

/*Read digital state*/
// Constants
#define DELAY 500 // Delay between two measurements in ms

// Parameters
const int sensorPin = 2; // Pin connected to sensor

//Variables
int sensorState; // state from the sensor

void setup(void) {
  Serial.begin(9600);
  pinMode(sensorPin,INPUT);
}

void loop(void) {
  sensorState = digitalRead(sensorPin);
 
  if (sensorState == HIGH) {
     Serial.print(F("Sensor state is HIGH "));
  } else {
     Serial.print(F("Sensor state is LOW "));
  }
  delay(DELAY);
}

Para ler um valor discreto, a função a se utilizar é a analogRead(). Ela devolve um valor entre 0 e 1023, reflitindo a tensão lida no terminal analógico do Arduino (números A0,A1,A2,etc.).

/*Read analog signal*/
// Constants
#define DELAY 500 // Delay between two measurements in ms

// Parameters
const int sensorPin = A0; // Pin connected to sensor

//Variables
int sensorVal; // Analog value from the sensor

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  sensorVal = analogRead(sensorPin);
  Serial.print(F("Sensor reading = "));
  Serial.println(sensorVal); // the analog reading
  delay(DELAY);
}

Aplicação

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie