اگر کسی کدنویسی بلده کمک کنه لطفا...خ.اهش می کنم کمک کنید

مریم.7

عضو جدید
ممکنه کسی این کدها رو واسم توضیح بده؟؟؟؟؟؟؟؟؟؟؟؟/واسه آردوینو نوشته شده


.
.
#include <Wire.h>


//* An IR LED must be connected to Arduino PWM pin 3.


#include <IRremote.h>
IRsend irsend;


//accelorometer address
#define ADXL345_Address (0x53) // ADXL345 device address
#define ADXL345_POWER_CTL (0x2d)
#define ADXL345_DATA_FORMAT (0x31)


#define ADXL345_DATAX0 (0x32)
#define ADXL345_DATAX1 (0x33)


#define ADXL345_DATAY0 (0x34)
#define ADXL345_DATAY1 (0x35)


#define ADXL345_DATAZ0 (0x36)
#define ADXL345_DATAZ1 (0x37)


/*
* Sets the range setting, possible values are: 2, 4, 8, 16
*/
void ADXL345_setRangeSetting(int val) {
byte _s;
byte _b;
switch (val)
{
case 2:
_s = B00000000;
break;
case 4:
_s = B00000001;
break;
case 8:
_s = B00000010;
break;
case 16:
_s = B00000011;
break;
default:
_s = B00000000;
}
_b= (byte) i2c_readRegister(ADXL345_Address,ADXL345_DATA_FORMAT);
_s |= (_b & B11101100);
i2c_writeRegister(ADXL345_Address,ADXL345_DATA_FORMAT, _s);
}


//get x raw data from accel
double _getRaw_AX() {
return (double)((signed short)(((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAX1)) << 8) | ((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAX0)));
}


//get y raw data from accel
double _getRaw_AY() {
return (double)((signed short)(((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAY1)) << 8) | ((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAY0)));
}


//get z raw data from accel
double _getRaw_AZ() {
return (double)((signed short)(((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAZ1)) << 8) | ((byte) i2c_readRegister(ADXL345_Address, ADXL345_DATAZ0)));
}


/*
* Write register to i2c device with specific i2c
*/
void i2c_writeRegister(byte deviceAddress, byte address, byte val) {
Wire.beginTransmission(deviceAddress); // start transmission to device
Wire.write(address); // send register address
Wire.write(val); // send value to write
Wire.endTransmission(); // end transmission
}


/*
* Read a byte from i2c device with specific address
*/
byte i2c_readRegister(byte deviceAddress, byte address) {
unsigned int Dt=millis();

Wire.beginTransmission(deviceAddress);
Wire.write(address); // register to read
Wire.endTransmission();
Wire.requestFrom(deviceAddress, 2); // read a byte
while((!Wire.available())&&(millis()<(Dt+100))) { } //wait until ready or time out!
return (byte)Wire.read();
}

void setup() {
pinMode(8, OUTPUT);

Wire.begin();
delay(100);

ADXL345_setRangeSetting(16);
i2c_writeRegister(ADXL345_Address,ADXL345_POWER_CTL, 0x08); //begin to mesure
}


byte TsensorValue=0;
byte Roll=0;


void loop() {
digitalWrite(8, HIGH);

TsensorValue = analogRead(A0);

Roll = (byte) (atan2(_getRaw_AX(),_getRaw_AZ())*314.0) + 128;

digitalWrite(8, LOW);

irsend.sendSony(255, 12); //send 255
delay(25);
irsend.sendSony(255, 12); //255
delay(25);
irsend.sendSony(Roll, 12);
delay(25);
irsend.sendSony(TsensorValue, 12);
delay(20);
}
 
بالا