KRAI 2018 / Mbed 2 deprecated DagonFly__RoadToJapan

Dependencies:   DigitDisplay Motor PID Ping mbed millis

Fork of DagonFly__RoadToJapan_15Mei_Ultimate by KRAI 2017

Files at this revision

API Documentation at this revision

Comitter:
gustavaditya
Date:
Sat Feb 18 03:24:05 2017 +0000
Parent:
39:11358f3f61ff
Child:
41:336a19289c2d
Commit message:
Update 18 Februari 2017 Pk. 10.24 terbaru;

Changed in this revision

Ping.lib Show annotated file Show diff for this revision Revisions of this file
Servo.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Ping.lib	Sat Feb 18 03:24:05 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/rosienej/code/Ping/#6996f66161d7
--- a/Servo.lib	Sat Feb 18 00:37:33 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/teams/KRAI-2017/code/Joystick_OrdoV5/#3778327a0102
--- a/main.cpp	Sat Feb 18 00:37:33 2017 +0000
+++ b/main.cpp	Sat Feb 18 03:24:05 2017 +0000
@@ -41,10 +41,9 @@
 #include "mbed.h"
 #include "JoystickPS3.h"
 #include "Motor.h"
-#include "Servo.h"
 #include "encoderKRAI.h"
 #include "millis.h"
-
+#include "Ping.h"
 /***********************************************/
 /*          Konstanta dan Variabel             */
 /***********************************************/
@@ -67,6 +66,8 @@
 
 const float pwmPowerUp        = 0.7;
 const float pwmPowerDown      = -0.9;
+
+float jarak_ping=0;
  
 // Variable Bawah
 float Vt;
@@ -87,6 +88,7 @@
 unsigned long int previousMillis2 = 0;  // PID launcher
 unsigned long int currentMillis2;
 unsigned long int previousMillis3 = 0;  // Pneumatik
+unsigned long int previousMillis4 = 0;  // Ping
 
 /* Variabel Stick */
 //Logic untuk masuk aktuator
@@ -132,10 +134,12 @@
 DigitalOut pneumatik(PB_3, PullUp);
 
 /*Dekalrasi Limit Switch */
-DigitalIn infraAtas(PC_9, PullUp);
+//DigitalIn infraAtas(PC_9, PullUp);
 DigitalIn limitTengah(PB_10, PullUp);
 DigitalIn limitBawah(PC_8, PullUp);
 
+/*deklarasi PING ultrasonic*/
+Ping pingAtas(PC_9);
 
 /****************************************************/
 /*         Deklarasi Fungsi dan Procedure           */
@@ -227,21 +231,6 @@
         errorP = 0;
     return (float)Kp*errorP;    
 }
-/*
-void init_speed (){
-    if (speed>maxSpeed){
-        speed = maxSpeed;
-    }
-    if (speed<minSpeed){
-        speed = minSpeed;
-    }
-    if (speed2>maxSpeed){
-        speed2 = maxSpeed;
-    }
-    if (speed2<minSpeed){
-        speed2 = minSpeed;
-    }
-}*/
 
 void setCenter(){
 // Fungsi untuk menentukan center dari robot
@@ -348,8 +337,8 @@
         {
             // Power Screw Up
             //powerScrew.speed(pwmPowerUp);
-            //ReloadOn = !ReloadOn;
-            powerScrew.speed(pwmPowerUp);
+            ReloadOn = !ReloadOn;
+            //powerScrew.speed(pwmPowerUp);
             break;
         }
         case (12) : 
@@ -362,7 +351,7 @@
         {
             motorDpn.brake(1);
             motorBlk.brake(1);
-            if(isReload){
+           /* if(isReload){
                 powerScrew.speed(pwmPowerDown);
                 if(!limitBawah){
                     isReload = false;
@@ -374,12 +363,12 @@
             }
             else{
                 powerScrew.brake(1);
-            }
+            }*/
         }   
     } // End Switch
  }
  
-/*void reloader()
+void reloader()
 {
     if(ReloadOn){
         if(isReload){
@@ -392,17 +381,20 @@
         else if(!limitTengah){
             isReload = true;
         }
-        else if(!infraAtas){
-            powerScrew.brake(1);
+        else if(jarak_ping > 4){
+            powerScrew.speed(pwmPowerUp);
+        }
+        else if(jarak_ping < 3) {
+            powerScrew.speed(pwmPowerDown);
         }
         else{
-            powerScrew.speed(pwmPowerUp);
+            powerScrew.brake(1);
         }
     }
     else{
         powerScrew.brake(1);
     }
-}*/
+}
  
  
 void launcher()
@@ -478,12 +470,26 @@
     joystick.setup();
     pc.baud(115200);
     wait_ms(1000);
+    
+    // initializing encoder
     setCenter();
     wait_ms(500);
+    
+    //initializing PING
+    pingAtas.Send();
+    
     pc.printf("ready....");
     startMillis();
     while(1)
-    {
+    {   
+        // interupsi pembacaan PING setiap 30 ms
+        if(millis() - previousMillis4 >= 30){
+            jarak_ping = pingAtas.Read_cm()/2;
+            
+            pingAtas.Send();
+            previousMillis4 = millis();
+        }
+        
         // Interrupt Serial
         joystick.idle();        
         if(joystick.readable()) 
@@ -496,7 +502,7 @@
             case_joy = case_joystick();
             aktuator();
             launcher();
-            //reloader();
+            reloader();
             if ((millis()-previousMillis3 >= 425)&&(flag_Pneu)){
                 pneumatik = 1;
                 flag_Pneu = false;