Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE mbed
Fork of Gas_Sensor_best_copy by
main.cpp@1:fec4764e82cb, 2016-06-28 (annotated)
- Committer:
- nhardy6
- Date:
- Tue Jun 28 18:58:40 2016 +0000
- Revision:
- 1:fec4764e82cb
- Parent:
- 0:bd3708b85a8b
finished tare button
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| nhardy6 | 0:bd3708b85a8b | 1 | #include "mbed.h" |
| nhardy6 | 0:bd3708b85a8b | 2 | #include "GasArray.h" |
| nhardy6 | 0:bd3708b85a8b | 3 | #include "string.h" |
| nhardy6 | 0:bd3708b85a8b | 4 | |
| nhardy6 | 0:bd3708b85a8b | 5 | //base sensors' resistances |
| nhardy6 | 0:bd3708b85a8b | 6 | float baseR[] = {9000, 650000}; |
| nhardy6 | 0:bd3708b85a8b | 7 | |
| nhardy6 | 0:bd3708b85a8b | 8 | //number of sensors |
| nhardy6 | 0:bd3708b85a8b | 9 | int number = 2; |
| nhardy6 | 0:bd3708b85a8b | 10 | |
| nhardy6 | 0:bd3708b85a8b | 11 | //input total voltage across divider |
| nhardy6 | 0:bd3708b85a8b | 12 | float pwrV = 3; |
| nhardy6 | 0:bd3708b85a8b | 13 | |
| nhardy6 | 0:bd3708b85a8b | 14 | //corresponding divider resistances |
| nhardy6 | 0:bd3708b85a8b | 15 | float dividerR[] = {1000, 201000}; |
| nhardy6 | 0:bd3708b85a8b | 16 | |
| nhardy6 | 0:bd3708b85a8b | 17 | //corresponding sensor pins (analog in) |
| nhardy6 | 0:bd3708b85a8b | 18 | AnalogIn places[] = {A0, A1}; |
| nhardy6 | 0:bd3708b85a8b | 19 | |
| nhardy6 | 0:bd3708b85a8b | 20 | //sensitivity matrix (ONLY TAKES SQUARE MATRICES) |
| nhardy6 | 0:bd3708b85a8b | 21 | float ISensitivityM[] = {-0.5,-0.001,-1,-0.0024}; |
| nhardy6 | 0:bd3708b85a8b | 22 | |
| nhardy6 | 0:bd3708b85a8b | 23 | //sensor types |
| nhardy6 | 0:bd3708b85a8b | 24 | string type[] = {"p-type", "n-type"}; |
| nhardy6 | 0:bd3708b85a8b | 25 | |
| nhardy6 | 0:bd3708b85a8b | 26 | //gases |
| nhardy6 | 0:bd3708b85a8b | 27 | string gas[] = {"NO", "NO2"}; |
| nhardy6 | 0:bd3708b85a8b | 28 | |
| nhardy6 | 0:bd3708b85a8b | 29 | //tare button |
| nhardy6 | 1:fec4764e82cb | 30 | InterruptIn tareButton(p5); |
| nhardy6 | 0:bd3708b85a8b | 31 | |
| nhardy6 | 0:bd3708b85a8b | 32 | //initialize screen |
| nhardy6 | 0:bd3708b85a8b | 33 | uLCD_4DGL uLCD(p28, p27, p29); |
| nhardy6 | 0:bd3708b85a8b | 34 | |
| nhardy6 | 0:bd3708b85a8b | 35 | //establish sensor array |
| nhardy6 | 0:bd3708b85a8b | 36 | GasArray Device(number, baseR, pwrV, dividerR, places, ISensitivityM, type, gas); |
| nhardy6 | 0:bd3708b85a8b | 37 | |
| nhardy6 | 1:fec4764e82cb | 38 | void zero() |
| nhardy6 | 1:fec4764e82cb | 39 | { |
| nhardy6 | 1:fec4764e82cb | 40 | Device.tare(); |
| nhardy6 | 1:fec4764e82cb | 41 | } |
| nhardy6 | 1:fec4764e82cb | 42 | |
| nhardy6 | 0:bd3708b85a8b | 43 | int main() |
| nhardy6 | 0:bd3708b85a8b | 44 | { |
| nhardy6 | 0:bd3708b85a8b | 45 | //setup button |
| nhardy6 | 0:bd3708b85a8b | 46 | tareButton.rise(&zero); |
| nhardy6 | 0:bd3708b85a8b | 47 | //setup screen |
| nhardy6 | 0:bd3708b85a8b | 48 | uLCD.display_control(PORTRAIT); |
| nhardy6 | 0:bd3708b85a8b | 49 | uLCD.cls(); |
| nhardy6 | 0:bd3708b85a8b | 50 | uLCD.baudrate(BAUD_3000000); |
| nhardy6 | 0:bd3708b85a8b | 51 | uLCD.background_color(BLACK); |
| nhardy6 | 0:bd3708b85a8b | 52 | //include cool credit |
| nhardy6 | 0:bd3708b85a8b | 53 | uLCD.printf("Georgia Tech \n\n Sensors and\n Catalysis Lab \n\n in collaboration with \n\n Hardy\n Technologies"); |
| nhardy6 | 0:bd3708b85a8b | 54 | wait(.5); |
| nhardy6 | 0:bd3708b85a8b | 55 | |
| nhardy6 | 0:bd3708b85a8b | 56 | //display percentages |
| nhardy6 | 0:bd3708b85a8b | 57 | Device.display_init(&uLCD); |
| nhardy6 | 0:bd3708b85a8b | 58 | //continuously update |
| nhardy6 | 0:bd3708b85a8b | 59 | while(1) |
| nhardy6 | 0:bd3708b85a8b | 60 | { |
| nhardy6 | 0:bd3708b85a8b | 61 | //read voltages |
| nhardy6 | 0:bd3708b85a8b | 62 | Device.read(); |
| nhardy6 | 0:bd3708b85a8b | 63 | //display percentages |
| nhardy6 | 0:bd3708b85a8b | 64 | Device.display_cont(&uLCD); |
| nhardy6 | 0:bd3708b85a8b | 65 | } |
| nhardy6 | 0:bd3708b85a8b | 66 | } |
