Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.64 KB | None | 0 0
  1. /*------------------------------------------------------------------------------
  2. ----------------------------Project B.R.U.C.E. ---------------------------------
  3. ------------------------------- Versie 0.0 -------------------------------------
  4. ------------------------------------------------------------------------------*/
  5.  
  6. #include <iostream>
  7. #include <mbed.h>
  8.  
  9. //-------------------------Lijst met defenities--------------------------------
  10. #define Aan 1
  11. #define Uit 0
  12. #define Rechtdoor 1
  13. #define Achteruit 2
  14. #define Stil 0
  15. #define Klaar 1
  16.  
  17. using namespace std;
  18.  
  19. //--------------------------------OUTPUTS---------------------------------------
  20. //Motoren
  21. DigitalOut Motor_Directi_L_achter(PC_10);
  22. DigitalOut Motor_Directi_L_voor(PC_12);
  23. PwmOut Motor_L_snelheid(PB_7);
  24. DigitalOut Motor_Directi_R_achter(PA_15);
  25. DigitalOut Motor_Directi_R_voor(PA_13);
  26. PwmOut Motor_R_snelheid(PB_7);
  27. PwmOut MotorPomp(PC_8);
  28.  
  29. //LED input
  30. PwmOut LED_R(PB_15);
  31. PwmOut LED_G(PB_14);
  32. PwmOut LED_B(PB_13);
  33.  
  34. //--------------------------------INPUTS----------------------------------------
  35. //Gyroscoop
  36. AnalogIn Gyro_Xass();
  37. AnalogIn Gyro_Yass();
  38.  
  39. //Sensoren Rand
  40. DigitalIn Rand_Voor_Rechts(PA_12);
  41. DigitalIn Rand_Achter_Rechts(PA_11);
  42. DigitalIn Rand_Voor_Links(PB_12);
  43. DigitalIn Rand_Achter_Links(PA_9);
  44.  
  45. //Sensoren onderkant
  46. DigitalIn Onder_Voor_Rechts(PA_5);
  47. DigitalIn Onder_Achter_Rechts(PA_6);
  48. DigitalIn Onder_Voor_Links(PA_7);
  49. DigitalIn Onder_Achter_Links(PB_2);
  50.  
  51. //motor encoders
  52. DigitalIn Encoder_Rechts();
  53. DigitalIn Encoder_Links();
  54.  
  55. //---------------------------------Globals--------------------------------------
  56. int Stand_Van_Drukknop;
  57. int bumper = 1;
  58. int vloer = 1;
  59. int bumper_links = 1;
  60. Timer Debounce;
  61. Timer Drukknop_Tijd_Waarde;
  62.  
  63. //--------------------------------Interupts-------------------------------------
  64. void Start_Timer(){
  65.     //timmer starter
  66.     Drukknop_Tijd_Waarde.start();    
  67. }
  68.  
  69. void Stand_Motor_Keuzen(){
  70.     // Waardes
  71.     if((Drukknop_Tijd_Waarde.read() <= 1)&&( Drukknop_Tijd_Waarde.read() >= 2)){
  72.         Stand_Van_Drukknop = 2;
  73.     }
  74.     else if((Drukknop_Tijd_Waarde.read() <= 1)&&( Drukknop_Tijd_Waarde.read() >= 2)){
  75.         Stand_Van_Drukknop = 1;
  76.     }
  77.     else if((Drukknop_Tijd_Waarde.read() <= 1)&&( Drukknop_Tijd_Waarde.read() >= 2)){
  78.         Stand_Van_Drukknop = 0;
  79.     }
  80.    
  81.     //reset timer
  82.     Drukknop_Tijd_Waarde.reset();
  83. }
  84.  
  85. //----------------------Functies--------------------------
  86. //motor drivers
  87. void motor_drive(int links, int rechts){
  88.     //motor links
  89.     if(links == 1){
  90.         cout<<"motor links aan";
  91.     }
  92.     else if(links == 0){
  93.         cout<< "motor links uit";
  94.     }
  95.  
  96.     //motor rechts
  97.     if(rechts == 1){
  98.         cout<<"motor rechts aan";
  99.     }
  100.     else if (rechts == 0){
  101.         cout<< "motor rechts uit";
  102.     }
  103.  
  104.     cout<< '\n';
  105.  
  106. }
  107.  
  108. void motor_pomp(int A){
  109.     cout<<"Pomp aan";
  110.     cout<< '\n';
  111. }
  112.  
  113. void motor_richting(int links, int rechts){
  114.     //motor links
  115.     switch(links){
  116.         case(0):
  117.             cout << "motor links uit";
  118.             break;
  119.         case(1):
  120.             cout << "motor links vooruit";
  121.             break;
  122.         case(2):
  123.             cout << "motor links achteruit";
  124.             break;
  125.     }
  126.  
  127.     cout << '\t';
  128.  
  129.     //motor rechts
  130.     switch(rechts){
  131.         case(0):
  132.             cout << "motor rechts uit";
  133.             break;
  134.         case(1):
  135.             cout << "motor rechts vooruit";
  136.             break;
  137.         case(2):
  138.             cout << "motor rechts achteruit";
  139.             break;
  140.     }
  141.  
  142.     cout<< '\n';
  143. }
  144.  
  145. int Gyro_Uitlezen(){
  146.     return(1);
  147. }
  148.  
  149. void Homing_Naar_Rechts_Bovenin(){
  150.     //inisizatie waardes
  151.     int Gyro_waarde = 0;
  152.  
  153.     //start homing procdeuren
  154.     //hommen op Y ass
  155.     //kijken of de robot recht op de Yass staat
  156.     do{
  157.         motor_drive(Aan,Aan);
  158.         motor_richting(Achteruit,Rechtdoor);
  159.         Gyro_waarde = Gyro_Uitlezen();
  160.     }while(Gyro_waarde != 1);
  161.  
  162.     //robot recht naar het eind van de Yass laten rijden
  163.     do{
  164.         motor_richting(Rechtdoor,Rechtdoor);
  165.     }while(bumper < 1);
  166.  
  167.     //hommen op X ass
  168.     //kijken of de robot recht op de X ass staat
  169.     do{
  170.         motor_richting(Achteruit,Rechtdoor);
  171.         Gyro_waarde = Gyro_Uitlezen();
  172.     }while(Gyro_waarde < 1);
  173.  
  174.     //robot rechdoor naar het eind van de X ass latern rijden
  175.     do{
  176.         motor_richting(Rechtdoor,Rechtdoor);
  177.     }while(bumper < 1);
  178.  
  179.     //eind homing proceuren
  180.     motor_richting(Stil,Stil);
  181. }
  182.  
  183. int Startup(){
  184.     //kijken of aan signaal is gegeven
  185.     if(Stand_Van_Drukknop == Aan){//robot krijgt aan signaal
  186.         //kijken of robot op de vloer staat
  187.         while(vloer != 1){};
  188.         motor_pomp(Aan); //pomp aan zetten
  189.         Homing_Naar_Rechts_Bovenin(); // beginnen met homming van robot
  190.         return(Klaar);//return klaar
  191.     }
  192.     else{//robot kriijgt geen aan singnaal
  193.         return(0); //return geen aan signaal
  194.     }
  195. }
  196.  
  197. int Patroon_Rijden(){
  198.     //basis waardes
  199.     int Memory = 1; //1 is een nulpunt waarden
  200.     int Gyro_afstel_waarden = 0; //0 is een nulpunt waarden
  201.     int Motor_standA;
  202.     int Motor_standB;
  203.     //timer;
  204.  
  205.     //Rij patroon
  206.     while(1){
  207.         if (Memory == 1){ //standen van links naar rechts
  208.             Motor_standA= Rechtdoor;
  209.             Motor_standB= Achteruit;
  210.             Memory = 2;
  211.         }
  212.         else if (Memory == 2){ //standen van rechts naar rechts
  213.             Motor_standA= Achteruit;
  214.             Motor_standB= Rechtdoor;
  215.             Memory = 1;
  216.         }
  217.  
  218.         //robot gaat rechtdoor
  219.         motor_richting(Motor_standB, Motor_standB);
  220.         motor_drive(Aan,Aan);
  221.  
  222.         //wacht tot rand gedeterteerdt word
  223.         while(bumper != 1){}
  224.  
  225.         //detectie of de robot de onderkant van opervlakte raakt
  226.         if (bumper_links == 1){
  227.                 return(1);
  228.             }
  229.  
  230.         //draai proceduren
  231.         //robot laten draaien
  232.         motor_drive(Uit,Uit);
  233.         motor_richting(Motor_standA, Motor_standB);
  234.         motor_drive(Aan,Aan);
  235.  
  236.         //kijken of robot onder een hoek staat
  237.         do{
  238.             Gyro_afstel_waarden = Gyro_Uitlezen();
  239.         }while(Gyro_afstel_waarden < 1);
  240.  
  241.         //onder een periode vooruit rijden voor baan veranderrn
  242.         /*timer.start()
  243.         while(timer = 1){}
  244.         timer.stop;
  245.         timer.rest;*/
  246.  
  247.         //robot laten draaien
  248.         motor_richting(Stil,Stil);
  249.         motor_richting(Motor_standB, Motor_standA);
  250.  
  251.         //kijken of robot recht staat
  252.         do{
  253.             Gyro_afstel_waarden = Gyro_Uitlezen();
  254.         }while(Gyro_afstel_waarden < 1);
  255.      }
  256. }
  257.  
  258. void Afsluit_Proceduren(){
  259.     //kijken of afsluit signaal is gegeven
  260.     if(Stand_Van_Drukknop != 0){//ja afsluit signaal is gegeven
  261.         Stand_Van_Drukknop = 0; // reset afsluit signaal
  262.         motor_richting(Stil,Stil);  // stop motoren
  263.         motor_drive(Uit,Uit);       //stoppen motoren
  264.  
  265.         /*timer.start() //count down for afsluiten zuiger
  266.         while(timer = 1){}
  267.         timer.stop;
  268.         timer.rest;*/
  269.  
  270.         //pomp gaat uit
  271.         motor_pomp(Uit);
  272.     }
  273. }
  274.  
  275. int main(){
  276.     //inizatie waarde
  277.     int status; //status van de robot
  278.     Stand_Van_Drukknop = 1; //waarden van de drukknop
  279.    
  280.     //Interupt
  281.     InterruptIn Signaal_Knop(PB_6);
  282.     Signaal_Knop.rise(&Start_Timer);
  283.     Signaal_Knop.fall(&Stand_Motor_Keuzen);
  284.    
  285.     //uitvoeren van het programma
  286.     while(1){
  287.         //beginnen met start up
  288.         int memory = Startup();
  289.  
  290.         //programma
  291.         if(memory == 1){
  292.             status = Patroon_Rijden();
  293.             cout << status;
  294.         }
  295.         Afsluit_Proceduren();
  296.  
  297.     }
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement