/* See the file "LICENSE" for the full license governing this code. */ #include "PCA9634.h" static const uint8_t HydroSense_led_map[] = {2, // signal strength green 6, // gps green 7}; // error PCA9634::PCA9634(uint8_t address){ _address = address; _on_value = 50; } void PCA9634::begin(){ // initalize all leds to default PWM control int i; write_reg( PCA9634_REG_MODE1, 0 ); write_reg( PCA9634_REG_MODE2, 0x16 ); // INVRT | OUTDRV | OUTNE1 write_reg( PCA9634_REG_LEDOUT0, PCA9634_ALL_LED_TO_PWM ); write_reg( PCA9634_REG_LEDOUT1, PCA9634_ALL_LED_TO_PWM ); for (i=0; i < 8; i++){ set_brightness(i, 0); } } void PCA9634::set_on_value(uint8_t on){ _on_value = on; } uint8_t PCA9634::set_mode1(uint8_t mode1){ return write_reg( PCA9634_REG_MODE1, mode1 ); } uint8_t PCA9634::set_mode2(uint8_t mode2){ return write_reg (PCA9634_REG_MODE2, mode2); } uint8_t PCA9634::set_brightness(uint8_t led, uint8_t duty_cycle){ // limit led to a 3-bit unsigned value. return write_reg( PCA9634_REG_PWM0 + ( (uint8_t) (led & 0x7) ), duty_cycle ); } uint8_t PCA9634::set_all_brightness(uint8_t color0, uint8_t color1, uint8_t color2, uint8_t color3, uint8_t color4, uint8_t color5, uint8_t color6, uint8_t color7){ Wire.beginTransmission( _address ); Wire.write( PCA9634_REG_PWM0 + 0xA0 ); Wire.write( color0 ); Wire.write( color1 ); Wire.write( color2 ); Wire.write( color3 ); Wire.write( color4 ); Wire.write( color5 ); Wire.write( color6 ); Wire.write( color7 ); return Wire.endTransmission( ); } uint8_t PCA9634::write_reg(uint8_t reg, uint8_t value){ Wire.beginTransmission( _address ); Wire.write( reg ); Wire.write( value ); return Wire.endTransmission( ); } void PCA9634::read_brightness (uint8_t led){ Wire.beginTransmission(_address); //Comienza la transmisión Wire.write(PCA9634_REG_PWM0 + 0X80); Wire.endTransmission(); // Finaliza la transmisión Wire.requestFrom(_address, 8); //solicita un numero de bytes al esclavo en la dirección address byte buff[8]; delay(100); Wire.readBytes(buff, 8); for (int i = 0; i < 8; i++) { Serial.print(" "); Serial.print(buff[i], HEX); } Serial.println(); }