Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib I2S LM75B SDFileSystem mbed
TestRGBLed.cpp
- Committer:
- embeddedartists
- Date:
- 2014-08-28
- Revision:
- 2:2f4b7535ceb3
- Child:
- 3:7ef908e84ae1
File content as of revision 2:2f4b7535ceb3:
/*
* Copyright 2013 Embedded Artists AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/******************************************************************************
* Includes
*****************************************************************************/
#include "mbed.h"
#include "TestRGBLed.h"
/******************************************************************************
* Defines and typedefs
*****************************************************************************/
#define LED_ON 0
#define LED_OFF 1
#define BUTTON_PRESSED 0
#define BUTTON_RELEASED 1
/******************************************************************************
* Public Functions
*****************************************************************************/
TestRGBLed::TestRGBLed(PinName red, PinName green, PinName blue, PinName button) :
_redPin(red), _greenPin(green), _bluePin(blue), _button(button) {
_button.mode(PullUp);
}
void TestRGBLed::showStartupPattern() {
// Have to create the DigitalOut instances here (as opposed to
// create them in the constructor) as some of the pins are shared
// with other functionality on the LPC4088 Experiment Base Board
DigitalOut ledRed(_redPin);
DigitalOut ledGreen(_greenPin);
DigitalOut ledBlue(_bluePin);
ledRed = LED_OFF;
ledGreen = LED_OFF;
ledBlue = LED_OFF;
for(int i=0; i<10; i++)
{
ledRed = LED_ON;
wait(0.05);
ledRed = LED_OFF;
wait(0.05);
}
wait(0.5);
for(int i=0; i<10; i++)
{
ledGreen = LED_ON;
wait(0.05);
ledGreen = LED_OFF;
wait(0.05);
}
wait(0.5);
for(int i=0; i<10; i++)
{
ledBlue = LED_ON;
wait(0.05);
ledBlue = LED_OFF;
wait(0.05);
}
wait(0.5);
}
void TestRGBLed::showStatus(bool success) {
// Have to create the DigitalOut instances here (as opposed to
// create them in the constructor) as some of the pins are shared
// with other functionality on the LPC4088 Experiment Base Board
DigitalOut ledRed(_redPin);
DigitalOut ledGreen(_greenPin);
DigitalOut ledBlue(_bluePin);
ledRed = LED_OFF;
ledGreen = LED_OFF;
ledBlue = LED_OFF;
if (success) {
ledGreen = LED_ON;
} else {
ledRed = LED_ON;
}
}
void TestRGBLed::waitForButtonClick() {
// wait for button to be pressed
while(_button.read() == BUTTON_RELEASED);
// small delay to avoid contact bounce
wait_ms(40);
// wait for button to be released
while(_button.read() == BUTTON_PRESSED);
}
bool TestRGBLed::runTest() {
// Have to create the DigitalOut instances here (as opposed to
// create them in the constructor) as some of the pins are shared
// with other functionality on the LPC4088 Experiment Base Board
DigitalOut ledRed(_redPin);
DigitalOut ledGreen(_greenPin);
DigitalOut ledBlue(_bluePin);
printf("LED Tests: All off. Press button to continue\n");
ledRed = LED_OFF;
ledGreen = LED_OFF;
ledBlue = LED_OFF;
waitForButtonClick();
printf("LED Tests: RED on. Press button to continue\n");
ledRed = LED_ON;
ledGreen = LED_OFF;
ledBlue = LED_OFF;
waitForButtonClick();
printf("LED Tests: GREEN on. Press button to continue\n");
ledRed = LED_OFF;
ledGreen = LED_ON;
ledBlue = LED_OFF;
waitForButtonClick();
printf("LED Tests: BLUE on. Press button to continue\n");
ledRed = LED_OFF;
ledGreen = LED_OFF;
ledBlue = LED_ON;
waitForButtonClick();
printf("LED Tests: All on. Press button to continue\n");
ledRed = LED_ON;
ledGreen = LED_ON;
ledBlue = LED_ON;
waitForButtonClick();
// Turn them off again
ledRed = LED_OFF;
ledGreen = LED_OFF;
ledBlue = LED_OFF;
return true;
}