Testprogramm fuer den SMD IoTKit Shield.

Dependencies:   MFRC522 RemoteIR Servo StepperMotorUni mbed-rtos mbed ESP8266 RCSwitch SAA1064 TMP175

Revision:
0:1b22732d0d8d
Child:
1:be86d02cd130
diff -r 000000000000 -r 1b22732d0d8d main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Mar 23 08:58:42 2015 +0000
@@ -0,0 +1,198 @@
+/** 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 );
+    }        
+}
\ No newline at end of file