ST / Mbed 2 deprecated HelloWorld_6180XA1

Dependencies:   X_NUCLEO_6180XA1 mbed

Fork of HelloWorld_6180XA1 by ST Expansion SW Team

X-Nucleo-6180XA1 Hello World Application

This application provides a simple example of usage of X_NUCLEO_6180XA1 library. It provides a measurement of:

  • Ambient Light (Lux),
  • Distance (millimeters) of an object in front of the on-board sensor.

The values are displayed on the Hyperterminal connected through COM port over USB.

Files at this revision

API Documentation at this revision

Comitter:
gallonm
Date:
Tue Oct 06 09:09:03 2015 +0200
Parent:
7:865f0c23a183
Child:
9:1d0e839edee8
Commit message:
Fitted the Init function to initialize the board and to prepare the measurements
Call StartMeasurement function
Added define to specify the operation mode
Range and light measure works correctly

Changed in this revision

X_NUCLEO_6180XA1.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/X_NUCLEO_6180XA1.lib	Tue Sep 29 15:39:05 2015 +0200
+++ b/X_NUCLEO_6180XA1.lib	Tue Oct 06 09:09:03 2015 +0200
@@ -1,1 +1,1 @@
-https://developer.mbed.org/users/gallonm/code/X_NUCLEO_6180XA1/#6a09fe77ad3c
+https://developer.mbed.org/users/gallonm/code/X_NUCLEO_6180XA1/#9cbc1736f148
--- a/main.cpp	Tue Sep 29 15:39:05 2015 +0200
+++ b/main.cpp	Tue Oct 06 09:09:03 2015 +0200
@@ -1,87 +1,44 @@
 #include "mbed.h"
-#include "vl6180x_class.h"
-#include "STMPE1600_class.h"
+#include "x_nucleo_6180xa1.h"
 
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <assert.h>
+
 
 #define VL6180X_I2C_SDA I2C_SDA
 #define VL6180X_I2C_SCL I2C_SCL
 
-
-/* Enable e disable function -------------------------------------------------------*/
-#define EXPANDER_I2C_ADDRESS    (0x42*2)
-#define GPMR    0x10
-#define GPSR    0x12
-#define GPDR    0x14
+//devo wrappare le funzioni del api.c
+//posso creare un`unica funzione che dal main chiama la misura di distanza o luce
+//gestisco all`interno della classe sensore con uno switch case e slezionare quindi la modalita di misura
+//nel main posso definire con dei define i valori (dello switch case) che permettono di selezionare le varie modalita
 
-#define V2_CHIPEN   (1<<12)
-#define V2_CHIPEN_B (1<<13)
-#define V2_CHIPEN_L (1<<14)
-#define V2_CHIPEN_R (1<<15)
+#define RANGE_SINGLE_SHOT										1
+#define ALS_SINGLE_SHOT											2
+#define RANGE_CONTINUOUS										3
+#define ALS_CONTINUOUS											4
+#define RANGE_CONTINUOUS_ALS_SINGLE_SHOT		5
+#define RANGE_SINGLE_SHOT_ALS_CONTINUOUS		6
+#define INTERLEAVED MODE										7
 
-/*----------------------------------------------------------------------------------*/	
-	
 void OnErrLog(void){};
 void DISP_ExecLoopBody(void){};
 
