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 );
    }        
}