v1

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
OJ_2k
Date:
Wed Nov 20 14:34:37 2019 +0000
Parent:
0:84b27625b7d0
Commit message:
v1

Changed in this revision

lab10.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/lab10.cpp	Wed Nov 13 16:42:15 2019 +0000
+++ b/lab10.cpp	Wed Nov 20 14:34:37 2019 +0000
@@ -6,6 +6,22 @@
 char scan4by3keypad(BusIn* col, BusOut* row, const char k[4][3]); //function prototype for the scan4by3keypad function(returns a char) 
 TextLCD lcd(D6, D5, D4, D3, D2, A0); // creates a global object of the TextLCD class called lcd with the pins D6,D5,D4,D3,D2,A0 assigned. These pins correspond to the pins rs, e, d4-d7 on the lcd  
 char usercode[4] = {' ',' ',' ',' '};//creates a global char array that is used to store the entered code. This array is initialized to nothing 
+
+
+char const MGPIOB=0x13;
+char const MOLATB=0x15;     //modified
+char const MIODIRB=0x01;
+char const MGPPUB=0x0D;
+char const MGPIOA=0x12;
+char const MOLATA=0x14;
+char const MIODIRA=0x00;
+char const MGPPUA=0x0C;
+
+char const initWriteByte = 0b01000000;
+char const initReadByte = 0b01000001;
+
+
+
 /************************************************************************************
 Main function:
 Purpose: The purpose of the main function is to determine the usercode entered from the keypad. If the code is correct the function will light the green
@@ -35,15 +51,21 @@
 readtempurature(&temp): A function created by Ben that returns a value of type float representing the temperature. This function accepts the address of the temp pins. 
 *************************************************************************************/
 int main() {
-     AnalogIn temp (A1);//indentifies the pin A1 as an analogin pin named temp
-     BusOut rowpins(D13,D12,D11,D10);//busout for my row pins
+    SPI spi(PC_12,PC_11,PC_10); //mosi, miso, sclk
+    DigitalOut cs(A5);
+    AnalogIn temp (A1);//indentifies the pin A1 as an analogin pin named temp
+    BusOut rowpins(D13,D12,D11,D10);//busout for my row pins
     BusIn columnpins(D9,D8,D7);//busin for my colummn pins
     columnpins.mode(PullDown);//enables the internal pulldown for the column pins
     const char button[4][3]= {{'1','2','3'},
                              {'4','5','6'},
                              {'7','8','9'},
                              {'4','0','#'}};//array which helps determine which button was 
-bool access = false;//boolean variable that will change depending on whether the keycode is correct or incorrect. 
+    bool access = false;//boolean variable that will change depending on whether the keycode is correct or incorrect.
+    
+    spi.format(8,0);            //set spi to transfer 8 bits with SPI MODE 0 (0,0)
+    spi.frequency(1000000);     //set spi clock to 1MHz
+    
     while(access == false)//loops through this code while the access is false (keycode entered is wrong)
     {
         lcd.cls();//clears the LCD display
@@ -87,8 +109,25 @@
     }
     for(;;)//infinite loop
     {
+        float tempurature;
+        float y;//float value that stores the duty-cyle calculated on line 15
+        int bite;
+        tempurature=readtempurature(&temp); //calls the temperature function and stores its return value
+        y = (((0.25*tempurature) + 3)/100); //formula that converts the temperature measured by the thermistor into an equivalent duty-cycle, in order for the servo to display an accurate 1:1 scale, change the constant from 0.3 to 0.05
+        //servo.period(0.02);  // sets the period of the servo PWM to 20 ms as specifed in lesson 7
+        //servo.write(y); //writes the calculated duty-cycle to the servo 
+        bite=((28.333333333333*(y*100))-85);
+        //printf("The tempurature is: %f\n",tempurature);//prints the temperature in celcius to the serial terminal
+        //wait(0.5); //waits for half a second before running the next iteration
+        cs = 0;
+        spi.write(bite); //writes the calculated duty-cycle to the servo
+        printf("Bite = %.2f", bite);
+        wait(0.5);
+        cs = 1;
+        //printf("The tempurature is: %f\n",temperature);//prints the temperature in celcius to the serial terminal
+        //wait(0.5); //waits for half a second before running the next iteration
         lcd.locate(0,1);//moves the cursor to the 0th column of the first row on the LCD
-        lcd.printf("Temp: %.2f",readtempurature(&temp));//prints the value returns by the readtempurature function.(.2f will cutoff the value after the second decimal place.
+        lcd.printf("Temp: %.2f",tempurature);//prints the value returns by the readtempurature function.(.2f will cutoff the value after the second decimal place.
         wait(1.5);//waits 1.5 seconds as to no make the display look all glitchy.
     } 
  }