Come sfruttare una procedura per gestire un motore DC pilotato da due PWM

Dependencies:   mbed

Revision:
0:56dae31e7e04
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Dec 03 10:39:21 2016 +0000
@@ -0,0 +1,57 @@
+/****************************************************
+*            FAST PROTOTYPING WITH NUCLEO           *
+* Example Code 14: DC motor control con Procedura   *
+* Author: Francesco Caiazzo                         *
+* Organization: Perlatecnica no-profit organization *  
+*****************************************************/
+
+#include "mbed.h"
+#define P 10000 // periodo
+
+PwmOut mB1(D10);
+PwmOut mB2(D11);
+
+void motore(int speed) //funzione muove motore
+{
+    speed *= 100;   //adatto il duty cycle
+    
+    if (speed > 0) //controllo se speed > 0
+    {
+        // Avanti
+        mB1.pulsewidth_us(0);
+        mB2.pulsewidth_us(speed);
+    }
+    else if (speed < 0)
+    {
+        // Dietro
+        mB2.pulsewidth_us(0);
+        mB1.pulsewidth_us(-speed); // rendo positiva la velocità
+    }
+    else
+    {
+        // Stop
+        mB2.pulsewidth_us(0);
+        mB1.pulsewidth_us(0);
+    }
+    
+
+}
+
+int main() 
+{
+    //setto il periodo per i due pin del motore B
+    mB1.period_us(P);
+    mB2.period_us(P);
+    
+    while(1)
+    {
+        motore(100);    // avanti a v = 100
+        wait(1);        // aspetto 1s
+        motore(0);      // mi fermo
+        wait(1);        // aspetto 1s 
+        motore(-100);   // dietro a v = 100
+        wait(1);        // aspetto 1s
+        motore(0);      // mi fermo
+        wait(1);        // aspetto 1s
+    }
+}
\ No newline at end of file