Created
March 28, 2019 19:29
-
-
Save mohitbhoite/db8e15952e7b6b9e06d9eb6bbf5987f5 to your computer and use it in GitHub Desktop.
Revisions
-
mohitbhoite created this gist
Mar 28, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,163 @@ /* Function prototypes -------------------------------------------------------*/ int tinkerDigitalRead(String pin); int tinkerDigitalWrite(String command); int tinkerAnalogRead(String pin); int tinkerAnalogWrite(String command); /* This function is called once at start up ----------------------------------*/ void setup() { //Setup the Tinker application here //Register all the Tinker functions Particle.function("digitalread", tinkerDigitalRead); Particle.function("digitalwrite", tinkerDigitalWrite); Particle.function("analogread", tinkerAnalogRead); Particle.function("analogwrite", tinkerAnalogWrite); } /* This function loops forever --------------------------------------------*/ void loop() { //This will run in a loop } /******************************************************************************* * Function Name : tinkerDigitalRead * Description : Reads the digital value of a given pin * Input : Pin * Output : None. * Return : Value of the pin (0 or 1) in INT type Returns a negative number on failure *******************************************************************************/ int tinkerDigitalRead(String pin) { //convert ascii to integer int pinNumber = pin.charAt(1) - '0'; //Sanity check to see if the pin numbers are within limits if (pinNumber< 0 || pinNumber >7) return -1; if(pin.startsWith("D")) { pinMode(pinNumber, INPUT_PULLDOWN); return digitalRead(pinNumber); } else if (pin.startsWith("A")) { pinMode(pinNumber+10, INPUT_PULLDOWN); return digitalRead(pinNumber+10); } return -2; } /******************************************************************************* * Function Name : tinkerDigitalWrite * Description : Sets the specified pin HIGH or LOW * Input : Pin and value * Output : None. * Return : 1 on success and a negative number on failure *******************************************************************************/ int tinkerDigitalWrite(String command) { bool value = 0; //convert ascii to integer int pinNumber = command.charAt(1) - '0'; //Sanity check to see if the pin numbers are within limits if (pinNumber< 0 || pinNumber >7) return -1; if(command.substring(3,7) == "HIGH") value = 1; else if(command.substring(3,6) == "LOW") value = 0; else return -2; if(command.startsWith("D")) { pinMode(pinNumber, OUTPUT); digitalWrite(pinNumber, value); delay(300); digitalWrite(pinNumber, 0); return 1; } else if(command.startsWith("A")) { pinMode(pinNumber+10, OUTPUT); digitalWrite(pinNumber+10, value); delay(300); digitalWrite(pinNumber+10, 0); return 1; } else if(command.startsWith("TX")) { pinMode(TX, OUTPUT); digitalWrite(TX, value); delay(300); digitalWrite(TX, 0); return 1; } else if(command.startsWith("RX")) { pinMode(TX, OUTPUT); digitalWrite(RX, value); delay(300); digitalWrite(RX, 0); return 1; } else return -3; } /******************************************************************************* * Function Name : tinkerAnalogRead * Description : Reads the analog value of a pin * Input : Pin * Output : None. * Return : Returns the analog value in INT type (0 to 4095) Returns a negative number on failure *******************************************************************************/ int tinkerAnalogRead(String pin) { //convert ascii to integer int pinNumber = pin.charAt(1) - '0'; //Sanity check to see if the pin numbers are within limits if (pinNumber< 0 || pinNumber >7) return -1; if(pin.startsWith("D")) { return -3; } else if (pin.startsWith("A")) { return analogRead(pinNumber+10); } return -2; } /******************************************************************************* * Function Name : tinkerAnalogWrite * Description : Writes an analog value (PWM) to the specified pin * Input : Pin and Value (0 to 255) * Output : None. * Return : 1 on success and a negative number on failure *******************************************************************************/ int tinkerAnalogWrite(String command) { //convert ascii to integer int pinNumber = command.charAt(1) - '0'; //Sanity check to see if the pin numbers are within limits if (pinNumber< 0 || pinNumber >7) return -1; String value = command.substring(3); if(command.startsWith("D")) { pinMode(pinNumber, OUTPUT); analogWrite(pinNumber, value.toInt()); return 1; } else if(command.startsWith("A")) { pinMode(pinNumber+10, OUTPUT); analogWrite(pinNumber+10, value.toInt()); return 1; } else return -2; }