collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por Hugu
[Hoje às 00:54]


[Projecto] Bomba Airsoft por jm_araujo
[Ontem às 16:54]


Apresentação por Tech_JA
[Ontem às 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

Autor Tópico: Sensor SRF02  (Lida 811 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline joao1996f

  • Mini Robot
  • *
  • Mensagens: 17
Sensor SRF02
« em: 07 de Dezembro de 2012, 23:00 »
Olá, o meu Arduino chegou hoje juntamente com um lcd e um sensor ultra-sons SRF02.
Queria meter a distancia que  sensor deteta no lcd, mas so consigo na porta serial.
Código: [Seleccione]
/*


  SRF02 sensor reader


 language: Wiring/Arduino Reads data from a Devantech SRF02 ultrasonic sensor.


 Should also work for the SRF08 and SRF10 sensors as well.


Sensor connections:


 SDA - Analog pin 4


 SCL - Analog pin 5


created 5 Mar. 2007


 by Tom Igoe


*/


// include Wire library to read and write I2C commands:




//#include
#include <Wire.h>
#include <SoftwareSerial.h>


// the commands needed for the SRF sensors:


#define sensorAddress 0x70


#define readInches 0x50


// use these as alternatives if you want centimeters or microseconds:


#define readCentimeters 0x51


#define readMicroseconds 0x52


// this is the memory register in the sensor that contains the result:


#define resultRegister 0x02


void setup()


{


  // start the I2C bus
  pinMode(2, OUTPUT);   
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Wire.begin();


  // open the serial port:


  Serial.begin(9600);


}


void loop()


{


  // send the command to read the result in inches:


  sendCommand(sensorAddress, readCentimeters);


  // wait at least 70 milliseconds for a result:


  delay(70);


  // set the register that you want to reas the result from:


  setRegister(sensorAddress, resultRegister);


// read the result:


  int sensorReading = readData(sensorAddress, 2);


  // print it:


if(sensorReading < 25)
{
digitalWrite(2, HIGH);   // set the verm LED on
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
if(sensorReading > 75)
{
digitalWrite(4, HIGH);   // set the verd LED on
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
if((sensorReading > 25) && (sensorReading < 75))
{
digitalWrite(3, HIGH);   // set the amar LED on
digitalWrite(2, LOW);
digitalWrite(4, LOW);
}




  Serial.print("distancia: ");


  Serial.print(sensorReading);


  Serial.println(" cm");


  // wait before next reading:


  delay(270);


}


/*


  SendCommand() sends commands in the format that the SRF sensors expect


 */


void sendCommand (int address, int command) {


  // start I2C transmission:


  Wire.beginTransmission(address);


  // send command:


  Wire.send(0x00);


  Wire.send(command);


  // end I2C transmission:


  Wire.endTransmission();


}


/*


  setRegister() tells the SRF sensor to change the address pointer position


 */


void setRegister(int address, int thisRegister) {


  // start I2C transmission:


  Wire.beginTransmission(address);


  // send address to read from:


  Wire.send(thisRegister);


  // end I2C transmission:


  Wire.endTransmission();


}


/*


readData() returns a result from the SRF sensor


 */


int readData(int address, int numBytes) {


  int result = 0;        // the result is two bytes long


// send I2C request for data:


  Wire.requestFrom(address, numBytes);


  // wait for two bytes to return:


  while (Wire.available() < 2 )   {


    // wait for result


  }


  // read the two bytes, and combine them into one int:


  result = Wire.receive() * 256;


  result = result + Wire.receive();


  // return the result:


  return result;


}
« Última modificação: 07 de Dezembro de 2012, 23:11 por senso »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Sensor SRF02
« Responder #1 em: 07 de Dezembro de 2012, 23:11 »
Está mais legivel assim.
Pois, não tens código para escrever nada para o lcd, é normal que não mostre nada.
Avr fanboy

Offline joao1996f

  • Mini Robot
  • *
  • Mensagens: 17
Re: Sensor SRF02
« Responder #2 em: 07 de Dezembro de 2012, 23:14 »
Resolvido