ECE 4180 Lab 04 - Jung Hun Kim

Dependencies:   mbed

Revision:
0:f8d011978c8d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Oct 21 17:19:40 2014 +0000
@@ -0,0 +1,447 @@
+#include "mbed.h"
+#include "uLCD_4DGL.h"
+#include <iostream>
+#include <math.h>
+#include <cmath>
+#include <string>
+#include <cstring>
+#include <list>
+#include <vector>
+#include <mpr121.h>
+Serial pc(USBTX, USBRX);
+using namespace std;
+//
+uLCD_4DGL uLCD(p13, p14, p11);
+InterruptIn interrupt(p26);
+InterruptIn interrupt2(p25);
+I2C i2c(p9, p10);
+I2C i2c2(p28, p27);
+//
+Mpr121 numpad(&i2c, Mpr121::ADD_VSS);
+Mpr121 operpad(&i2c2, Mpr121::ADD_VSS);
+
+int fallInterrupt() 
+{
+     int num = numpad.read(0x00);
+     num +=numpad.read(0x01)<<8;
+     int i=0;
+     i = 0;
+     for (i=0; i<12; i++) {
+        if (num & (1<<i))
+        break;
+     }
+     if(i == 0) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+     }
+     else if (i == 1) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+     }
+     else if (i == 2) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 3) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 4) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 5) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 6) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 7) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 8) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 9) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("%d", i);
+         }
+     else if (i == 10) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf(".");
+         }
+     else if (i == 11) {
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.color(BLUE);
+        uLCD.printf("-");
+         }
+//        pc.printf("%d", i);
+    return i;
+}
+
+int fallInterrupt2() 
+{
+     int num = operpad.read(0x00);
+     num +=operpad.read(0x01)<<8;
+     int i =0;
+     i = 0;
+     for (i=0; i<12; i++) {
+        if (num & (1<<i))
+        break;
+     }
+     if(i == 1) {
+        uLCD.printf("+");
+     }
+     else if (i == 2) {
+        uLCD.printf("-");
+     }
+     else if (i == 3) {
+         uLCD.printf("*");
+         }
+     else if (i == 4) {
+         uLCD.printf("/");
+    }
+//    else if (i == 4) {
+//         uLCD.printf("/");
+//         }
+     else if (i == 5) {
+         uLCD.color(RED);
+         uLCD.printf("\n=");
+     }
+     else if (i == 6) {
+         uLCD.cls();
+    }
+    return i;
+}
+
+int main() {
+    while (1) {
+//  C;
+//  interrupt2.fall(&fallInterrupt2);
+//  interrupt.fall(&fallInterrupt);
+//  interrupt.mode(PullUp);
+//  interrupt2.mode(PullUp);
+  float temp = 0;
+  float temp1 = 0;
+  int temp2 = 0;
+  float temp3 = 0;
+  int temp4 = 0;
+  float temp5 = 0;
+  int temp6 = 0;
+  int count = 1;
+  int count2 = 1;
+  int count3 = 1;
+  int fans = 10;
+  int fans2 = 10;
+  int fans3 = 10;
+  int negate = 0;
+  while (1) {
+         int oper1 = operpad.read(0x00);
+         oper1 +=operpad.read(0x01)<<8;
+         int num1 = numpad.read(0x00);
+         num1 +=numpad.read(0x01)<<8;
+//         temp2 = fallInterrupt2();
+//         wait(0.1);
+         if (oper1){
+//             wait(0.3);
+            int ope = fallInterrupt2();
+            wait(0.2);
+            if (ope == 0) {
+                uLCD.cls();
+                uLCD.printf("Cleared");
+                wait(0.5);
+                uLCD.cls();
+                count = 1;
+                temp1 = 0;
+                temp2 = 0;
+                fans = 10;
+            }
+            else{
+                temp2 = ope;
+                break;
+             }
+         }
+         else if (num1){
+                int ans = fallInterrupt();
+                wait(0.2);
+                if (ans == 10) {
+                    count = count +1;
+//                    pc.printf("hi I am in ans==10");
+//                    pc.printf("hi count from ans ==10 is %d\n", count);
+                    }
+                else if (ans == 11) {
+                    negate = 1;
+                    }
+                else {
+                    if (count == 2) {
+                        if (negate == 1){
+//                        pc.printf("ans = %d\n", ans);
+//                        pc.printf("count = %d\n", count);
+//                        pc.printf("temp1 before = %0.2f\n", temp1);
+                            temp1 = temp1 *10;
+                            temp1 = (temp1 - ans)/10;
+                            temp1 = temp1;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                             count = count +1;
+                            fans = fans * 10;
+                        }
+                        else{
+                            temp1 = temp1 *10;
+                            temp1 = (temp1 + ans)/10;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                            count = count +1;
+                            fans = fans * 10;
+                        }
+                    }
+//                        wait(0.3);
+                    else if (count > 2) {
+                        if (negate == 1){
+                            temp1 = temp1 * fans;
+                            temp1 = temp1 - ans;
+//                        pc.printf("ans = %d\n", ans);
+                            temp1 = temp1/fans;
+                            temp1 = temp1;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                            fans = fans * 10;
+                        }
+                        else{
+                            temp1 = temp1 * fans;
+                            temp1 = temp1 + ans;
+//                        pc.printf("ans = %d\n", ans);
+                            temp1 = temp1/fans;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                            fans = fans * 10;
+                        }    
+                    }
+                    else if(count==1){
+                        if (negate == 1){
+                            temp1 = temp1 * 10;
+                            temp1 = temp1 - ans;
+                            temp1 = temp1;
+                        pc.printf("temp1 = %d\n", temp1);
+                        pc.printf("count = %d\n", count);
+                        }
+                        else {
+                            temp1 = temp1 * 10;
+                            temp1 = temp1 + ans;
+                        }
+                   }
+//                    wait(0.3);
+                }
+        wait(0.2);
+        }
+    }
+    while (1) {
+         int oper2 = operpad.read(0x00);
+         oper2 +=operpad.read(0x01)<<8;
+         int num2 = numpad.read(0x00);
+         num2 +=numpad.read(0x01)<<8;
+//         temp4 = fallInterrupt2();
+//         wait(0.1);
+         if (oper2){
+//             wait(0.3);
+            int ope = fallInterrupt2();
+            wait(0.2);
+            if (ope == 0) {
+                uLCD.cls();
+                uLCD.printf("Cleared");
+                wait(0.5);
+                uLCD.cls();
+                count2 = 1;
+                temp3 = 0;
+                temp4 = 0;
+                fans2 = 10;
+            }
+            else{
+                temp4 = ope;
+                break;
+             }
+         }
+         else if (num2){
+                int ans = fallInterrupt();
+                wait(0.2);
+                if (ans == 10) {
+                    count2 = count2 +1;
+//                    pc.printf("hi I am in ans==10");
+//                    pc.printf("hi count from ans ==10 is %d\n", count);
+                    }
+                else {
+                    if (count2 == 2) {
+//                        pc.printf("ans = %d\n", ans);
+//                        pc.printf("count = %d\n", count2);
+//                        pc.printf("temp1 before = %0.2f\n", temp3);
+                        temp3 = temp3 *10;
+                        temp3 = (temp3+ans)/10;
+//                        pc.printf("temp1 after = %0.2f\n", temp3);
+                        count2 = count2 +1;
+                        fans2 = fans2 * 10;
+                        }
+//                        wait(0.3);
+                    else if (count2 > 2) {
+                        temp3 = temp3 * fans2;
+                        temp3 = temp3 + ans;
+//                        pc.printf("ans = %d\n", ans);
+                        temp3 = temp3/fans2;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                        fans2 = fans2 * 10;
+                        }
+                    else if(count2==1){
+                        temp3 = temp3 * 10;
+                        temp3 = temp3 + ans;
+//                        pc.printf("temp1 = %d\n", temp1);
+//                        pc.printf("count = %d\n", count);
+                        }
+                    }
+//                    wait(0.3);
+                }
+        wait(0.2);
+       }
+    while (1) {
+        int oper3 = operpad.read(0x00);
+         oper3 +=operpad.read(0x01)<<8;
+         int num3 = numpad.read(0x00);
+         num3 +=numpad.read(0x01)<<8;
+//         temp6 = fallInterrupt2();
+//         wait(0.1);
+         if (oper3){
+//             wait(0.3);
+            int ope = fallInterrupt2();
+            wait(0.2);
+            if (ope == 0) {
+                uLCD.cls();
+                uLCD.printf("Cleared");
+                wait(0.5);
+                uLCD.cls();
+                count3 = 1;
+                temp5 = 0;
+                temp6 = 0;
+                fans3 = 10;
+            }
+            else{
+                temp6 = ope;
+                break;
+             }
+         }
+         else if (num3){
+                int ans = fallInterrupt();
+                wait(0.2);
+                if (ans == 10) {
+                    count3 = count3 +1;
+//                    pc.printf("hi I am in ans==10");
+//                    pc.printf("hi count from ans ==10 is %d\n", count);
+                    }
+                else {
+                    if (count3 == 2) {
+//                        pc.printf("ans = %d\n", ans);
+//                        pc.printf("count = %d\n", count3);
+//                        pc.printf("temp1 before = %0.2f\n", temp5);
+                        temp5 = temp5 *10;
+                        temp5 = (temp5+ans)/10;
+//                        pc.printf("temp1 after = %0.2f\n", temp5);
+                        count3 = count3 +1;
+                        }
+//                        wait(0.3);
+                    else if (count3 > 2) {
+                        temp5 = temp5 * fans3;
+                        temp5 = temp5 + ans;
+//                        pc.printf("ans = %d\n", ans);
+                        temp5 = temp5/fans3;
+//                        pc.printf("temp1 after = %0.2f\n", temp1);
+                        fans3 = fans3 * 10;
+                        }
+                    else if(count3==1){
+                        temp5 = temp5 * 10;
+                        temp5 = temp5 + ans;
+//                        pc.printf("temp1 = %d\n", temp1);
+//                        pc.printf("count = %d\n", count);
+                        }
+                    }
+//                    wait(0.3);
+                }
+        wait(0.2);
+       }
+       if ((temp2 == 1) && (temp4 == 1)){
+                temp = temp1 + temp3 + temp5;
+                pc.printf("temp is %0.2f\n", temp);
+           }
+       else if ((temp2 == 1) && (temp4 == 2)){
+                temp = temp1 + temp3 - temp5;
+           }
+       else if ((temp2 == 1) && (temp4 == 3)){
+                temp = temp1 + (temp3 * temp5);
+           }
+       else if ((temp2 == 1) && (temp4 == 4)){
+                temp = temp1 + (temp3 / temp5);
+           }
+       else if ((temp2 == 2) && (temp4 == 1)){
+                temp = temp1 - temp3 + temp5;
+        }
+       else if ((temp2 == 2) && (temp4 == 2)){
+                temp = temp1 - temp3 - temp5;
+        }
+       else if ((temp2 == 2) && (temp4 == 3)){
+                temp = temp1 - (temp3 * temp5);
+           }
+       else if ((temp2 == 2) && (temp4 == 4)){
+                temp = temp1 - (temp3 / temp5);
+           }
+       else if ((temp2 == 3) && (temp4 == 1)){
+                temp = temp1 * temp3 + temp5;
+        }
+       else if ((temp2 == 3) && (temp4 == 2)){
+                temp = temp1 * temp3 - temp5;
+        }
+       else if ((temp2 == 3) && (temp4 == 3)){
+                temp = temp1 * temp3 * temp5;
+        }
+       else if ((temp2 == 3) && (temp4 == 4)){
+                temp = temp1 * temp3 / temp5;
+        }
+       else if ((temp2 == 4) && (temp4 == 1)){
+                temp = temp1 / temp3 + temp5;
+        }
+       else if ((temp2 == 4) && (temp4 == 2)){
+                temp = temp1 / temp3 - temp5;
+        }
+       else if ((temp2 == 4) && (temp4 == 3)){
+                temp = temp1 / temp3 * temp5;
+        }
+       else if ((temp2 == 4) && (temp4 == 4)){
+                temp = temp1 / temp3 / temp5;
+        }
+        else{
+            uLCD.printf("Error");
+            }
+        
+ uLCD.color(RED);
+ uLCD.printf("%0.2f\n", temp);
+
+  }
+  }   
\ No newline at end of file