This code uses a uLCD-144-G2 128 by 128 Smart Color LCD to display the humidity and temperature in celcius, kelvin, and fahrenheit.
main.cpp@0:a9b5d6b21f96, 2014-03-28 (annotated)
- Committer:
- hwing91
- Date:
- Fri Mar 28 15:01:02 2014 +0000
- Revision:
- 0:a9b5d6b21f96
INITIAL COMMIT;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hwing91 | 0:a9b5d6b21f96 | 1 | /** Temperature program to output to ULCD |
hwing91 | 0:a9b5d6b21f96 | 2 | * |
hwing91 | 0:a9b5d6b21f96 | 3 | * @author Alan Lai & Nelson Diaz |
hwing91 | 0:a9b5d6b21f96 | 4 | * The Georgia Institute of Technology |
hwing91 | 0:a9b5d6b21f96 | 5 | * ECE 4180 Embeded Systems |
hwing91 | 0:a9b5d6b21f96 | 6 | * Professor Hamblen |
hwing91 | 0:a9b5d6b21f96 | 7 | * 03/28/2014 |
hwing91 | 0:a9b5d6b21f96 | 8 | * |
hwing91 | 0:a9b5d6b21f96 | 9 | * @section LICENSE |
hwing91 | 0:a9b5d6b21f96 | 10 | * ---------------------------------------------------------------------------- |
hwing91 | 0:a9b5d6b21f96 | 11 | * "THE BEER-WARE LICENSE" (Revision 42): |
hwing91 | 0:a9b5d6b21f96 | 12 | * <alanhlai91@gmail.com> wrote this file. As long as you retain this notice you |
hwing91 | 0:a9b5d6b21f96 | 13 | * can do whatever you want with this stuff. If we meet some day, and you think |
hwing91 | 0:a9b5d6b21f96 | 14 | * this stuff is worth it, you can buy me a beer in return. |
hwing91 | 0:a9b5d6b21f96 | 15 | * ---------------------------------------------------------------------------- |
hwing91 | 0:a9b5d6b21f96 | 16 | * |
hwing91 | 0:a9b5d6b21f96 | 17 | * |
hwing91 | 0:a9b5d6b21f96 | 18 | * @section DESCRIPTION |
hwing91 | 0:a9b5d6b21f96 | 19 | * |
hwing91 | 0:a9b5d6b21f96 | 20 | * Honeywell HTU21D Humidity and Temperature sensor. |
hwing91 | 0:a9b5d6b21f96 | 21 | * |
hwing91 | 0:a9b5d6b21f96 | 22 | * Datasheet, specs, and information: |
hwing91 | 0:a9b5d6b21f96 | 23 | * |
hwing91 | 0:a9b5d6b21f96 | 24 | * https://www.sparkfun.com/products/12064 |
hwing91 | 0:a9b5d6b21f96 | 25 | */ |
hwing91 | 0:a9b5d6b21f96 | 26 | |
hwing91 | 0:a9b5d6b21f96 | 27 | |
hwing91 | 0:a9b5d6b21f96 | 28 | #include "mbed.h" |
hwing91 | 0:a9b5d6b21f96 | 29 | #include "uLCD_4DGL.h" |
hwing91 | 0:a9b5d6b21f96 | 30 | #include "rtos.h" |
hwing91 | 0:a9b5d6b21f96 | 31 | #include "HTU21D.h" |
hwing91 | 0:a9b5d6b21f96 | 32 | |
hwing91 | 0:a9b5d6b21f96 | 33 | |
hwing91 | 0:a9b5d6b21f96 | 34 | Semaphore four_slots(1); //Activate semaphore |
hwing91 | 0:a9b5d6b21f96 | 35 | |
hwing91 | 0:a9b5d6b21f96 | 36 | uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin; |
hwing91 | 0:a9b5d6b21f96 | 37 | HTU21D temphumid(p9, p10); // Temp Module || sda, SCL |
hwing91 | 0:a9b5d6b21f96 | 38 | |
hwing91 | 0:a9b5d6b21f96 | 39 | void sample_humidity(void const *args) { //line 2 |
hwing91 | 0:a9b5d6b21f96 | 40 | while(true){ |
hwing91 | 0:a9b5d6b21f96 | 41 | |
hwing91 | 0:a9b5d6b21f96 | 42 | four_slots.wait(); |
hwing91 | 0:a9b5d6b21f96 | 43 | uLCD.color(0x0000FF); |
hwing91 | 0:a9b5d6b21f96 | 44 | uLCD.locate(1,2); //col,row |
hwing91 | 0:a9b5d6b21f96 | 45 | wait(0.1); |
hwing91 | 0:a9b5d6b21f96 | 46 | uLCD.printf("Humidy Is: %d %%", temphumid.sample_humid()); |
hwing91 | 0:a9b5d6b21f96 | 47 | four_slots.release(); |
hwing91 | 0:a9b5d6b21f96 | 48 | Thread::wait(250); |
hwing91 | 0:a9b5d6b21f96 | 49 | } |
hwing91 | 0:a9b5d6b21f96 | 50 | } |
hwing91 | 0:a9b5d6b21f96 | 51 | |
hwing91 | 0:a9b5d6b21f96 | 52 | |
hwing91 | 0:a9b5d6b21f96 | 53 | void sample_temperature(void const *args) { // line 4 |
hwing91 | 0:a9b5d6b21f96 | 54 | while(true){ |
hwing91 | 0:a9b5d6b21f96 | 55 | four_slots.wait(); |
hwing91 | 0:a9b5d6b21f96 | 56 | uLCD.color(0xFF0000); |
hwing91 | 0:a9b5d6b21f96 | 57 | uLCD.locate(1,4); //col,row |
hwing91 | 0:a9b5d6b21f96 | 58 | wait(0.1); |
hwing91 | 0:a9b5d6b21f96 | 59 | uLCD.printf("Temp Is: %d° C", temphumid.sample_ctemp()); |
hwing91 | 0:a9b5d6b21f96 | 60 | uLCD.color(0xFFFF00); |
hwing91 | 0:a9b5d6b21f96 | 61 | uLCD.locate(1,6); |
hwing91 | 0:a9b5d6b21f96 | 62 | wait(0.1); |
hwing91 | 0:a9b5d6b21f96 | 63 | uLCD.printf("Temp Is: %d° F", temphumid.sample_ftemp()); |
hwing91 | 0:a9b5d6b21f96 | 64 | uLCD.color(0xC0C0C0); |
hwing91 | 0:a9b5d6b21f96 | 65 | uLCD.locate(1,8); |
hwing91 | 0:a9b5d6b21f96 | 66 | wait(0.1); |
hwing91 | 0:a9b5d6b21f96 | 67 | uLCD.printf("Temp Is: %d° k", temphumid.sample_ktemp()); |
hwing91 | 0:a9b5d6b21f96 | 68 | four_slots.release(); |
hwing91 | 0:a9b5d6b21f96 | 69 | Thread::wait(1000); |
hwing91 | 0:a9b5d6b21f96 | 70 | } |
hwing91 | 0:a9b5d6b21f96 | 71 | } |
hwing91 | 0:a9b5d6b21f96 | 72 | |
hwing91 | 0:a9b5d6b21f96 | 73 | |
hwing91 | 0:a9b5d6b21f96 | 74 | int main() { |
hwing91 | 0:a9b5d6b21f96 | 75 | uLCD.baudrate(3000000); |
hwing91 | 0:a9b5d6b21f96 | 76 | Thread t1(sample_humidity); |
hwing91 | 0:a9b5d6b21f96 | 77 | Thread t2(sample_temperature); |
hwing91 | 0:a9b5d6b21f96 | 78 | while(1){ //While so program doesn't end |
hwing91 | 0:a9b5d6b21f96 | 79 | |
hwing91 | 0:a9b5d6b21f96 | 80 | } |
hwing91 | 0:a9b5d6b21f96 | 81 | } |