Created
March 28, 2019 19:29
-
-
Save mohitbhoite/db8e15952e7b6b9e06d9eb6bbf5987f5 to your computer and use it in GitHub Desktop.
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 characters
/* 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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment