19E042PIM Stepper motor 28BYJ-48

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
tzwell
Date:
Tue Jan 04 14:35:48 2022 +0000
Commit message:
FIrst publish, first commit

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mb_pins.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r ebdf9583ef95 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jan 04 14:35:48 2022 +0000
@@ -0,0 +1,78 @@
+/*
+ * An example of motor control, using step 28BYJ-48 motor and NUCLEO-L476RG.
+ *
+ * Katedra za Elektroniku i digitalne sisteme
+ * Elektrotehnicki fakultet
+ * Beograd 
+ *
+ * Decembar 2021.
+ *
+ */
+
+/*
+ * Biblioteke za uvoz:
+ */
+#include "mbed.h"
+#include "mb_pins.h"
+
+/*
+ * Definisanje makroa:
+ */
+#define DEBOUNCE_DELAY_MS 50
+#define MOTOR_PERIOD_MS 5
+ 
+/*
+ * Globalne promenljive:
+ */
+InterruptIn clkwise (MB_SW1);
+//  D11 -  D10 -   D9   -   D8
+// blue - pink - yellow - orange
+BusOut motor_out(PA_7, PB_6, PC_7, PA_9);  
+int step = 0; 
+int dir = 0; // direction
+ 
+/*
+ * Deklaracija funkcija:
+ */
+void ISR_clkwise(void);
+
+
+/*
+ * Glavna funkcija:
+ */
+int main()
+{
+    clkwise.fall(&ISR_clkwise);
+    while(1)
+    { 
+        switch(step)
+        { 
+            // Half-step control:
+            case 0: motor_out = 0x1; break;  // 0001
+            case 1: motor_out = 0x3; break;  // 0011
+            case 2: motor_out = 0x2; break;  // 0010   
+            case 3: motor_out = 0x6; break;  // 0110
+            case 4: motor_out = 0x4; break;  // 0100
+            case 5: motor_out = 0xC; break;  // 1100
+            case 6: motor_out = 0x8; break;  // 1000
+            case 7: motor_out = 0x9; break;  // 1001
+            
+            default: motor_out = 0x0; break; // 0000
+        }
+  
+        if(dir) step++; else step--; 
+        if(step>7)step=0; 
+        if(step<0)step=7; 
+        wait_ms(MOTOR_PERIOD_MS);  // speed
+    }
+}
+/*
+ * Definicija funkcija:
+ */
+void ISR_clkwise(void){
+    if(!clkwise.read())
+    {
+        wait_ms(DEBOUNCE_DELAY_MS);
+        if (!clkwise.read()) dir = !dir;
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r ebdf9583ef95 mb_pins.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mb_pins.h	Tue Jan 04 14:35:48 2022 +0000
@@ -0,0 +1,59 @@
+/*
+ * This file contains all the pin names neccessary
+ * for easy interaction with the EDS-MB for NUCLEOL476RG.
+ *
+ * University of Belgrade - School of Electrical Engineering
+ * Department of Electronics
+ * Bulevar Kralja Aleksandra 73, 11120 Belgrade, Serbia
+ *
+ * November 2021.
+ *
+ */
+
+// LEDs, 560R in series, cathode to GND; left - red LED1;  right - blue LED2:
+#define MB_LED1                                                            PA_11
+#define MB_LED2                                                            PB_15
+// Switches, DPST, pulled up with 10k resistor; left SW1, right SW2:
+// SW_EXT connector, from left to right:
+#define MB_SW1                                                             PC_9
+#define MB_SW2                                                             PC_8
+// Potentiometers; left POT1, right POT2:
+#define MB_POT1                                                            PA_0
+#define MB_POT2                                                            PA_1
+// Common anode, two digit seven-segment display. All signals active at '0':
+#define MB_SEL1                                                            PB_6
+#define MB_SEL2                                                            PC_7
+#define MB_A                                                               PA_10
+#define MB_B                                                               PA_9
+#define MB_C                                                               PA_8
+#define MB_D                                                               PB_10
+#define MB_E                                                               PB_5
+#define MB_F                                                               PB_4
+#define MB_G                                                               PB_3
+// Piezoelectric buzzer, 10k in parallel; Active at '0':
+#define MB_BUZZ                                                            PA_11
+// SDD1306-based OLED display; Uses I2C_2 to communicate with NUCLEO:
+#define MB_OLED_SDA                                                        PB_14
+#define MB_OLED_SCL                                                        PB_13
+// ESP-WROOM-02 WiFi microcontroller; Uses UART_3 to communicate with NUCLEO:
+#define MB_ESP_RST                                                         PA_12
+#define MB_ESP_TX                                                          PC_4
+#define MB_ESP_RX                                                          PC_5
+#define MB_ESP_EN                                                          RESET
+// mikroBUS pinout, upper leftmost pin is no. 1:
+#define MB_MIKRO_AN                                                        PB_1
+#define MB_MIKRO_RST                                                       PB_12
+#define MB_MIKRO_CS                                                        PD_2
+#define MB_MIKRO_SCK                                                       PC_10
+#define MB_MIKRO_MISO                                                      PC_11
+#define MB_MIKRO_MOSI                                                      PC_12
+#define MB_MIKRO_SDA                                                       PB_14
+#define MB_MIKRO_SCL                                                       PB_13
+#define MB_MIKRO_TX                                                        PB_11
+#define MB_MIKRO_RX                                                        PB_7
+#define MB_MIKRO_INT                                                       PB_2
+#define MB_MIKRO_PWM                                                       PC_6
+// ANALOG_EXT connector, from left to right:
+#define MB_AI1                                                             PC_3
+#define MB_AI2                                                             PC_2
+#define MB_A0                                                              PA_4
\ No newline at end of file
diff -r 000000000000 -r ebdf9583ef95 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Jan 04 14:35:48 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file