/* This function loops forever --------------------------------------------*/ void loop() { if (millis() - old_time >= 500){ socValue = FUEL.getSoC(); PMIC.setInputCurrentLimit(500); //D0 to D7 for(uint8_t i = 0;i<8;i++){ digitalWrite(i,!digitalRead(i)); } //A0 to A5 for(uint8_t i = 10;i<17;i++){ digitalWrite(i,!digitalRead(i)); } //B0 to B5, C0 to C5 for(uint8_t i = 24;i<36;i++){ digitalWrite(i,!digitalRead(i)); } old_time = millis(); } if (millis() - pubSoc >= 5*60000){ Particle.publish("soc"+deviceName, String(FUEL.getSoC()), 120, PRIVATE); pubSoc = millis(); } }
/* This function is called once at start up ----------------------------------*/ void setup() { if (System.deviceID() == "5b0033000e51343035353132") deviceName = "-3g"; RGB.brightness(10); Serial.begin(9600); PMIC.begin(); FUEL.quickStart(); Serial.println(""); //D0 to D7 for(uint8_t i = 0;i<8;i++){ pinMode(i,OUTPUT); digitalWrite(i,LOW); } //A0 to A5 for(uint8_t i = 10;i<17;i++){ pinMode(i,OUTPUT); digitalWrite(i,LOW); } //B0 to B5, C0 to C5 for(uint8_t i = 24;i<36;i++){ pinMode(i,OUTPUT); digitalWrite(i,LOW); } electronMDM.setDebug(3); // enable this for debugging issues delay(3000); DEBUG_D("\e[0;36mHello from the Electron! Boot time is: %d\r\n",millis()); Particle.connect(); // blocking call to connect //Register all the Tinker functions Particle.function("digitalread", tinkerDigitalRead); Particle.function("digitalwrite", tinkerDigitalWrite); Particle.function("analogread", tinkerAnalogRead); Particle.function("analogwrite", tinkerAnalogWrite); Particle.variable("soc",&socValue,DOUBLE); Particle.variable("test","test-string",STRING); PMIC.setInputCurrentLimit(150); }
void setupPower() { Serial1.println("Entered power setup"); Serial1.println("Initializing PMIC"); power.begin(); delay(500); Serial1.println("Setting input voltage limit"); power.setInputVoltageLimit(4120); delay(50); Serial1.println("Disabling PMIC watchdog timer"); power.disableWatchdog(); delay(50); Serial1.println("Disabling DPDM detection"); power.disableDPDM(); delay(50); //Serial1.println("Setting input current limit"); //power.setInputCurrentLimit(100); //delay(50); //Serial1.println("disabling buck regulator"); //power.disableBuck(); //delay(50); //Serial1.println("turning off battery FET"); //power.disableBATFET(); //delay(20); //power.setChargeCurrent(0,0,0,0,0,0); //512 //delay (50); //Serial1.println("Forcing charge enable"); //power.enableCharging(); //delay(50); }
/* This function loops forever --------------------------------------------*/ void loop() { //updatePower(); //Serial1.print("power off returned:"); //Serial1.println(electronMDM.powerOff()); //RGB.color(0,0,255); //delay(200); //RGB.color(0,255,0); //delay(200); //RGB.color(255,0,0); //delay(200); //Serial1.println(power.readPowerONRegister(),BIN); if (Serial1.available() > 0) { char inByte = Serial1.read(); Serial1.print("I rxed this shit:"); Serial1.println(inByte); if (inByte == 'o') { Serial1.println("char o received"); power.enableOTG(); delay(50); } if (inByte == 'd') { Serial1.println("char d received"); power.disableCharging(); delay(50); } if (inByte == 'e') { Serial1.println("char d received"); power.enableCharging(); delay(50); } } //System.sleep(SLEEP_MODE_DEEP,60); }
// Setup method runs once, when the sketch starts void setup() { // Stop red LED blinking on Electron batteryCharger.disableCharging(); Serial.begin(9600); delay(100); Serial.println("Logomatic"); randomSeed(HAL_RNG_GetRandomNumber()); // FIXME: disable gesture sensor for now //gesture.begin(); setupAnimationContext(); setupSdCard(); addStartupAnimations(); }
/* This function is called once at start up ----------------------------------*/ void setup() { RGB.control(true); RGB.color(0,0,255); delay(1000); Serial1.begin(9600); delay(200); power.begin(); delay(500); Serial1.println("Disabling PMIC watchdog timer"); power.disableWatchdog(); delay(50); //Serial1.println("Enabling OTG/PMID"); //power.enableOTG(); //delay(50); //Serial1.println("disabling buck regulator"); //power.disableBuck(); //delay(50); Serial1.print("power on returned:"); Serial1.println(electronMDM.powerOn("8934076500002587657")); //setupPower(); //delay(200); //fuel.sleep(); /* RGB.color(0,0,255); delay(200); RGB.color(0,255,0); delay(200); RGB.color(255,0,0); delay(200); RGB.color(0,0,0); power.begin(); delay(100); if (fuel.getVersion() == 3) { RGB.color(0,255,0); } else { RGB.color(255,0,0); } delay(2000); fuel.sleep(); delay(100); */ //electronMDM.powerOff(); //System.sleep(SLEEP_MODE_DEEP,60); //setupPower(); //electronMDM.setDebug(3); // enable this for debugging issues //delay(3000); //DEBUG_D("\e[0;36mHello from the Electron! Boot time is: %d\r\n",millis()); //Particle.connect(); // blocking call to connect //Register all the Tinker functions //Particle.function("digitalread", tinkerDigitalRead); //Particle.function("digitalwrite", tinkerDigitalWrite); //Particle.function("analogread", tinkerAnalogRead); //Particle.function("analogwrite", tinkerAnalogWrite); //Particle.function("sleep",sleep); //Particle.connect(); // blocking call to connect //Serial1.begin(9600); //Serial1.println("Setup complete"); //delay(1000); Serial1.print("Fuel Gauge Version Number: "); Serial1.println(fuel.getVersion()); delay(200); fuel.sleep(); delay(200); //Serial1.print("power off returned:"); //Serial1.println(electronMDM.powerOff()); }
void updatePower(void) { //Serial1.println("Setting input voltage limit"); //power.setInputVoltageLimit(4); //delay(50); Serial1.println("Setting input current limit"); power.setInputCurrentLimit(500); delay(50); //Serial1.println("Force DPDM detection"); //power.enableDPDM(); //delay(500); //Serial1.println("Forcing charge enable"); //power.enableCharging(); //delay(50); //Serial1.println("Enabling the buck regulator"); //power.enableBuck(); //delay(50); //This will run in a loop Serial1.print("Power good: "); Serial1.println(power.isPowerGood()); Serial1.print("System Status: "); Serial1.println(power.getSystemStatus(), BIN); byte status = 0; status = power.getSystemStatus(); if (status & 0b00000001) Serial1.println("In regulation: YES"); else Serial1.println("In regulation: NO"); //if (status & 0b00000010) Serial1.println("HOT"); //else Serial1.println("Normal"); if (status & 0b00000100) Serial1.println("Power: Good"); else Serial1.println("Power: Bad"); if (status & 0b00000100) Serial1.println("In DPM mode: YES"); else Serial1.println("In DPM mode: NO"); if ((status & 0b00110000) == 0x00) //00 Serial1.println("Not charging"); if ((status & 0b00110000) == 0x30) //11 Serial1.println("Charge termination done"); if ((status & 0b00110000) == 0x10) //01 Serial1.println("Pre charging"); if ((status & 0b00110000) == 0x20) //10 Serial1.println("Fast charging"); if ((status & 0b11000000) == 0x00) //00 Serial1.println("no input/dpdm detection incomplete"); if ((status & 0b11000000) == 0x40) //01 Serial1.println("USB Host"); if ((status & 0b11000000) == 0x80) //10 Serial1.println("Adaptor Port"); if ((status & 0b11000000) == 0xC0) //11 Serial1.println("OTG"); Serial1.print("Input Register: "); Serial1.println(power.readInputSourceRegister(), BIN); Serial1.print("Term/Timer Register: "); Serial1.println(power.readChargeTermRegister(), BIN); Serial1.print("Misc Operation Register: "); Serial1.println(power.readOpControlRegister(), BIN); Serial1.print("Charge current control register: "); Serial1.println(power.getChargeCurrent(), BIN); Serial1.println(" ---------- "); delay(2000); }