#1

Dependencies:   mbed SB1602E

Fork of mbed-cloud-connect-sensor-laser-distance by Andrea Corrado

Revision:
9:f2bdb2a79528
Parent:
8:0f74264cc38a
--- a/main.cpp	Tue May 01 19:16:01 2018 +0000
+++ b/main.cpp	Mon Dec 10 07:22:31 2018 +0000
@@ -1,128 +1,35 @@
 #include "mbed.h"
 #include "SB1602E.h"
-#include "vl53l0x_api.h"
-#include "vl53l0x_platform.h"
-#include "vl53l0x_i2c_platform.h"
-
 #define USE_I2C_2V8
-
-DigitalOut myled(P0_7); // 7=rot, 8=gruen
-
-I2C i2c_disp(P0_5, P0_4); //  SDA, SCL auf NXP U24
-SB1602E lcd( i2c_disp );
+#include "DebounceIn.h"
 
-VL53L0X_Error WaitMeasurementDataReady(VL53L0X_DEV Dev) {
-    VL53L0X_Error Status = VL53L0X_ERROR_NONE;
-    uint8_t NewDatReady=0;
-    uint32_t LoopNb;
-    
-    if (Status == VL53L0X_ERROR_NONE) {
-        LoopNb = 0;
-        do {
-            Status = VL53L0X_GetMeasurementDataReady(Dev, &NewDatReady);
-            if ((NewDatReady == 0x01) || Status != VL53L0X_ERROR_NONE) {
-                break;
-            }
-            LoopNb = LoopNb + 1;
-            VL53L0X_PollingDelay(Dev);
-        } while (LoopNb < VL53L0X_DEFAULT_MAX_LOOP);
+DigitalOut myled(P0_8); // 7=rot, 8=grün, 9=blau
+DigitalIn sw_o(P0_12);
+InterruptIn sw_b(P0_13);
+InterruptIn sw_g(P0_14);
+Ticker ticker1;
+
 
-        if (LoopNb >= VL53L0X_DEFAULT_MAX_LOOP) {
-            Status = VL53L0X_ERROR_TIME_OUT;
-        }
-    }
+I2C i2c_disp(P0_5, P0_4); //  SDA, SCL auf LPC11U24
+SB1602E lcd(i2c_disp);
 
-    return Status;
-}
-
-VL53L0X_Error WaitStopCompleted(VL53L0X_DEV Dev) {
-    VL53L0X_Error Status = VL53L0X_ERROR_NONE;
-    uint32_t StopCompleted=0;
-    uint32_t LoopNb;
+int count_o, count_b, count_g = 0;
 
-    if (Status == VL53L0X_ERROR_NONE) {
-        LoopNb = 0;
-        do {
-            Status = VL53L0X_GetStopCompletedStatus(Dev, &StopCompleted);
-            if ((StopCompleted == 0x00) || Status != VL53L0X_ERROR_NONE) {
-                break;
-            }
-            LoopNb = LoopNb + 1;
-            VL53L0X_PollingDelay(Dev);
-        } while (LoopNb < VL53L0X_DEFAULT_MAX_LOOP);
-
-        if (LoopNb >= VL53L0X_DEFAULT_MAX_LOOP) {
-            Status = VL53L0X_ERROR_TIME_OUT;
-        }
-
+void blue(){
+    count_b++;
     }
-
-    return Status;
-}
+void green() {
+    count_g++;
+    }
 
 int main()
-{
-    
-    //Setup laser
-    int var=1, measure=0;
-    int ave=0, sum=0;
-    VL53L0X_Dev_t MyDevice;
-    VL53L0X_Dev_t *pMyDevice = &MyDevice;
-    VL53L0X_RangingMeasurementData_t    RangingMeasurementData;
-    VL53L0X_RangingMeasurementData_t   *pRangingMeasurementData    = &RangingMeasurementData;
-    
-    // Initialize Comms laster
-    pMyDevice->I2cDevAddr      = 0x52;
-    pMyDevice->comms_type      =  1;
-    pMyDevice->comms_speed_khz =  400;
-    
-    
-    VL53L0X_RdWord(&MyDevice, VL53L0X_REG_OSC_CALIBRATE_VAL,0);
-    VL53L0X_DataInit(&MyDevice); 
-    uint32_t refSpadCount;
-    uint8_t isApertureSpads;
-    uint8_t VhvSettings;
-    uint8_t PhaseCal;
-    
-    VL53L0X_StaticInit(pMyDevice); 
-    VL53L0X_PerformRefSpadManagement(pMyDevice, &refSpadCount, &isApertureSpads); // Device Initialization
-    VL53L0X_PerformRefCalibration(pMyDevice, &VhvSettings, &PhaseCal); // Device Initialization
-    VL53L0X_SetDeviceMode(pMyDevice, VL53L0X_DEVICEMODE_CONTINUOUS_RANGING); // Setup in single ranging mode
-    //VL53L0X_SetLimitCheckValue(pMyDevice, VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, (FixPoint1616_t)(0.1*65536));  //Long Range modus
-    //VL53L0X_SetLimitCheckValue(pMyDevice, VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, (FixPoint1616_t)(60*65536)); // Long Range
-    //VL53L0X_SetMeasurementTimingBudgetMicroSeconds(pMyDevice, 33000);  // Long Range
-    //VL53L0X_SetVcselPulsePeriod(pMyDevice, VL53L0X_VCSEL_PERIOD_PRE_RANGE, 18);  // Long Range
-    //VL53L0X_SetVcselPulsePeriod(pMyDevice, VL53L0X_VCSEL_PERIOD_FINAL_RANGE, 14);  // Long Range
+{  
+    lcd.printf(0, "Red Blue Green\r");    //  Parameter von printf auf LCD: Zeilennummer (0 or 1), string
+    while(1) {
 
-    VL53L0X_SetLimitCheckValue(pMyDevice, VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, (FixPoint1616_t)(0.25*65536)); //High Accuracy mode, see API PDF
-    VL53L0X_SetLimitCheckValue(pMyDevice, VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, (FixPoint1616_t)(18*65536)); //High Accuracy mode, see API PDF
-    VL53L0X_SetMeasurementTimingBudgetMicroSeconds(pMyDevice, 200000); //High Accuracy mode, see API PDF
-    VL53L0X_StartMeasurement(pMyDevice);
-    
-    while(1) {
-        //lcd.cls();
-        //lcd.locate(0,3);
-        //lcd.printf("[DISTANCE]");
-        
-        lcd.printf( 0, "Laser-Messung:\r" );    //  line# (0 or 1), string
+        lcd.printf(1,1, "%d   %d   %d", count_o, count_b, count_g);
 
         myled = !myled;
-            while(var<=5){
-                WaitMeasurementDataReady(pMyDevice);
-                VL53L0X_GetRangingMeasurementData(pMyDevice, pRangingMeasurementData);
-                measure=pRangingMeasurementData->RangeMilliMeter;
-                sum=sum+measure;
-                VL53L0X_ClearInterruptMask(pMyDevice, VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_NEW_SAMPLE_READY);
-                VL53L0X_PollingDelay(pMyDevice);
-                var++;
-                }
-        ave=sum/var;
-        var=1;
-        sum=0; 
-        //lcd.locate(0,15);
-        //lcd.printf("%dmm", ave); // Print to LCD values
-        lcd.printf( 1,1, "         ");
-        lcd.printf( 1,1, "%dmm", ave);    //  line# (0 or 1), string
-        wait(0.2);
+
     }
 }
\ No newline at end of file