tes ir atas semua

Dependencies:   mbed ADS1115 StepperMotor SRF05 TPA81new

Revision:
44:49ef8addf233
Parent:
43:b82c19d0c6a9
Child:
45:96815f504b17
--- a/main.cpp	Mon Feb 11 15:47:23 2019 +0000
+++ b/main.cpp	Fri Mar 01 10:28:41 2019 +0000
@@ -4,59 +4,50 @@
 #include "Uvtron.h"
 #include "Stepper.h"
 #include "AMG8833.h"
+#include "Adafruit_ADS1015.h"
+
+// Konstanta
+#define WAIT_TIME 0.05
+// infrared
+#define a_depan 5000000
+#define b_depan 1.229
+#define a_ads 500000
+#define b_ads 1.184
 
 Serial pc(USBTX,USBRX);
 
-// TPA
-//TPA81 tpax(PB_9, PB_8, 0xDC);
-//TPA81 tpay(PB_9, PB_8, 0xDE);
-
 // AMG
-Adafruit_AMG88xx amg(PB_9, PB_8);
+Adafruit_AMG88xx amg(PB_3, PB_10); // sda, scl
 float pixels[AMG88xx_PIXEL_ARRAY_SIZE];
 
-// Ultrasonik
-//SRF05 srf1(PC_13, PA_14); // trigger, echo
-//SRF05 srf1(PA_11, PB_12);
-//SRF05 srf1(PB_12, PA_11);
-//SRF05 srf1(PB_3, PB_10);
-//SRF05 srf2(PA_15, PB_7); // trigger, echo
-
 DigitalOut relay(PB_2);
-
-// UVTron
-Uvtron uv(PC_12); 
-
-// Sound
+Uvtron uv(PC_12);
 DigitalIn sound(PA_9);
-
-// Line
 AnalogIn line(PC_1);
 
-// infrared
-#define a_depan 5000000
-#define b_depan 1.229
+// Infrared 
 // atas
 AnalogIn ira1(PC_5);
 AnalogIn ira2(PA_5);
 AnalogIn ira3(PC_2);
 AnalogIn ira4(PC_3);
-AnalogIn ira5(PB_1);
-AnalogIn ira6(PC_4);
-AnalogIn ira7(PA_6);
-AnalogIn ira8(PA_7);
+AnalogIn ira5(PC_4);
+AnalogIn ira6(PB_1);
+AnalogIn ira7(PA_7);
+AnalogIn ira8(PA_6);
 // bawah
 AnalogIn irb1(PA_0);
 AnalogIn irb2(PA_1);
 AnalogIn irb3(PA_4);
 AnalogIn irb4(PB_0);
+// ADC
+I2C ads_i2c(PB_9, PB_8); // sda, scl
+Adafruit_ADS1115 ads(&ads_i2c);
 
-#define WAIT_TIME 0.05
-
+stepper s(PC_8, PC_6, PA_12, PA_11, PB_12, PC_7); 
 // stepper(PinName _en, PinName ms1, PinName ms2, PinName ms3, PinName _stepPin, PinName dir);
-stepper s(PC_6, PC_8, PA_12, PC_7, PA_11, PB_12);
 
-DigitalOut led_api(PC_14);
+DigitalOut led_api(PB_6);
 DigitalOut led_sound(PH_1);
 
 float call_depan(uint16_t x){
@@ -64,6 +55,13 @@
     return side_distance;
 }
 
+float call_ads(uint16_t ir) {
+    float voltage = ir * 6.2676 * 10e-5; // ubah ke mV
+    uint16_t x = (voltage/3.3f) * 0xFFFF; // ubah ke uint16_t sesuai max nucleo
+    float dist = a_ads/pow(x, b_ads);    
+    return dist;
+}
+
 int main()
 {
     relay = 1;
@@ -72,53 +70,50 @@
     amg.begin(AMG88xx_ADDRESS);
     amg.setMovingAverageMode(1);
     
-    while(sound.read()){
-        wait(0.2);    
-    }
+//    while(sound.read()){
+//        wait(0.2);    
+//    }
     
-    pc.printf("Sound Detected\n");
+//    pc.printf("Sound Detected\n");
     
     while(1) {
-        // AMG
-        amg.readPixels(pixels);
-        float max_temp = pixels[0];
-        int max_i = 0;
-        float sum_temp = 0;
-        for (int i = 1; i <= AMG88xx_PIXEL_ARRAY_SIZE; i++) {
-            if (pixels[i-1] > max_temp) {
-                max_temp = pixels[i-1];
-                max_i = i;
-            }
-            sum_temp += pixels[i-1];
-        }
-        for (int i = 1; i <= AMG88xx_PIXEL_ARRAY_SIZE; i++) {
-            pc.printf("%.2f", pixels[i-1]);   
-            if (i == max_i) {
-                pc.printf("_ ");
-            }
-            if (i % 8 == 0) pc.printf("\n");
-        }
-        pc.printf("temp max= %.2f at %d\n", max_temp, max_i);
-        pc.printf("temp rata2 = %.2f", sum_temp/AMG88xx_PIXEL_ARRAY_SIZE);
+        //// AMG
+//        amg.readPixels(pixels);
+//        float max_temp = pixels[0];
+//        int max_i = 0;
+//        float sum_temp = 0;
+//        for (int i = 1; i <= AMG88xx_PIXEL_ARRAY_SIZE; i++) {
+//            if (pixels[i-1] > max_temp) {
+//                max_temp = pixels[i-1];
+//                max_i = i;
+//            }
+//            sum_temp += pixels[i-1];
+//        }
+//        pc.printf("temp max= %.2f at %d\n", max_temp, max_i);
+//        pc.printf("temp rata2 = %.2f", sum_temp/AMG88xx_PIXEL_ARRAY_SIZE);
         
-        // UVTron
+        //// UVTron
 //        uv.Read();
-        //int read = uv.Flag;
+//        int read = uv.Flag;
 //        if (read) pc.printf("FIRE DETECTED\n");
 //        else pc.printf("NOT DETECTED\n");
 //        wait(0.5); // 200 ms
 
-        // Relay
-        relay = 0;
-        pc.printf("RELAY ON\n");
-        wait(0.5);
-        relay = 1;
-        pc.printf("RELAY OFF\n");    
+        //// Relay
+//        relay = 0;
+//        pc.printf("RELAY ON\n");
+//        wait(1);
+//        relay = 1;
+//        pc.printf("RELAY OFF\n");    
         
-        // Line
-        pc.printf("Line = %.2f\n", 3300*line.read());    
-        
+        //// Line
+//        pc.printf("Line = %.2f\n", 3300*line.read());    
+//        
         // IR
+        uint16_t ads_raw[4] = {0, 0, 0,0};
+        for (int i=0; i < 4; i++) {
+            ads_raw[i] = ads.readADC_SingleEnded(i);
+        };
         uint16_t raw_a1 = ira1.read_u16();
         uint16_t raw_a2 = ira2.read_u16();
         uint16_t raw_a3 = ira3.read_u16();
@@ -141,17 +136,20 @@
         float dist_a6 = call_depan(raw_a6);
         float dist_a7 = call_depan(raw_a7);
         float dist_a8 = call_depan(raw_a8);
-        
+        float dist_a9 = call_ads(ads_raw[0]);
+        float dist_a10 = call_ads(ads_raw[1]);
+        float dist_a11 = call_ads(ads_raw[2]);
+        float dist_a12 = call_ads(ads_raw[3]);
         float dist_b1 = call_depan(raw_b1);
         float dist_b2 = call_depan(raw_b2);
         float dist_b3 = call_depan(raw_b3);
         float dist_b4 = call_depan(raw_b4);
         
         pc.printf("ir atas\n");
-        pc.printf("    %.2f %.2f\n", dist_a2, dist_a1);
-        pc.printf("%.2f          %.2f\n", dist_a3, dist_a7);
-        pc.printf("%.2f          %.2f\n", dist_a4, dist_a8);
-        pc.printf("    %.2f %.2f\n", dist_a6, dist_a5);
+        pc.printf("%.2f   %.2f %.2f   %.2f\n", dist_a9, dist_a10, dist_a11, dist_a12);
+        pc.printf("%.2f               %.2f\n", dist_a3, dist_a1);
+        pc.printf("%.2f               %.2f\n", dist_a4, dist_a6);
+        pc.printf("%.2f   %.2f %.2f   %.2f\n", dist_a2, dist_a8, dist_a7, dist_a5);
         
         pc.printf("ir bawah\n");
         pc.printf("      %.2f\n", dist_b1);
@@ -160,30 +158,29 @@
         
         wait(1);
         
-        // Stepper
-        pc.printf("Stepper \n");
-        for (int i = 0; i < 50; i++) {
-            s.step(1, 1, 1/WAIT_TIME);
-//            pc.printf("%d\n", i);
-        }
-        
-        for (int i = 0; i < 50; i++) {
-            s.step(1, -1, 1/WAIT_TIME);   
-        }
+        //// Stepper
+//        pc.printf("Stepper \n");
+//        for (int i = 0; i < 50; i++) {
+//            s.step(1, 1, 1/WAIT_TIME);
+//        }
+//        
+//        for (int i = 0; i < 50; i++) {
+//            s.step(1, -1, 1/WAIT_TIME);   
+//        }
+//        
+//        // LED
+//        led_api = 1;
+//        pc.printf("led api on\n");
+//        wait(0.5);
+//        led_api = 0;
+//        pc.printf("led api off\n");
         
-        // LED
-        led_api = 1;
-        pc.printf("led api on\n");
-        wait(0.5);
-        led_api = 0;
-        pc.printf("led api off\n");
-        
-        led_sound = 1;
-        pc.printf("led sound on\n");
-        wait(0.5);
-        led_sound = 0;
-        pc.printf("led sound off\n");
-        wait(0.5);
+        //led_sound = 1;
+//        pc.printf("led sound on\n");
+//        wait(0.5);
+//        led_sound = 0;
+//        pc.printf("led sound off\n");
+//        wait(0.5);
         
         pc.printf("\033[2J\033[H");
     }