IT Tralee_Brian Moloney_Final Project

Dependencies:   mbed C12832

Committer:
bmol
Date:
Tue Aug 18 13:12:15 2020 +0000
Revision:
0:edb9a7b809a2
IT Tralee

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bmol 0:edb9a7b809a2 1 #include "mbed.h"
bmol 0:edb9a7b809a2 2 #include "C12832.h"
bmol 0:edb9a7b809a2 3
bmol 0:edb9a7b809a2 4 C12832 lcd(p5, p7, p6, p8, p11);//Lcd and connections
bmol 0:edb9a7b809a2 5
bmol 0:edb9a7b809a2 6 InterruptIn joystickcenter(p14);//Pushbutton on center of joystick
bmol 0:edb9a7b809a2 7 Timer debounce; // define debounce timer
bmol 0:edb9a7b809a2 8
bmol 0:edb9a7b809a2 9 AnalogIn pot1(p19); // Pot 1-Program setpoint.Tank level setpoint
bmol 0:edb9a7b809a2 10 AnalogIn pot2(p20); // Pot 2-Program variable.Simulate output flow from tank. Process variable (PV)
bmol 0:edb9a7b809a2 11
bmol 0:edb9a7b809a2 12 DigitalOut led(LED1);
bmol 0:edb9a7b809a2 13 DigitalOut led4(LED4);
bmol 0:edb9a7b809a2 14
bmol 0:edb9a7b809a2 15 PwmOut red(p23); //RGB LED with 3 PWM outputs for dimmer control
bmol 0:edb9a7b809a2 16 PwmOut green(p24);//Green Led- Status OK
bmol 0:edb9a7b809a2 17 PwmOut blue(p25);//Red Led- Alarm Condition
bmol 0:edb9a7b809a2 18 PwmOut speaker(p26); //Onboard Speaker- Audible alarm
bmol 0:edb9a7b809a2 19
bmol 0:edb9a7b809a2 20 Serial pc(USBTX,USBRX); // Printf to PC over USB
bmol 0:edb9a7b809a2 21
bmol 0:edb9a7b809a2 22 void flip()
bmol 0:edb9a7b809a2 23 {
bmol 0:edb9a7b809a2 24
bmol 0:edb9a7b809a2 25 if (debounce.read_ms()>200) { // only allow toggle if debounce timer has passed 200ms
bmol 0:edb9a7b809a2 26 led4 =!led4;// Invert Led4
bmol 0:edb9a7b809a2 27 debounce.reset(); // restart timer when
bmol 0:edb9a7b809a2 28 wait(0.5);//pause before moving on in program
bmol 0:edb9a7b809a2 29 }
bmol 0:edb9a7b809a2 30
bmol 0:edb9a7b809a2 31 }
bmol 0:edb9a7b809a2 32
bmol 0:edb9a7b809a2 33 int main ()
bmol 0:edb9a7b809a2 34 {
bmol 0:edb9a7b809a2 35 float pv ;
bmol 0:edb9a7b809a2 36 float setpoint;
bmol 0:edb9a7b809a2 37
bmol 0:edb9a7b809a2 38 joystickcenter.rise(&flip); // attach the function address to the rising edge
bmol 0:edb9a7b809a2 39
bmol 0:edb9a7b809a2 40 speaker.period(1.0/1000.0); // 1000hz period
bmol 0:edb9a7b809a2 41 red=1.0; //RGB LED off - PWM 100% duty cycle
bmol 0:edb9a7b809a2 42 green=1.0;
bmol 0:edb9a7b809a2 43 blue=1.0;//Not used in project
bmol 0:edb9a7b809a2 44
bmol 0:edb9a7b809a2 45
bmol 0:edb9a7b809a2 46 while (1) {//continuous loop
bmol 0:edb9a7b809a2 47
bmol 0:edb9a7b809a2 48 lcd.cls();//clears LCD
bmol 0:edb9a7b809a2 49 lcd.locate(0,0); // Lcd coordinates
bmol 0:edb9a7b809a2 50 pv = pot2;//read simulated output flow
bmol 0:edb9a7b809a2 51 pv = 100.0 * pot2; // Tank level simulated value in %
bmol 0:edb9a7b809a2 52 lcd.printf("Tank Level = %.1f\n\r",pv);
bmol 0:edb9a7b809a2 53 setpoint = pot1;// Level simulated setpoint
bmol 0:edb9a7b809a2 54 setpoint = 100.0 * pot1; // Tank level setpoint in %
bmol 0:edb9a7b809a2 55 lcd.printf("Setpoint = %.1f\n\r",setpoint);
bmol 0:edb9a7b809a2 56 debounce.start();//Start of the debounce timer
bmol 0:edb9a7b809a2 57
bmol 0:edb9a7b809a2 58 //Serial interface
bmol 0:edb9a7b809a2 59 pc.printf("Tank Level = %.1f\n\r",pv); //send tank level to PC
bmol 0:edb9a7b809a2 60 pc.printf(" Level setpoint = %.1f\n\r",setpoint); //send setpoint to PC with spacing for clarity
bmol 0:edb9a7b809a2 61 wait(0.5);//pause before moving on in program
bmol 0:edb9a7b809a2 62
bmol 0:edb9a7b809a2 63 if(pv <= setpoint) { // Determines action of inputs pot1 and pot2
bmol 0:edb9a7b809a2 64 red = 1.0 - pot2; //RGB LED red
bmol 0:edb9a7b809a2 65 green = 1.0;
bmol 0:edb9a7b809a2 66 led=1.0;
bmol 0:edb9a7b809a2 67 speaker = 0.5; //alarm tone using Pwm
bmol 0:edb9a7b809a2 68 pc.printf(" Alarm!! Tank Level Low....Top-up valve open\n"); //send setpoint to PC
bmol 0:edb9a7b809a2 69 wait(0.5);
bmol 0:edb9a7b809a2 70
bmol 0:edb9a7b809a2 71 } else {
bmol 0:edb9a7b809a2 72 green = 1.0 - pot2; //RGB LED green
bmol 0:edb9a7b809a2 73 red = 1.0;
bmol 0:edb9a7b809a2 74 led=0.0;
bmol 0:edb9a7b809a2 75 speaker = 0.0;
bmol 0:edb9a7b809a2 76 wait(0.5);
bmol 0:edb9a7b809a2 77 }
bmol 0:edb9a7b809a2 78 if (led4) {
bmol 0:edb9a7b809a2 79 pc.printf("................. Outlet valve open\n\r");
bmol 0:edb9a7b809a2 80 wait(0.5);
bmol 0:edb9a7b809a2 81 } else {
bmol 0:edb9a7b809a2 82 pc.printf("**\n\r");// No alarm
bmol 0:edb9a7b809a2 83 wait(0.5);
bmol 0:edb9a7b809a2 84 }
bmol 0:edb9a7b809a2 85
bmol 0:edb9a7b809a2 86 }
bmol 0:edb9a7b809a2 87
bmol 0:edb9a7b809a2 88 }