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.
main.cpp
- Committer:
- uld
- Date:
- 2022-10-04
- Revision:
- 6:6865930c1135
- Parent:
- 5:dbd32cb3650a
- Child:
- 7:ac88c8e35048
File content as of revision 6:6865930c1135:
#include "mbed.h" #include "m3pi.h" //Mikkel har været her m3pi m3pi; // Minimum and maximum motor speeds #define MAX 1.0 #define MIN 0 // PID terms #define P_TERM 1 #define I_TERM 0 #define D_TERM 20 // Tresholds #define BATVOLTRESHOLD 3.0 int main() { m3pi.sensor_auto_calibrate(); /*Base program Variable initiation*/ float right; float left; float current_pos_of_line = 0.0; float previous_pos_of_line = 0.0; float derivative,proportional,integral = 0; float power; float speed = MAX; /*Team 7 Variabels*/ float batVol = m3pi.battery(); //Storing battery voltage in variable float potVol = m3pi.pot_voltage(); //Storing pot voltage int gotopit = 0; // variabel storing weather or not the robot is heading to pit /*Digital outs*/ DigitalOut led1(LED1); /*Printing secret cat mission*/ m3pi.cls(); m3pi.locate(0,0); m3pi.printf("eliminate"); m3pi.locate(0,1); m3pi.printf("all cats"); wait(200.0); m3pi.cls(); m3pi.locate(0,0); m3pi.printf("%f.3 ",batVol); m3pi.locate(0,1); m3pi.printf("%f.3 ",b); wait(200.0); m3pi.cls(); /*Inital state*/ led1 = 0; // Turn off led 1 on the embed while (1) { /* Test the batteri voltage if the robot is not headed for pit */ if (gotopit == 0) { /*Sets the battery voltage to the current voltage of the battery*/ batVol = battery (); if batteryVoltage <= BATVOLTRESHOLD (){ gotopit = 1; // set goto pit condition led1 = 1; // trun on Led 1 } // Get the position of the line. current_pos_of_line = m3pi.line_position(); proportional = current_pos_of_line; // Compute the derivative derivative = current_pos_of_line - previous_pos_of_line; // Compute the integral integral += proportional; // Remember the last position. previous_pos_of_line = current_pos_of_line; // Compute the power power = (proportional * (P_TERM) ) + (integral*(I_TERM)) + (derivative*(D_TERM)) ; // Compute new speeds right = speed+power; left = speed-power; // limit checks if (right < MIN) right = MIN; else if (right > MAX) right = MAX; if (left < MIN) left = MIN; else if (left > MAX) left = MAX; // set speed m3pi.left_motor(left); m3pi.right_motor(right); } }