+DevI2C device_i2c(VL6180X_I2C_SDA, VL6180X_I2C_SCL);
+static X_NUCLEO_6180XA1 *board=X_NUCLEO_6180XA1::Instance(&device_i2c);	
+	
 int main()
 {   
-	  uint8_t buf[8]={1,1,0,0,0,0,0,0};
-    static uint32_t tmp;
-
+	  /*
+    uint8_t buf[8]={1,1,1,0,0,0,0,0};
+		
 		uint8_t x=0xFF;
 		uint8_t y=0xF7;
 		uint8_t z=0x80;
 		uint8_t k=0x17;
-		uint8_t g=0xE7;
-		
-		DigitalOut  led (LED2);
-		led=1;
-		
-		DevI2C device_i2c(VL6180X_I2C_SDA, VL6180X_I2C_SCL);
-
-    STMPE1600DigiOut gpio0(device_i2c, GPIO_0, STMPE1600_DEF_DEVICE_ADDRESS);					
-    STMPE1600DigiOut gpio1(device_i2c, GPIO_1, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio2(device_i2c, GPIO_2, STMPE1600_DEF_DEVICE_ADDRESS);			
-    STMPE1600DigiOut gpio3(device_i2c, GPIO_3, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio4(device_i2c, GPIO_4, STMPE1600_DEF_DEVICE_ADDRESS);				
-    STMPE1600DigiOut gpio5(device_i2c, GPIO_5, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio6(device_i2c, GPIO_6, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio7(device_i2c, GPIO_7, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio8(device_i2c, GPIO_8, STMPE1600_DEF_DEVICE_ADDRESS);				
-
-    STMPE1600DigiOut gpio9(device_i2c, GPIO_9, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio10(device_i2c, GPIO_10, STMPE1600_DEF_DEVICE_ADDRESS);			
-    STMPE1600DigiIn  gpio11(device_i2c, GPIO_11, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio12(device_i2c, GPIO_12, STMPE1600_DEF_DEVICE_ADDRESS);				
-    STMPE1600DigiOut gpio13(device_i2c, GPIO_13, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio14(device_i2c, GPIO_14, STMPE1600_DEF_DEVICE_ADDRESS);		
-    STMPE1600DigiOut gpio15(device_i2c, GPIO_15, STMPE1600_DEF_DEVICE_ADDRESS);		
-
-
-
-		gpio0 = 0; gpio1 = 1; gpio2 = 1; gpio3 = 1; gpio4 = 1;	gpio5 = 1; gpio6 = 1; gpio7 = 0;
-		gpio8 = 1; gpio9 = 1; gpio10 = 1; gpio12 = 1;	gpio13 = 1; gpio14 = 1; gpio15 = 1;		
-		
-//STMPE1600DigiOut * p_exp = new STMPE1600DigiOut(device_i2c, GPIO_12, STMPE1600_DEF_DEVICE_ADDRESS);		
-		
-	  VL6180X sensor1(device_i2c, gpio12);
-	
-		sensor1.VL6180x_Off();	
-		sensor1.VL6180x_On();
-//		tmp = sensor1.Init();
-		
-	static uint8_t id=0;
-		id = sensor1.ReadID();   // read id to test 
-		sensor1.VL6180x_SetI2CAddress(sensor1.DevData, 0x10);
-		id=0;
-				id = sensor1.ReadID();   // read id to test 
-//	  VL6180X sensor1(device_i2c, exp);		
-			
-		
-		while (1);
+		uint8_t g=0xE7;	
 		 
 	  //imposto GPIO di input e output
 		device_i2c.i2c_write(&x, 0x42*2, 0x14, 1);
@@ -90,42 +47,16 @@
 		device_i2c.i2c_write(&z, 0x42*2, 0x12, 1);
 		device_i2c.i2c_write(&g, 0x42*2, 0x13, 1); //spengo gpio0 
 		device_i2c.i2c_write(&k, 0x42*2, 0x13, 1); //accendo gpio0
+    */
 		
-		//VL6180x_I2CRead(0x29, (uint16_t)0x000, buf, 2);
-		//VL6180x_I2CRead(0x29, (uint16_t)0x212, buf+1, 2);
-		//buf[2]=0x32;
-		//VL6180x_I2CWrite(0x29, (uint16_t)0x0212, buf+2, 1);
-		//VL6180x_I2CRead(0x32, (uint16_t)0x212, buf+3, 2);
 		
-    buf[0]=sensor1.Init();
-    buf[1]=sensor1.ReadID(); 
-		//buf[2]=sensor1.Prepare();
-		//sensor1.~VL6180X();
 		
-
-		/*
-		X_NUCLEO_6180XA1 board;
-	
-		status=board.vl6180x_top.RdByte(IDENTIFICATION_MODEL_ID, &buffer);
-	  if(!status)
-		{
-		    board.vl6180x_top.SetPresent();
-	   		board.vl6180x_top.SetDeviceID(i);
-			  if(!(board.vl6180x_top.Init()||board.vl6180x_top.Prepare()))
-				{
-				    board.vl6180x_top.SetReady();
-						status=board.vl6180x_top.SetI2CAddress(final_i2c_address);
-						if(status)
-						    errore su scrittura indirizzo i2c
-				}
-				else
-				    errore su init o prepare
-		}		
-		i++;
+		//X_NUCLEO_6180XA1 board(&device_i2c);
 		
-		//stessa cosa per gli altri sensori (left, bottom e right)
-		   
-		*/
+		board->InitBoard();
+		board->sensor_top->StartMeasurement(RANGE_SINGLE_SHOT);
+		
+		//board.~X_NUCLEO_6180XA1();
 
 }