Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:59d25bb7f825
- Child:
- 1:2bab3a0bc3bc
diff -r 000000000000 -r 59d25bb7f825 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Feb 04 16:55:27 2015 +0000
@@ -0,0 +1,190 @@
+#include "mbed.h"
+
+//motor select pins
+DigitalOut motor_lf(PTE2);
+DigitalOut motor_lb(PTE3);
+DigitalOut motor_rf(PTE4);
+DigitalOut motor_rb(PTE5);
+
+//Frequency of Pulse Width Modulated signal in Hz
+#define PWM_FREQ 1000
+
+//PWM pin (Enable 1 and 2)
+PwmOut motor_l (PTC2);
+PwmOut motor_r (PTE29);
+
+//LED to test
+DigitalOut myled(LED_RED);
+/*
+Pivot Right: //Change duties for speed
+motor_rf=0;
+motor_rb=0;
+motor_lf=1;
+motor_lb=0;
+Pivot Left: //Change duties for speed
+motor_rf=1;
+motor_rb=0;
+motor_lf=0;
+motor_lb=0;
+Forwards: //Change duties for speed & direction
+motor_rf=1;
+motor_rb=0;
+motor_lf=1;
+motor_lb=0;
+Backwards: //Change duties for speed & direction
+motor_rf=0;
+motor_rb=1;
+motor_lf=0;
+motor_lb=1;
+*/
+void set_direction( int nature_of_direction, float speed)
+{
+ switch(nature_of_direction) {
+ case "forward": {
+ motor_r.write(speed + angle); //where angle can be postive and negative and will TURN the robot
+ motor_l.write(speed - angle);
+ //if turning left, you'd make the angle postive (right motor goes faster left motor goes slwoer)
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0;
+ }
+ case "backwards": {
+ motor_r.write(speed + angle); //where angle can be postive and negative and will TURN the robot
+ motor_l.write(speed - angle);
+ //if turning left, you'd make the angle postive (right motor goes faster left motor goes slwoer)
+ motor_rf=0;
+ motor_rb=1;
+ motor_lf=0;
+ motor_lb=1;
+ }
+ case "pivot right": {
+ motor_r.write(0); //motor doesn't need to be enabled
+ motor_l.write(speed);
+
+ motor_rf=0;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0;
+ }
+ case "pivot left": {
+ motor_r.write(speed);
+ motor_l.write(0); //motor doesn't need to be enabled
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=0;
+ motor_lb=0;
+ }
+ }
+}
+
+int main()
+{
+
+ //Set PWM frequency to 1000Hz
+ motor_l.period( 1.0f / (float) PWM_FREQ);
+ motor_r.period( 1.0f / (float) PWM_FREQ);
+//Initialise direction to nothing.
+ motor_rf=0;
+ motor_rb=0;
+ motor_lf=0;
+ motor_lb=0;
+
+
+ while(1) { //infinite loop
+ //***********************************************
+ myled = !myled;
+
+ //Set duty cycle at 100% AKA Full Speed
+ motor_r.write(1.0);
+ motor_l.write(1.0);
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0; //go forwards
+ wait(2);
+ //**************************************
+ myled = !myled;
+
+ motor_r.write(0.75);
+ motor_l.write(0.75);
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0; //go forwards
+ //
+ wait(2);
+
+ myled = !myled;
+
+ motor_r.write(0.5);
+ motor_l.write(0.5);
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0;
+
+
+ wait(2);
+ myled = !myled;
+
+ motor_r.write(0.30);
+ motor_l.write(0.30);
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0;
+
+ wait(2);
+
+ myled = !myled;
+ motor_r.write(1.0);
+ motor_l.write(1.0);
+
+ motor_rf=0;
+ motor_rb=1;
+ motor_lf=0;
+ motor_lb=1; //go forwards
+ //
+ wait(2);
+
+
+
+ myled = !myled;
+ motor_r.write(0.5);
+ motor_l.write(0.5);
+
+ motor_rf=0;
+ motor_rb=0;
+ motor_lf=0;
+ motor_lb=1; //
+
+ wait(2);
+ myled = !myled;
+
+ motor_rf=0;
+ motor_rb=1;
+ motor_lf=0;
+ motor_lb=0; //reverse turn
+
+ wait(2);
+
+ myled = !myled;
+ motor_r.write(0.5);
+ motor_l.write(1.0);
+
+ motor_rf=1;
+ motor_rb=0;
+ motor_lf=1;
+ motor_lb=0; //go forwards
+ //
+ wait(4);
+
+ }
+
+}