Testprogramm fuer den SMD IoTKit Shield.
Dependencies: MFRC522 RemoteIR Servo StepperMotorUni mbed-rtos mbed ESP8266 RCSwitch SAA1064 TMP175
main.cpp
- Committer:
- marcel1691
- Date:
- 2015-03-23
- Revision:
- 0:1b22732d0d8d
- Child:
- 1:be86d02cd130
File content as of revision 0:1b22732d0d8d:
/** Testprogramm fuer den SMD IoTKit Shield. */ #include "mbed.h" #include "rtos.h" #include "ReceiverIR.h" #include "Servo.h" #include "Motor.h" #include "StepperMotorUni.h" #include "MFRC522.h" // Trace #include "trace.h" /** aktuell laufender Test */ int test = 0; // Test vor- und rueckwaerts schalten InterruptIn button1( SW2 ); InterruptIn button2( SW3 ); void next() { test++; } void previous() { if ( test > 0 ) test--; } /*------------------------------------------------------------------------ * Testfunktionen ------------------------------------------------------------------------*/ /** Analoge Sensoren Werte ausgeben */ void doPrintAnalogeValues( ) { INFO( "Analog Thread" ); // Analoge Sensoren AnalogIn poti( A0 ); AnalogIn lightSensor( A1 ); AnalogIn hallSensor( A2 ); printf( "Poti %f, Light %f, Hall %f\n", poti.read(), lightSensor.read(), hallSensor.read() ); } /** LED's fortschalten */ int led = 1; void doLedTicker() { // LED's (Aktoren) DigitalOut led1(D10); DigitalOut led2(D11); DigitalOut led3(D12); TRACE1( "LED Thread %d", led ); switch ( led ) { case 1: led1 = 1; break; case 2: led2 = 1; break; case 3: led3 = 1; break; default: led1 = led2 = led3 = 0; led = 0; break; } led++; } /** Servo Thread */ void doServoThread() { INFO( "Servo Thread" ); Servo bottom( A4 ); Servo arm( A5 ); printf( "Servo 0 - 180\n" ); for ( float p = 0.1f; p < 1.0f; p += 0.001f ) { bottom = p; arm = p / 2; Thread::wait( 1 ); // ACHTUNG: Millisekunden!!! } printf( "Servo 180 - 0\n" ); for ( float p = 1.0f; p >= 0.1f; p -= 0.001f ) { bottom = p; arm = p / 2; Thread::wait( 1 ); } } /** Motor 1 Test */ void doMotorThread() { INFO( "Motor Thread" ); Motor m1(D3, D2, D4); // pwm, fwd, rev Motor m2(D6, D5, D7); // pwm, fwd, rev printf( "Motor rueckwaerts\n" ); for (double s= 0.5; s < 1.0 ; s += 0.01) { m1.speed(s * -1); m2.speed(s ); Thread::wait ( 40 ); } Thread::wait( 100 ); m1.speed( 0 ); m2.speed( 0 ); printf( "Motor vorwaerts\n" ); for (double s= 0.5; s < 1.0 ; s += 0.01) { m1.speed(s); m2.speed(s * -1); Thread::wait( 40 ); } Thread::wait( 100 ); m1.speed( 0 ); m2.speed( 0 ); } /** Schrittmotor Thread */ void doStepperThread() { INFO( "Stepper Thread" ); StepperMotorUni motor( PTB18, PTB19, PTC1, PTC8 ); // Motordrehzahl motor.set_pps( 300 ); printf( "Schrittmotor vorwaerts\n" ); motor.move_steps( 512 ); Thread::wait( 3000 ); printf( "Schrittmotor rueckwaerts\n" ); motor.move_steps( -512 ); Thread::wait( 3000 ); } /** MOSFET on/off */ void doMosfet() { INFO( "MOSFET Thread" ); DigitalOut mosfet( D13 ); mosfet = 1; Thread::wait( 1000 ); mosfet = 0; } /*------------------------------------------------------------------------ * Hauptprogramm ------------------------------------------------------------------------*/ int main() { // SW2 + 3 auf K64F schalten Test vor- und zurueck. button1.fall( &next ); button2.fall( &previous ); while ( 1 ) { switch ( test ) { case 0: doPrintAnalogeValues(); break; case 1: doLedTicker(); break; case 2: doServoThread(); break; case 3: doMotorThread(); break; case 4: doStepperThread(); break; case 5: doMosfet(); break; default: break; } wait( 1.0 ); } }