Lets you control your mbed from an easy to use GUI. Entire project is on git hub: https://github.com/navin-bhaskar/Controller For usage info follow this link http://navinbhaskar.blogspot.in/2013/02/arduino-controller-3.html

Dependencies:   mbed

Committer:
Navin
Date:
Tue Feb 26 03:51:46 2013 +0000
Revision:
1:9d3340bcd863
Parent:
0:fe5850ccdb6f
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Navin 1:9d3340bcd863 1 /*
Navin 1:9d3340bcd863 2 * This program is free software; you can redistribute it and/or modify
Navin 1:9d3340bcd863 3 * it under the terms of the GNU General Public License as published by
Navin 1:9d3340bcd863 4 * the Free Software Foundation; either version 2 of the License, or
Navin 1:9d3340bcd863 5 * (at your option) any later version.
Navin 1:9d3340bcd863 6 *
Navin 1:9d3340bcd863 7 * This program is distributed in the hope that it will be useful,
Navin 1:9d3340bcd863 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Navin 1:9d3340bcd863 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Navin 1:9d3340bcd863 10 * GNU General Public License for more details.
Navin 1:9d3340bcd863 11 *
Navin 1:9d3340bcd863 12 * You should have received a copy of the GNU General Public License
Navin 1:9d3340bcd863 13 * along with this program; if not, write to the Free Software
Navin 1:9d3340bcd863 14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
Navin 1:9d3340bcd863 15 * MA 02110-1301, USA.
Navin 1:9d3340bcd863 16 *
Navin 1:9d3340bcd863 17 */
Navin 1:9d3340bcd863 18
Navin 1:9d3340bcd863 19 /**
Navin 1:9d3340bcd863 20 * \brief Implements the mbed perephiral access interface
Navin 1:9d3340bcd863 21 * \author Navin Bhaskar
Navin 1:9d3340bcd863 22 */
Navin 0:fe5850ccdb6f 23
Navin 0:fe5850ccdb6f 24 /**
Navin 0:fe5850ccdb6f 25 * Implements the peripheral access functionalities
Navin 0:fe5850ccdb6f 26 */
Navin 0:fe5850ccdb6f 27
Navin 0:fe5850ccdb6f 28 #include "MbedPerAccess.h"
Navin 0:fe5850ccdb6f 29 #include "error.h"
Navin 0:fe5850ccdb6f 30 #include "mbed.h"
Navin 0:fe5850ccdb6f 31
Navin 0:fe5850ccdb6f 32 /**
Navin 0:fe5850ccdb6f 33 * Outputs the given logic level at the given pin
Navin 0:fe5850ccdb6f 34 */
Navin 0:fe5850ccdb6f 35
Navin 0:fe5850ccdb6f 36 uint MbedPerAccess::digitalOut(uint pinNo, uint val)
Navin 0:fe5850ccdb6f 37 {
Navin 0:fe5850ccdb6f 38 DigitalOut ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20,
Navin 0:fe5850ccdb6f 39 p21, p22, p23, p24, p25, p26, p27, p28, p29, LED1, LED1, LED2, LED3, LED4
Navin 0:fe5850ccdb6f 40 };
Navin 0:fe5850ccdb6f 41 if (pinNo > _maxDigiOutPins) {
Navin 0:fe5850ccdb6f 42
Navin 0:fe5850ccdb6f 43 return ERR_INVALID_PIN;
Navin 0:fe5850ccdb6f 44 }
Navin 0:fe5850ccdb6f 45 if (val == 0) {
Navin 0:fe5850ccdb6f 46 ports[pinNo] = 0;
Navin 0:fe5850ccdb6f 47 } else {
Navin 0:fe5850ccdb6f 48 ports[pinNo] = 1;
Navin 0:fe5850ccdb6f 49 }
Navin 0:fe5850ccdb6f 50 return ERR_SUCCESS;
Navin 0:fe5850ccdb6f 51 }
Navin 0:fe5850ccdb6f 52
Navin 0:fe5850ccdb6f 53 /**
Navin 0:fe5850ccdb6f 54 * Reads the voltage level at given pin and returns
Navin 0:fe5850ccdb6f 55 * it's logical value.
Navin 0:fe5850ccdb6f 56 */
Navin 0:fe5850ccdb6f 57
Navin 0:fe5850ccdb6f 58 uint MbedPerAccess::digitalIn(uint pinNo, uint * val)
Navin 0:fe5850ccdb6f 59 {
Navin 0:fe5850ccdb6f 60 DigitalIn ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20,
Navin 0:fe5850ccdb6f 61 p21, p22, p23, p24, p25, p26, p27, p28, p29
Navin 0:fe5850ccdb6f 62 };
Navin 0:fe5850ccdb6f 63 if (pinNo > _maxDigiInPins) {
Navin 0:fe5850ccdb6f 64 return ERR_INVALID_PIN;
Navin 0:fe5850ccdb6f 65 }
Navin 0:fe5850ccdb6f 66
Navin 0:fe5850ccdb6f 67
Navin 0:fe5850ccdb6f 68 *val = ports[pinNo];
Navin 0:fe5850ccdb6f 69 return ERR_SUCCESS;
Navin 0:fe5850ccdb6f 70 }
Navin 0:fe5850ccdb6f 71
Navin 0:fe5850ccdb6f 72 /**
Navin 0:fe5850ccdb6f 73 * Outputs the analog value.
Navin 0:fe5850ccdb6f 74 */
Navin 0:fe5850ccdb6f 75
Navin 0:fe5850ccdb6f 76 uint MbedPerAccess::analogOut(uint pinNo, uint val)
Navin 0:fe5850ccdb6f 77 {
Navin 0:fe5850ccdb6f 78 AnalogOut aout(p18);
Navin 0:fe5850ccdb6f 79 if (val > _maxAnOutVal) {
Navin 0:fe5850ccdb6f 80 return ERR_INVALID_ARG;
Navin 0:fe5850ccdb6f 81 }
Navin 0:fe5850ccdb6f 82 /* Only one analog out */
Navin 0:fe5850ccdb6f 83 if (pinNo != 18) {
Navin 0:fe5850ccdb6f 84 return ERR_INVALID_PIN;
Navin 0:fe5850ccdb6f 85 }
Navin 0:fe5850ccdb6f 86 aout = val;
Navin 0:fe5850ccdb6f 87 return ERR_SUCCESS;
Navin 0:fe5850ccdb6f 88 }
Navin 0:fe5850ccdb6f 89
Navin 0:fe5850ccdb6f 90 /**
Navin 0:fe5850ccdb6f 91 * Reads the volatge at the given analog input pin
Navin 0:fe5850ccdb6f 92 * and returns the digital representation of the same
Navin 0:fe5850ccdb6f 93 */
Navin 0:fe5850ccdb6f 94
Navin 0:fe5850ccdb6f 95 uint MbedPerAccess::analogIn(uint pinNo, uint * outVal)
Navin 0:fe5850ccdb6f 96 {
Navin 0:fe5850ccdb6f 97 AnalogIn ana_in[] = { p15, p16, p17, p18, p19, p20};
Navin 0:fe5850ccdb6f 98 if (pinNo > _maxAnInPins) {
Navin 0:fe5850ccdb6f 99 return ERR_INVALID_PIN;
Navin 0:fe5850ccdb6f 100 }
Navin 0:fe5850ccdb6f 101
Navin 0:fe5850ccdb6f 102 *outVal = ana_in[pinNo];
Navin 0:fe5850ccdb6f 103 return ERR_SUCCESS;
Navin 0:fe5850ccdb6f 104 }