analog module solar on foils project

Dependencies:   mbed

Fork of CAN_module_analog by Dannis Brugman

Committer:
Dannis_mbed
Date:
Tue Aug 11 08:41:49 2015 +0000
Revision:
0:38f51c4f7655
presentation version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dannis_mbed 0:38f51c4f7655 1 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 2 // //
Dannis_mbed 0:38f51c4f7655 3 // File : ExtUI.cpp //
Dannis_mbed 0:38f51c4f7655 4 // Version : 0.1 //
Dannis_mbed 0:38f51c4f7655 5 // Initial : 24 June 2015 //
Dannis_mbed 0:38f51c4f7655 6 // Author : Dany Brugman //
Dannis_mbed 0:38f51c4f7655 7 // Comment : sensor class //
Dannis_mbed 0:38f51c4f7655 8 // //
Dannis_mbed 0:38f51c4f7655 9 // //
Dannis_mbed 0:38f51c4f7655 10 // Changelog : //
Dannis_mbed 0:38f51c4f7655 11 // Date: Name: Comment: //
Dannis_mbed 0:38f51c4f7655 12 // 24/06/2015 DNB First version //
Dannis_mbed 0:38f51c4f7655 13 // //
Dannis_mbed 0:38f51c4f7655 14 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 15
Dannis_mbed 0:38f51c4f7655 16 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 17 // includes //
Dannis_mbed 0:38f51c4f7655 18 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 19 #include "sensor.h"
Dannis_mbed 0:38f51c4f7655 20
Dannis_mbed 0:38f51c4f7655 21 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 22 // defines //
Dannis_mbed 0:38f51c4f7655 23 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 24 #define NEW_HEIGHT 203
Dannis_mbed 0:38f51c4f7655 25
Dannis_mbed 0:38f51c4f7655 26 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 27 // constructor //
Dannis_mbed 0:38f51c4f7655 28 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 29 Sensor::Sensor() :
Dannis_mbed 0:38f51c4f7655 30 uiCounter(0),
Dannis_mbed 0:38f51c4f7655 31 bClearToSend(0)
Dannis_mbed 0:38f51c4f7655 32 {
Dannis_mbed 0:38f51c4f7655 33 init();
Dannis_mbed 0:38f51c4f7655 34 };
Dannis_mbed 0:38f51c4f7655 35
Dannis_mbed 0:38f51c4f7655 36 Sensor::~Sensor()
Dannis_mbed 0:38f51c4f7655 37 {
Dannis_mbed 0:38f51c4f7655 38 };
Dannis_mbed 0:38f51c4f7655 39
Dannis_mbed 0:38f51c4f7655 40 extern Serial debug;
Dannis_mbed 0:38f51c4f7655 41 extern CAN CANBus;
Dannis_mbed 0:38f51c4f7655 42 extern AnalogIn sensorPort;
Dannis_mbed 0:38f51c4f7655 43
Dannis_mbed 0:38f51c4f7655 44 circular_buffer<float> cbHeightBuffer(10);
Dannis_mbed 0:38f51c4f7655 45 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 46 // initialisation //
Dannis_mbed 0:38f51c4f7655 47 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 48 void Sensor::init(void)
Dannis_mbed 0:38f51c4f7655 49 {
Dannis_mbed 0:38f51c4f7655 50
Dannis_mbed 0:38f51c4f7655 51 }
Dannis_mbed 0:38f51c4f7655 52
Dannis_mbed 0:38f51c4f7655 53 void Sensor::vMeasureHeight(void)
Dannis_mbed 0:38f51c4f7655 54 {
Dannis_mbed 0:38f51c4f7655 55 fValue = sensorPort.read();
Dannis_mbed 0:38f51c4f7655 56 fDistance = (((fValue- 0.18f)* 122.22f) + 12);
Dannis_mbed 0:38f51c4f7655 57 cbHeightBuffer.push_back(fDistance);
Dannis_mbed 0:38f51c4f7655 58 uiHeight = (uint32_t) fDistance;
Dannis_mbed 0:38f51c4f7655 59 itoa(fDistance, cValue);
Dannis_mbed 0:38f51c4f7655 60 //cMessage = getValue();
Dannis_mbed 0:38f51c4f7655 61 if (bClearToSend)
Dannis_mbed 0:38f51c4f7655 62 {
Dannis_mbed 0:38f51c4f7655 63 CANBus.write(CANMessage(NEW_HEIGHT, getValue(), 1));
Dannis_mbed 0:38f51c4f7655 64 debug.printf("Clear to send\t");
Dannis_mbed 0:38f51c4f7655 65 }
Dannis_mbed 0:38f51c4f7655 66 debug.printf("Sensor value int: %i\t", uiHeight);
Dannis_mbed 0:38f51c4f7655 67 debug.printf("send data: %c\r\n", getValue());
Dannis_mbed 0:38f51c4f7655 68 }
Dannis_mbed 0:38f51c4f7655 69
Dannis_mbed 0:38f51c4f7655 70 float Sensor::vAverageValue(void)
Dannis_mbed 0:38f51c4f7655 71 {
Dannis_mbed 0:38f51c4f7655 72 int i;
Dannis_mbed 0:38f51c4f7655 73 int size = cbHeightBuffer.get_size();
Dannis_mbed 0:38f51c4f7655 74 for(i=0; i < size; i++)
Dannis_mbed 0:38f51c4f7655 75 {
Dannis_mbed 0:38f51c4f7655 76 fAverageDistance += cbHeightBuffer.front();
Dannis_mbed 0:38f51c4f7655 77 }
Dannis_mbed 0:38f51c4f7655 78 fAverageDistance = fAverageDistance/size;
Dannis_mbed 0:38f51c4f7655 79 return fAverageDistance;
Dannis_mbed 0:38f51c4f7655 80 }
Dannis_mbed 0:38f51c4f7655 81
Dannis_mbed 0:38f51c4f7655 82 void Sensor::setClearToSend(bool Status)
Dannis_mbed 0:38f51c4f7655 83 {
Dannis_mbed 0:38f51c4f7655 84 bClearToSend = Status;
Dannis_mbed 0:38f51c4f7655 85 }
Dannis_mbed 0:38f51c4f7655 86
Dannis_mbed 0:38f51c4f7655 87 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 88 // prep value //
Dannis_mbed 0:38f51c4f7655 89 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 90 void Sensor::itoa( uint32_t value, char *str)
Dannis_mbed 0:38f51c4f7655 91 {
Dannis_mbed 0:38f51c4f7655 92 int i,j;
Dannis_mbed 0:38f51c4f7655 93 char temp[4];
Dannis_mbed 0:38f51c4f7655 94 for(i=0; value > 0; i++){
Dannis_mbed 0:38f51c4f7655 95 str[i] = value%10+'0';
Dannis_mbed 0:38f51c4f7655 96 value=value/10;
Dannis_mbed 0:38f51c4f7655 97 }
Dannis_mbed 0:38f51c4f7655 98 for(j=0;i>=0;j++,i--){
Dannis_mbed 0:38f51c4f7655 99 temp[j]=str[i-1];
Dannis_mbed 0:38f51c4f7655 100 }
Dannis_mbed 0:38f51c4f7655 101 for(i=0;i<j;i++){
Dannis_mbed 0:38f51c4f7655 102 str[i]=temp[i];
Dannis_mbed 0:38f51c4f7655 103 }
Dannis_mbed 0:38f51c4f7655 104 if(strcmp(str,"")== 0) str[0] = '0';
Dannis_mbed 0:38f51c4f7655 105 }
Dannis_mbed 0:38f51c4f7655 106
Dannis_mbed 0:38f51c4f7655 107 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 108 // get value //
Dannis_mbed 0:38f51c4f7655 109 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:38f51c4f7655 110 char* Sensor::getValue(void)
Dannis_mbed 0:38f51c4f7655 111 {
Dannis_mbed 0:38f51c4f7655 112 static char* pValue;
Dannis_mbed 0:38f51c4f7655 113 pValue = cValue;
Dannis_mbed 0:38f51c4f7655 114 return pValue;
Dannis_mbed 0:38f51c4f7655 115 }