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)); }
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) ); }
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(); }