Created
January 29, 2015 20:35
-
-
Save harrisonhjones/e5d5d581e180b52c9fab to your computer and use it in GitHub Desktop.
Spark Tinker
This file contains 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
/** | |
****************************************************************************** | |
* @file application.cpp | |
* @authors Satish Nair, Zachary Crockett and Mohit Bhoite | |
* @version V1.0.0 | |
* @date 05-November-2013 | |
* @brief Tinker application | |
****************************************************************************** | |
Copyright (c) 2013 Spark Labs, Inc. All rights reserved. | |
This program is free software; you can redistribute it and/or | |
modify it under the terms of the GNU Lesser General Public | |
License as published by the Free Software Foundation, either | |
version 3 of the License, or (at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
Lesser General Public License for more details. | |
You should have received a copy of the GNU Lesser General Public | |
License along with this program; if not, see <http://www.gnu.org/licenses/>. | |
****************************************************************************** | |
*/ | |
/* Includes ------------------------------------------------------------------*/ | |
#include "application.h" | |
/* Function prototypes -------------------------------------------------------*/ | |
int tinkerDigitalRead(String pin); | |
int tinkerDigitalWrite(String command); | |
int tinkerAnalogRead(String pin); | |
int tinkerAnalogWrite(String command); | |
SYSTEM_MODE(AUTOMATIC); | |
/* This function is called once at start up ----------------------------------*/ | |
void setup() | |
{ | |
//Setup the Tinker application here | |
//Register all the Tinker functions | |
Spark.function("digitalread", tinkerDigitalRead); | |
Spark.function("digitalwrite", tinkerDigitalWrite); | |
Spark.function("analogread", tinkerAnalogRead); | |
Spark.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); | |
return 1; | |
} | |
else if(command.startsWith("A")) | |
{ | |
pinMode(pinNumber+10, OUTPUT); | |
digitalWrite(pinNumber+10, value); | |
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")) | |
{ | |
pinMode(pinNumber, INPUT); | |
return analogRead(pinNumber); | |
} | |
else if (pin.startsWith("A")) | |
{ | |
pinMode(pinNumber+10, INPUT); | |
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