ha
Dependencies: mbed C12832 LM75B
main.cpp@0:aa600b2b5ffa, 2019-10-27 (annotated)
- Committer:
- cian13
- Date:
- Sun Oct 27 18:53:08 2019 +0000
- Revision:
- 0:aa600b2b5ffa
drhg
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cian13 | 0:aa600b2b5ffa | 1 | #include "mbed.h" |
cian13 | 0:aa600b2b5ffa | 2 | #include <iostream> |
cian13 | 0:aa600b2b5ffa | 3 | #include "LM75B.h" |
cian13 | 0:aa600b2b5ffa | 4 | #include <C12832.h> |
cian13 | 0:aa600b2b5ffa | 5 | |
cian13 | 0:aa600b2b5ffa | 6 | |
cian13 | 0:aa600b2b5ffa | 7 | //TextLCD lcd(p14, p15, p16, p17, p18, p19); |
cian13 | 0:aa600b2b5ffa | 8 | //lcd screen |
cian13 | 0:aa600b2b5ffa | 9 | C12832 lcd(p5, p7, p6, p8, p11); |
cian13 | 0:aa600b2b5ffa | 10 | |
cian13 | 0:aa600b2b5ffa | 11 | //Sensor |
cian13 | 0:aa600b2b5ffa | 12 | LM75B sensor(p28,p27); |
cian13 | 0:aa600b2b5ffa | 13 | |
cian13 | 0:aa600b2b5ffa | 14 | //RGB pins |
cian13 | 0:aa600b2b5ffa | 15 | PwmOut r (p23); |
cian13 | 0:aa600b2b5ffa | 16 | PwmOut g (p24); |
cian13 | 0:aa600b2b5ffa | 17 | PwmOut b (p25); |
cian13 | 0:aa600b2b5ffa | 18 | |
cian13 | 0:aa600b2b5ffa | 19 | //Method for setting the led |
cian13 | 0:aa600b2b5ffa | 20 | void setLED(float red, float green, float blue){ |
cian13 | 0:aa600b2b5ffa | 21 | r = red; |
cian13 | 0:aa600b2b5ffa | 22 | g = green; |
cian13 | 0:aa600b2b5ffa | 23 | b = blue; |
cian13 | 0:aa600b2b5ffa | 24 | } |
cian13 | 0:aa600b2b5ffa | 25 | |
cian13 | 0:aa600b2b5ffa | 26 | //Speaker pin |
cian13 | 0:aa600b2b5ffa | 27 | PwmOut speaker(p26); |
cian13 | 0:aa600b2b5ffa | 28 | |
cian13 | 0:aa600b2b5ffa | 29 | //Potentiometer pins |
cian13 | 0:aa600b2b5ffa | 30 | AnalogIn pot1(p19); |
cian13 | 0:aa600b2b5ffa | 31 | AnalogIn pot2(p20); |
cian13 | 0:aa600b2b5ffa | 32 | |
cian13 | 0:aa600b2b5ffa | 33 | //Tickers |
cian13 | 0:aa600b2b5ffa | 34 | Ticker ledSwitch; |
cian13 | 0:aa600b2b5ffa | 35 | Ticker speakerSwitch; |
cian13 | 0:aa600b2b5ffa | 36 | |
cian13 | 0:aa600b2b5ffa | 37 | //Ticker methods |
cian13 | 0:aa600b2b5ffa | 38 | void speakerFlip(){ |
cian13 | 0:aa600b2b5ffa | 39 | speaker != speaker; |
cian13 | 0:aa600b2b5ffa | 40 | } |
cian13 | 0:aa600b2b5ffa | 41 | |
cian13 | 0:aa600b2b5ffa | 42 | void ledFlip(){ |
cian13 | 0:aa600b2b5ffa | 43 | setLED(1.0, 1.0, 1.0); |
cian13 | 0:aa600b2b5ffa | 44 | } |
cian13 | 0:aa600b2b5ffa | 45 | |
cian13 | 0:aa600b2b5ffa | 46 | //Temp of room |
cian13 | 0:aa600b2b5ffa | 47 | float currentTemp; |
cian13 | 0:aa600b2b5ffa | 48 | |
cian13 | 0:aa600b2b5ffa | 49 | |
cian13 | 0:aa600b2b5ffa | 50 | //method to convert the pwmout to Celsius |
cian13 | 0:aa600b2b5ffa | 51 | float getTemp(float v){ |
cian13 | 0:aa600b2b5ffa | 52 | float temp = (v * 50); |
cian13 | 0:aa600b2b5ffa | 53 | return temp; |
cian13 | 0:aa600b2b5ffa | 54 | } |
cian13 | 0:aa600b2b5ffa | 55 | |
cian13 | 0:aa600b2b5ffa | 56 | //Setting the reading from potentiometer 1 to the threshold |
cian13 | 0:aa600b2b5ffa | 57 | float threshold1(){ |
cian13 | 0:aa600b2b5ffa | 58 | return getTemp(float(pot1.read())); |
cian13 | 0:aa600b2b5ffa | 59 | } |
cian13 | 0:aa600b2b5ffa | 60 | |
cian13 | 0:aa600b2b5ffa | 61 | ///Setting the reading from potentiometer 2 to the threshold |
cian13 | 0:aa600b2b5ffa | 62 | float threshold2(){ |
cian13 | 0:aa600b2b5ffa | 63 | return getTemp(float(pot2.read())); |
cian13 | 0:aa600b2b5ffa | 64 | } |
cian13 | 0:aa600b2b5ffa | 65 | |
cian13 | 0:aa600b2b5ffa | 66 | |
cian13 | 0:aa600b2b5ffa | 67 | //Attempt at the faster beep as it approaches the second threshold |
cian13 | 0:aa600b2b5ffa | 68 | void beepRate(float current, float trehs2){ |
cian13 | 0:aa600b2b5ffa | 69 | float multiplier; |
cian13 | 0:aa600b2b5ffa | 70 | } |
cian13 | 0:aa600b2b5ffa | 71 | |
cian13 | 0:aa600b2b5ffa | 72 | //Flashes orange at the rate specified |
cian13 | 0:aa600b2b5ffa | 73 | void orangeFlash(){ |
cian13 | 0:aa600b2b5ffa | 74 | for(int i = 0; i < 2; i++){ |
cian13 | 0:aa600b2b5ffa | 75 | setLED(0, .64, 1); |
cian13 | 0:aa600b2b5ffa | 76 | speaker.period(1.0/5000); |
cian13 | 0:aa600b2b5ffa | 77 | speaker = 0.5; |
cian13 | 0:aa600b2b5ffa | 78 | wait(.25); |
cian13 | 0:aa600b2b5ffa | 79 | setLED(1, 1, 1); |
cian13 | 0:aa600b2b5ffa | 80 | speaker = 1; |
cian13 | 0:aa600b2b5ffa | 81 | wait(.25); |
cian13 | 0:aa600b2b5ffa | 82 | } |
cian13 | 0:aa600b2b5ffa | 83 | } |
cian13 | 0:aa600b2b5ffa | 84 | |
cian13 | 0:aa600b2b5ffa | 85 | //Method to display the LCD |
cian13 | 0:aa600b2b5ffa | 86 | void display(){ |
cian13 | 0:aa600b2b5ffa | 87 | lcd.cls(); |
cian13 | 0:aa600b2b5ffa | 88 | lcd.locate(0, 3); |
cian13 | 0:aa600b2b5ffa | 89 | currentTemp = sensor.temp(); |
cian13 | 0:aa600b2b5ffa | 90 | lcd.printf("CurrentTemp = %.3f\n" , currentTemp); |
cian13 | 0:aa600b2b5ffa | 91 | lcd.printf("Threshold 1: %.3f\n", getTemp(float(pot1.read()))); |
cian13 | 0:aa600b2b5ffa | 92 | lcd.printf("Threshold 2: %.3f\n", getTemp(float(pot2.read()))); |
cian13 | 0:aa600b2b5ffa | 93 | } |
cian13 | 0:aa600b2b5ffa | 94 | |
cian13 | 0:aa600b2b5ffa | 95 | int main() { |
cian13 | 0:aa600b2b5ffa | 96 | //Ticker attaches |
cian13 | 0:aa600b2b5ffa | 97 | //ledSwitch.attach(ledFlip, 2); |
cian13 | 0:aa600b2b5ffa | 98 | //speakerSwitch.attach(speakerFlip, 1); |
cian13 | 0:aa600b2b5ffa | 99 | |
cian13 | 0:aa600b2b5ffa | 100 | while(1){ |
cian13 | 0:aa600b2b5ffa | 101 | display(); |
cian13 | 0:aa600b2b5ffa | 102 | //Green state if statement |
cian13 | 0:aa600b2b5ffa | 103 | if(currentTemp < threshold1()){ |
cian13 | 0:aa600b2b5ffa | 104 | setLED(1, 0, 1); |
cian13 | 0:aa600b2b5ffa | 105 | wait(1); |
cian13 | 0:aa600b2b5ffa | 106 | } |
cian13 | 0:aa600b2b5ffa | 107 | |
cian13 | 0:aa600b2b5ffa | 108 | //Orange state if statement |
cian13 | 0:aa600b2b5ffa | 109 | if(currentTemp > threshold1() && currentTemp < threshold2()){ |
cian13 | 0:aa600b2b5ffa | 110 | display(); |
cian13 | 0:aa600b2b5ffa | 111 | orangeFlash(); |
cian13 | 0:aa600b2b5ffa | 112 | } |
cian13 | 0:aa600b2b5ffa | 113 | |
cian13 | 0:aa600b2b5ffa | 114 | //Red state if statement |
cian13 | 0:aa600b2b5ffa | 115 | if(currentTemp > threshold2()){ |
cian13 | 0:aa600b2b5ffa | 116 | display(); |
cian13 | 0:aa600b2b5ffa | 117 | setLED(0, 1, 1); |
cian13 | 0:aa600b2b5ffa | 118 | speaker.period(1.0/2000); |
cian13 | 0:aa600b2b5ffa | 119 | speaker = 0.5; |
cian13 | 0:aa600b2b5ffa | 120 | wait(1); |
cian13 | 0:aa600b2b5ffa | 121 | setLED(1, 1, 1); |
cian13 | 0:aa600b2b5ffa | 122 | speaker = 1; |
cian13 | 0:aa600b2b5ffa | 123 | wait(1); |
cian13 | 0:aa600b2b5ffa | 124 | } |
cian13 | 0:aa600b2b5ffa | 125 | } |
cian13 | 0:aa600b2b5ffa | 126 | } |