EEPROMTEST

Dependencies:   ADS1015 mbed

Fork of Test_nucleo_MCUUU by BAP TUDelft

Committer:
MockyBirdTwo
Date:
Wed May 09 15:00:54 2018 +0000
Revision:
9:cc559f905411
Parent:
8:2875bb7a4e67
Child:
10:5a0bad3fb422
Added EEEEEEEPROM capabilities(not tested)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xorjoep 0:952479e15354 1 #include "mbed.h" // Include files and define parameters.
xorjoep 0:952479e15354 2 #include "Adafruit_ADS1015.h"
MockyBirdTwo 7:65325c237ac5 3 #include <vector>
MockyBirdTwo 9:cc559f905411 4 #include <string>
MockyBirdTwo 9:cc559f905411 5 using namespace std;
xorjoep 0:952479e15354 6
MockyBirdTwo 9:cc559f905411 7 I2C i2c(PB_9, PB_8); // I2C for sensorplate.
MockyBirdTwo 9:cc559f905411 8 Adafruit_ADS1115 piezo_resistive_adc1(&i2c, 0x48); // i2c pins, i2c address.
MockyBirdTwo 9:cc559f905411 9 Adafruit_ADS1115 piezo_resistive_adc2(&i2c, 0x49); // i2c pins, i2c address.
MockyBirdTwo 9:cc559f905411 10 Adafruit_ADS1115 piezo_electric_adc(&i2c, 0x4B); // i2c pins, i2c address.
MockyBirdTwo 9:cc559f905411 11 //I2C for EEEEEEEPROM eeprom_mod(&i2, ?adres?)
MockyBirdTwo 9:cc559f905411 12
xorjoep 0:952479e15354 13 Serial usb_serial(SERIAL_TX, SERIAL_RX); // tx, rx
xorjoep 0:952479e15354 14
xorjoep 0:952479e15354 15 int i2c__frequency = 100000; // I2C Frequency.
xorjoep 0:952479e15354 16 int baud_rate = 115200; // Baud rate.
MockyBirdTwo 9:cc559f905411 17 const int EEPROM_adr=0x00;//8Bit address for I2C to EEPROM
MockyBirdTwo 9:cc559f905411 18 const int EE_len =1; //Length EEprom vector to be sent
xorjoep 4:fd10d8609295 19 Timer timer;
xorjoep 4:fd10d8609295 20
MockyBirdTwo 7:65325c237ac5 21 // array to save sensor data
MockyBirdTwo 3:efb3a5b4bc9e 22
xorjoep 0:952479e15354 23 DigitalOut myled(LED1);
MockyBirdTwo 3:efb3a5b4bc9e 24
MockyBirdTwo 8:2875bb7a4e67 25 //Check whether any sensor values are zero
MockyBirdTwo 9:cc559f905411 26 void checkzero (vector<int>& sendat, int size){
MockyBirdTwo 9:cc559f905411 27 usb_serial.printf("Zero:");
MockyBirdTwo 7:65325c237ac5 28 for(int i=0;i<size;++i){
MockyBirdTwo 9:cc559f905411 29 if(sendat[i]> -5 & sendat[i] < 5){
MockyBirdTwo 9:cc559f905411 30 sendat[i]=0;}
MockyBirdTwo 9:cc559f905411 31 if(sendat[i]!= 0){
MockyBirdTwo 9:cc559f905411 32 usb_serial.printf("%d\n", i);}
MockyBirdTwo 9:cc559f905411 33 else{
MockyBirdTwo 9:cc559f905411 34 usb_serial.printf("%d\n", i);}
MockyBirdTwo 7:65325c237ac5 35 }
MockyBirdTwo 7:65325c237ac5 36 }
MockyBirdTwo 9:cc559f905411 37 //Writing EEPROM through I2C
MockyBirdTwo 9:cc559f905411 38 void EEPROM_write(char *EEPROM_dat,int len){
MockyBirdTwo 9:cc559f905411 39 i2c.write(EEPROM_adr,EEPROM_dat,len);
MockyBirdTwo 9:cc559f905411 40 }
MockyBirdTwo 9:cc559f905411 41 //Reading EEPROM through I2C, returns vector
MockyBirdTwo 9:cc559f905411 42 string EEPROM_read(){
MockyBirdTwo 9:cc559f905411 43 char EEPROM_dat[EE_len];
MockyBirdTwo 9:cc559f905411 44 i2c.read(EEPROM_adr,EEPROM_dat,EE_len);
MockyBirdTwo 9:cc559f905411 45 return EEPROM_dat;
MockyBirdTwo 9:cc559f905411 46 }
MockyBirdTwo 8:2875bb7a4e67 47
xorjoep 0:952479e15354 48 int main(){
MockyBirdTwo 9:cc559f905411 49 vector<int> S_data(8);
xorjoep 0:952479e15354 50
MockyBirdTwo 9:cc559f905411 51 i2c.frequency(i2c__frequency); // Set frequency for i2c connection to sensorplate (variable is declared in config part).
xorjoep 0:952479e15354 52 usb_serial.baud(baud_rate); // Set serial USB connection baud rate (variable is declared in config part).
xorjoep 0:952479e15354 53
MockyBirdTwo 3:efb3a5b4bc9e 54 usb_serial.printf("MCUs rule the World !\n");
xorjoep 1:8c5bcf47869e 55
xorjoep 0:952479e15354 56 piezo_resistive_adc1.setGain(GAIN_TWOTHIRDS); // Set ranges of ADC to +/-6.144V (end is marked with #):
xorjoep 0:952479e15354 57 piezo_resistive_adc2.setGain(GAIN_TWOTHIRDS);
xorjoep 0:952479e15354 58
xorjoep 4:fd10d8609295 59 usb_serial.printf("Gains set.\n");
xorjoep 1:8c5bcf47869e 60
xorjoep 4:fd10d8609295 61 timer.start();
xorjoep 0:952479e15354 62 while(1){
xorjoep 4:fd10d8609295 63 while(timer.read_us() < 2000){}; timer.reset(); //Set readout frequency
xorjoep 0:952479e15354 64
xorjoep 0:952479e15354 65 myled = !myled;
xorjoep 0:952479e15354 66 //usb_serial.printf("Piezo electric 0_1 dif %d \n", piezo_electric_adc.readADC_Differential_0_1()); // First PE readout.
xorjoep 0:952479e15354 67 // usb_serial.printf("Piezo electric 2_3 dif %d \n", piezo_electric_adc.readADC_Differential_2_3());
MockyBirdTwo 6:7859d19b781a 68
MockyBirdTwo 7:65325c237ac5 69 for (uint8_t t=0; t<4; ++t){ //Save sensor data into array
MockyBirdTwo 7:65325c237ac5 70 S_data[t] = (int16_t) piezo_resistive_adc1.readADC_SingleEnded(t); //Put first 4 PR sensor data into first 4 S_data array
MockyBirdTwo 7:65325c237ac5 71 S_data[t+4]= (int16_t) piezo_resistive_adc2.readADC_SingleEnded(t); //Put next 4 PR sensor data into first 4 S_data array
MockyBirdTwo 6:7859d19b781a 72 }
MockyBirdTwo 7:65325c237ac5 73
MockyBirdTwo 9:cc559f905411 74 checkzero(S_data,S_data.size()); //Check whether any sensor values are zero
xorjoep 0:952479e15354 75 for (uint8_t k = 0; k < 4; ++k) {
MockyBirdTwo 6:7859d19b781a 76 usb_serial.printf("R %d Ar %d: %d\n", k, 1, S_data[k]); // First 4 PR readout.
MockyBirdTwo 8:2875bb7a4e67 77 usb_serial.printf("R %d Ar %d: %d\n", k, 2, S_data[k+4]); // Next 4 PR readout.
xorjoep 0:952479e15354 78 }
MockyBirdTwo 8:2875bb7a4e67 79
MockyBirdTwo 7:65325c237ac5 80
xorjoep 0:952479e15354 81 }
xorjoep 0:952479e15354 82 }