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: mbed vcdLogger vcdSignal
main.cpp
- Committer:
- ketjow
- Date:
- 2016-02-20
- Revision:
- 1:446154224f92
- Parent:
- 0:9a59cffaafad
- Child:
- 2:a13cde5c679c
File content as of revision 1:446154224f92:
/*!
@file main.cpp
The main vcdMaker demo file.
@par Full Description
The vcdMaker demo. See http://vcdmaker.org for details.
@if REVISION_HISTORY_INCLUDED
@par Edit History
@li [0] wojciech.rynczuk@wp.pl 20-JAN-2015 Initial file revision.
@endif
@ingroup vcdMakerDemo
@par Copyright (c) MMXV Wojciech Rynczuk
Distributed under MIT License
*/
#include <stdint.h>
#include "mbed.h"
#include "serialLogger.hpp"
#include "button.hpp"
#include "light.hpp"
#include "slider.hpp"
#include "magnetometer.hpp"
#include "accelerometer.hpp"
#define NO_OF_LINES ((uint32_t)75)
#define NO_OF_CHARACTERS ((uint32_t)100)
// Periodic timers
Ticker timer1;
Ticker timer2;
// Button interrupts
InterruptIn sw1_event(PTC3);
InterruptIn sw3_event(PTC12);
// Logger
SerialLogger slogger(NO_OF_LINES,NO_OF_CHARACTERS);
Logger* uniLogger;
// Signals
Button sw1("FRDM.Buttons.SW1",PTC3,slogger);
Button sw3("FRDM.Buttons.SW3",PTC12,slogger);
Light light("FRDM.Sensors.Light",PTE22,slogger);
Slider slider("FRDM.Sensors.Slider", slogger);
Magnetometer magnetometer("FRDM.Sensors.Magnetometer.", slogger);
Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger);
// Time reference
uint32_t time_ref = 0;
void log_slider_accelerometer()
{
slider.PrintState();
accelerometer.PrintState();
}
void log_light_magnetometer()
{
light.PrintState();
magnetometer.PrintState();
}
void sw1_irq()
{
sw1.PrintState();
if (0 == sw1)
{
time_ref = uniLogger->GetTime();
}
else
{
if ((uniLogger->GetTime() - time_ref) > 3000000)
{
if (uniLogger->IsRecording())
{
uniLogger->StopRecording();
}
else
{
uniLogger->StartRecording();
}
}
}
}
void sw3_irq()
{
sw3.PrintState();
}
int main()
{
uniLogger = &slogger;
sw1_event.rise(&sw1_irq);
sw3_event.rise(&sw3_irq);
sw1_event.fall(&sw1_irq);
sw3_event.fall(&sw3_irq);
timer1.attach_us(&log_light_magnetometer, 50000);
timer2.attach_us(&log_slider_accelerometer, 40000);
while (true)
{
uniLogger->Print();
};
}