Exemple #1
0
static void writeRegister(uint8_t i2cAddress, uint8_t reg, uint16_t value) {
  Wire.beginTransmission(i2cAddress);
  i2cwrite((uint8_t)reg);
  i2cwrite((uint8_t)(value>>8));
  i2cwrite((uint8_t)(value & 0xFF));
  Wire.endTransmission();
}
void ST7558::invertDisplay(boolean i){
   
   if(i==true)
     i2cwrite(cmd_invert, sizeof(cmd_invert));
   else if(i==false)
     i2cwrite(cmd_on, sizeof(cmd_on));
}
void Adafruit_MPL115A2::getPT(float *P, float *T) {
  uint16_t 	pressure, temp;
  float     pressureComp;

  // Get raw pressure and temperature settings
  Wire.beginTransmission(MPL115A2_ADDRESS);
  i2cwrite((uint8_t)MPL115A2_REGISTER_STARTCONVERSION);
  i2cwrite((uint8_t)0x00);
  Wire.endTransmission();

  // Wait a bit for the conversion to complete (3ms max)
  delay(5);

  Wire.beginTransmission(MPL115A2_ADDRESS);
  i2cwrite((uint8_t)MPL115A2_REGISTER_PRESSURE_MSB);  // Register
  Wire.endTransmission();

  Wire.requestFrom(MPL115A2_ADDRESS, 4);
  pressure = (( (uint16_t) i2cread() << 8) | i2cread()) >> 6;
  temp = (( (uint16_t) i2cread() << 8) | i2cread()) >> 6;

  // See datasheet p.6 for evaluation sequence
  pressureComp = _mpl115a2_a0 + (_mpl115a2_b1 + _mpl115a2_c12 * temp ) * pressure + _mpl115a2_b2 * temp;

  // Return pressure and temperature as floating point values
  *P = ((65.0F / 1023.0F) * pressureComp) + 50.0F;        // kPa
  *T = ((float) temp - 498.0F) / -5.35F +25.0F;           // C
  
}
void Adafruit_CAP1188::writeRegister(uint8_t reg, uint8_t value) {
  if (_i2c) {
    Wire.beginTransmission(_i2caddr);
    i2cwrite((uint8_t)reg);
    i2cwrite((uint8_t)(value));
    Wire.endTransmission();
  } else {
    if (_clk == -1) {
      //SPCRback = SPCR;
      //SPCR = mySPCR;
    }
    digitalWrite(_cs, LOW);
    // set address
    spixfer(0x7D);
    spixfer(reg);
    digitalWrite(_cs, HIGH);
    digitalWrite(_cs, LOW);
    spixfer(0x7E);
    spixfer(value);
    digitalWrite(_cs, HIGH);
    if (_clk == -1) {
      //SPCR = SPCRback;
    }
  }
}
void hmc5883_config(void)
{
//	char tmp[1];
	unsigned char a1 = 0x18;//HMC5883L_TURN_ON | HMC5883L_AVERAGING_1 | NONE_OUTPUT_RATE | HMC5883L_MODE_NORMAL;
	unsigned char a2 = 0x20;
	unsigned char a3 = 0x00;//HMC5883L_TURN_ON | MODE_REG_CONTINOUS_MODE;
	i2cwrite(HMC5983_ADDRESS,ADDR_CONF_A,1,&a1);
	delay_ms(10);
	i2cwrite(HMC5983_ADDRESS,ADDR_CONF_B,1,&a2);
	delay_ms(10);
	i2cwrite(HMC5983_ADDRESS,ADDR_MODE,1,&a3);
	delay_ms(10);
}
void Adafruit_ADXL345_Unified::writeRegister(uint8_t reg, uint8_t value) {
//  if (_i2c) {
    TinyWireM.beginTransmission(ADXL345_ADDRESS);
    i2cwrite((uint8_t)reg);
    i2cwrite((uint8_t)(value));
    TinyWireM.endTransmission();
//  } else {
//    digitalWrite(_cs, LOW);
//    spixfer(_clk, _di, _do, reg);
//    spixfer(_clk, _di, _do, value);
//    digitalWrite(_cs, HIGH);
//  }
}
void ADXL345::writeRegister(uint8_t reg, uint8_t value) {
  if (_i2c) {
    Wire.beginTransmission(ADXL345_ADDRESS);
    i2cwrite((uint8_t)reg);
    i2cwrite((uint8_t)(value));
    Wire.endTransmission();
  } else {
    digitalWrite(_cs, LOW);
    spixfer(_clk, _di, _do, reg);
    spixfer(_clk, _di, _do, value);
    digitalWrite(_cs, HIGH);
  }
}
uint8_t Adafruit_CAP1188::readRegister(uint8_t reg) {
  if (_i2c) {
    Wire.beginTransmission(_i2caddr);
    i2cwrite(reg);
    Wire.endTransmission();
    Wire.requestFrom(_i2caddr, 1);
    return (i2cread());
  } else {
    if (_clk == -1) {
      //SPCRback = SPCR;
      //SPCR = mySPCR;
    }
    digitalWrite(_cs, LOW);
    // set address
    spixfer(0x7D);
    spixfer(reg);
    digitalWrite(_cs, HIGH);
    digitalWrite(_cs, LOW);
    spixfer(0x7F);
    uint8_t reply = spixfer(0); 
    digitalWrite(_cs, HIGH);
    if (_clk == -1) {
      //SPCR = SPCRback;
    }
    return reply;
  }  
}
static int16_t read16(uint8_t reg) {
  Wire.beginTransmission(ADXL345_ADDRESS);
  i2cwrite(reg);
  Wire.endTransmission();
  Wire.requestFrom(ADXL345_ADDRESS, 2);
  return (int16_t)(i2cread() | (i2cread() << 8));
}
Exemple #10
0
static uint16_t readRegister(uint8_t i2cAddress, uint8_t reg) {
  Wire.beginTransmission(i2cAddress);
  i2cwrite(ADS1015_REG_POINTER_CONVERT);
  Wire.endTransmission();
  Wire.requestFrom(i2cAddress, (uint8_t)2);
  return ((i2cread() << 8) | i2cread());  
}
static uint8_t readRegister(uint8_t reg) {
  Wire.beginTransmission(ADXL345_ADDRESS);
  i2cwrite(reg);
  Wire.endTransmission();
  Wire.requestFrom(ADXL345_ADDRESS, 1);
  return (i2cread());
}
uint8_t Adafruit_MMA8451::readRegister8(uint8_t reg) {
    Wire.beginTransmission(_i2caddr);
    i2cwrite(reg);
    Wire.endTransmission(false); // MMA8451 + friends uses repeated start!!

    Wire.requestFrom(_i2caddr, 1);
    if (! Wire.available()) return -1;
    return (i2cread());
}
void ST7558::init(void) {
  Wire.begin();
  
  colstart= 0x80;
  rowstart= 0x40;
  
  hwReset();
  
  i2cwrite(cmd_init, sizeof(cmd_init));
  
  // set up a bounding box for screen updates
  updateBoundingBox(0, 0, _width-1, _height-1);
  
}
void ST7558::display(void) {
  uint8_t col, maxcol, p, maxPages;
  uint8_t buff[17], i;
  
  maxPages=uint8_t(1+(_height-1)/8) ;
  buff[0]= CONTROL_RS_RAM;
  
  //for(p = 0; p < _height/8; p++) {
  for(p = 0; p < maxPages; p++) {
#ifdef enablePartialUpdate
    // check if this page is part of update
    if ( yUpdateMin >= ((p+1)*8) ) {
      continue;   // nope, skip it!
    }
    if (yUpdateMax < p*8) {
      break;
    }
#endif

#ifdef enablePartialUpdate
    col = xUpdateMin;
    maxcol = xUpdateMax;
#else
    // start at the beginning of the row
    col = 0;
    maxcol = _width-1;
#endif
    
    setAddrXY(col, p);
    
    while(col<= maxcol ){
      for(i=1; (i<17)&&(col<= maxcol); i++,col++)
        buff[i]=st7558_buffer[(_width*p)+col];
      i2cwrite(buff, i);
    }
  }
  
  displayOn();
  
  setAddrXY(0, 0);

  //command(PCD8544_SETYADDR );  // no idea why this is necessary but it is to finish the last byte?
#ifdef enablePartialUpdate
  xUpdateMin = _width - 1;
  xUpdateMax = 0;
  yUpdateMin = _height-1;
  yUpdateMax = 0;
#endif

}
void ST7558::setContrast(uint8_t val) {
    
  if (val > 0x7f) {
    val = 0x7f;
  }
  
  uint8_t cmd[]={CONTROL_RS_CMD, 
                           ST7558_FUNCTIONSET | ST7558_EXTENDEDINSTRUCTION, 
                           ST7558_SETVOP | val, 
                           ST7558_FUNCTIONSET
  };

  i2cwrite(cmd, sizeof(cmd));
  
}
uint8_t Adafruit_ADXL345_Unified::readRegister(uint8_t reg) {
//  if (_i2c) {
    TinyWireM.beginTransmission(ADXL345_ADDRESS);
    i2cwrite(reg);
    TinyWireM.endTransmission();
    TinyWireM.requestFrom(ADXL345_ADDRESS, 1);
    return (i2cread());
//  } else {
//    reg |= 0x80; // read byte
//    digitalWrite(_cs, LOW);
//    spixfer(_clk, _di, _do, reg);
//    uint8_t reply = spixfer(_clk, _di, _do, 0xFF);
//    digitalWrite(_cs, HIGH);
//    return reply;
//  }
}
int16_t Adafruit_ADXL345_Unified::read16(uint8_t reg) {
//  if (_i2c) {
    TinyWireM.beginTransmission(ADXL345_ADDRESS);
    i2cwrite(reg);
    TinyWireM.endTransmission();
    TinyWireM.requestFrom(ADXL345_ADDRESS, 2);
    return (uint16_t)(i2cread() | (i2cread() << 8));  
//  } else {
//    reg |= 0x80 | 0x40; // read byte | multibyte
//    digitalWrite(_cs, LOW);
//    spixfer(_clk, _di, _do, reg);
//    uint16_t reply = spixfer(_clk, _di, _do, 0xFF)  | (spixfer(_clk, _di, _do, 0xFF) << 8);
//    digitalWrite(_cs, HIGH);
//    return reply;
//  }
}
uint8_t ADXL345::readRegister(uint8_t reg) {
  if (_i2c) {
    Wire.beginTransmission(ADXL345_ADDRESS);
    i2cwrite(reg);
    Wire.endTransmission();
    Wire.requestFrom(ADXL345_ADDRESS, 1);
    return (i2cread());
  } else {
    reg |= 0x80; // read byte
    digitalWrite(_cs, LOW);
    spixfer(_clk, _di, _do, reg);
    uint8_t reply = spixfer(_clk, _di, _do, 0xFF);
    digitalWrite(_cs, HIGH);
    return reply;
  }  
}
int16_t ADXL345::read16(uint8_t reg) {
  if (_i2c) {
    Wire.beginTransmission(ADXL345_ADDRESS);
    i2cwrite(reg);
    Wire.endTransmission();
    Wire.requestFrom(ADXL345_ADDRESS, 2);
    return (uint16_t)(i2cread() | (i2cread() << 8));  
  } else {
    reg |= 0x80 | 0x40; // read byte | multibyte
    digitalWrite(_cs, LOW);
    spixfer(_clk, _di, _do, reg);
    uint16_t reply = spixfer(_clk, _di, _do, 0xFF)  | (spixfer(_clk, _di, _do, 0xFF) << 8);
    digitalWrite(_cs, HIGH);
    return reply;
  }    
}
void Adafruit_MMA8451::read(void) {
  // read x y z at once
  Wire.beginTransmission(_i2caddr);
  i2cwrite(MMA8451_REG_OUT_X_MSB);
  Wire.endTransmission(false); // MMA8451 + friends uses repeated start!!

  Wire.requestFrom(_i2caddr, 6);
  x = Wire.read(); x <<= 8; x |= Wire.read(); x >>= 2;
  y = Wire.read(); y <<= 8; y |= Wire.read(); y >>= 2;
  z = Wire.read(); z <<= 8; z |= Wire.read(); z >>= 2;


  uint8_t range = getRange();
  uint16_t divider = 1;
  if (range == MMA8451_RANGE_8_G) divider = 1024;
  if (range == MMA8451_RANGE_4_G) divider = 2048;
  if (range == MMA8451_RANGE_2_G) divider = 4096;

  x_g = (float)x / divider;
  y_g = (float)y / divider;
  z_g = (float)z / divider;

}
void Adafruit_MPL115A2::readCoefficients() {
  int16_t a0coeff;
  int16_t b1coeff;
  int16_t b2coeff;
  int16_t c12coeff;

  Wire.beginTransmission(MPL115A2_ADDRESS);
  i2cwrite((uint8_t)MPL115A2_REGISTER_A0_COEFF_MSB);
  Wire.endTransmission();

  Wire.requestFrom(MPL115A2_ADDRESS, 8);
  a0coeff = (( (uint16_t) i2cread() << 8) | i2cread());
  b1coeff = (( (uint16_t) i2cread() << 8) | i2cread());
  b2coeff = (( (uint16_t) i2cread() << 8) | i2cread());
  c12coeff = (( (uint16_t) (i2cread() << 8) | i2cread())) >> 2;

  /*  
  Serial.print("A0 = "); Serial.println(a0coeff, HEX);
  Serial.print("B1 = "); Serial.println(b1coeff, HEX);
  Serial.print("B2 = "); Serial.println(b2coeff, HEX);
  Serial.print("C12 = "); Serial.println(c12coeff, HEX);
  */

  _mpl115a2_a0 = (float)a0coeff / 8;
  _mpl115a2_b1 = (float)b1coeff / 8192;
  _mpl115a2_b2 = (float)b2coeff / 16384;
  _mpl115a2_c12 = (float)c12coeff;
  _mpl115a2_c12 /= 4194304.0;

  /*
  Serial.print("a0 = "); Serial.println(_mpl115a2_a0);
  Serial.print("b1 = "); Serial.println(_mpl115a2_b1);
  Serial.print("b2 = "); Serial.println(_mpl115a2_b2);
  Serial.print("c12 = "); Serial.println(_mpl115a2_c12);
  */
}
void ST7558::displayOff(void){

  i2cwrite(cmd_off, sizeof(cmd_off));
}
static void writeRegister(uint8_t reg, uint8_t value) {
  Wire.beginTransmission(ADXL345_ADDRESS);
  i2cwrite((uint8_t)reg);
  i2cwrite((uint8_t)(value));
  Wire.endTransmission();
}
void ST7558::displayOn(void){
  i2cwrite(cmd_on,sizeof(cmd_on));
}
void ST7558::setAddrXY(uint8_t x, uint8_t y){

  uint8_t cmdXY[]={CONTROL_RS_CMD, 0x20, colstart+x, rowstart+y};  
  
  i2cwrite( cmdXY, sizeof(cmdXY) );
}
Exemple #26
0
void ADXL345::Write(int address, int data) {
	i2cwrite(m_Address, address, data);
}
void Adafruit_MMA8451::writeRegister8(uint8_t reg, uint8_t value) {
  Wire.beginTransmission(_i2caddr);
  i2cwrite((uint8_t)reg);
  i2cwrite((uint8_t)(value));
  Wire.endTransmission();
}