Технический форум по робототехнике.
SkyStorm писал(а):PF0-PF7 это не 40-47
PF0-PF7 это 0-7
#include <ORM128S.h>
#include <Wire.h>
#define srfAddress 0x70 // Address of the SRF08
#define cmdByte 0x00 // Command byte
#define rangeByte 0x02 // Byte for start of ranging data
byte highByte = 0x00; // Stores high byte from ranging
byte lowByte = 0x00; // Stored low byte from ranging
int ledPin = 47; // Светодиод подключен к пину 47 (PF7)
int getRange(){ // This function gets a ranging from the SRF08
int range = 0;
Wire.beginTransmission(srfAddress); // Start communticating with SRF08
Wire.send(cmdByte); // Send Command Byte
Wire.send(0x51); // Send 0x51 to start a ranging
Wire.endTransmission();
delay(100); // Wait for ranging to be complete
Wire.beginTransmission(srfAddress); // start communicating with SRFmodule
Wire.send(rangeByte); // Call the register for start of ranging data
Wire.endTransmission();
Wire.requestFrom(srfAddress, 2); // Request 2 bytes from SRF module
while(Wire.available() < 2); // Wait for data to arrive
highByte = Wire.receive(); // Get high byte
lowByte = Wire.receive(); // Get low byte
range = (highByte << 8) + lowByte; // Put them together
return(range); // Returns Range
}
// Функция setup() вызываетс раз при запуске скетча
void setup() {
// Установка пина на вывод:
pinMode(ledPin, OUTPUT);
or_m128s_init();
Wire.begin();
}
//Основной цикл программы
void loop()
{
digitalWrite(ledPin, HIGH);
int rng=getRange();
//int rng=30;
delay(50);
digitalWrite(ledPin, LOW);
if(rng>50) rng=50;
if(rng<10) rng=10;
or_m128s_servo_set_position(16,1000+rng*20);
delay(200);
}