Connect pin 18 to vout to act as slide button for serial link

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
andrewbw01
Date:
Wed Feb 10 11:17:24 2021 +0000
Commit message:
working serial link, seven segment display

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r fa9255e09139 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 10 11:17:24 2021 +0000
@@ -0,0 +1,133 @@
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);    //create serail comms object
+ 
+BusOut LED_Disp(p7,p11,p9,p8,p5,p6,p10,p12);
+
+//digital inputs
+DigitalIn slide_button(p17);    // set p17 high if buttons controls 7 seg
+DigitalIn slide_putty(p18); 
+ 
+// interrupts in
+InterruptIn button_up(p14);             //assign interrupt to 14 and 15
+InterruptIn button_down(p15);
+ 
+ // digital outputs
+ DigitalOut test_blink(LED1);
+ 
+ // general global variable
+int counter1;                 //global counter value
+ 
+void Increment_up(void);        //ISR to be assigned to button_up interrupt
+void Increment_down(void);      
+void DisplayNumber(int);        //function to display number on seven segment
+ 
+int main()
+{
+    int putty_char;       // charqacter read from putty as integer (ASCII)
+    
+    button_up.rise(&Increment_up);     //attach adress of ISR to interrupt
+    button_down.rise(&Increment_down);
+    
+    counter1 = 0;                    // Initialise global counter variable
+    putty_char = '0';                //initialize local putty character variable
+    DisplayNumber(0);                // on start up the display is 0 
+    
+    while(1)
+    {
+        if(slide_putty == 1)
+        {
+            if(pc.readable()==1)      // check for character on serial port
+            {
+                putty_char = pc.getc();   // read character from putty
+                
+                pc.putc(putty_char);      // echo character back to putty
+                
+                // check if within number range
+                if (putty_char >= '0' && putty_char <= '9')
+                {
+                    test_blink = 1;      // test sequence
+                    wait(0.2);
+                    test_blink = 0;
+                    
+                    DisplayNumber (putty_char-48);    // convert ASKII character to number
+                }
+            }
+        }
+    }
+}
+            
+ 
+// Interrupt function to increment counter
+void Increment_up(void)
+{
+    if(slide_putty)       // Return to main if slide switch is in putty position
+        return;
+    
+    counter1++;    //increment counter
+    
+    if(counter1 <0)   // check for min value
+        counter1 = 0;
+        
+    if(counter1 >9)    //check for max value
+        counter1 = 9;
+        
+    DisplayNumber(counter1);        //display counter1 number on seven segment
+    wait(0.3);                         //debounce timer
+    
+}
+ 
+void Increment_down(void)
+{
+    if(slide_putty)
+        return;
+    
+    counter1--;
+    
+    if(counter1 <0)   
+        counter1 = 0;
+        
+    if(counter1 >9)    
+        counter1 = 9;
+        
+    DisplayNumber(counter1);        
+    wait(0.3); 
+}
+ 
+//funtion to display counter1 on seven segment
+void DisplayNumber(int num)
+{
+    switch(num)
+    {
+        case 0:
+            LED_Disp = ~0x3F;
+            break;
+        case 1:
+            LED_Disp = ~0x06;
+            break;
+        case 2:
+            LED_Disp = ~0x5B;
+            break;
+        case 3:
+            LED_Disp = ~0x4F;
+            break;
+        case 4:
+            LED_Disp = ~0x66;
+            break;
+        case 5:
+            LED_Disp = ~0x6D;
+            break;
+        case 6:
+            LED_Disp = ~0x7D;
+            break; 
+        case 7:
+            LED_Disp = ~0x07;
+            break;
+        case 8:
+            LED_Disp = ~0x7F;
+            break;
+        case 9:
+            LED_Disp = ~0x67;
+            break; 
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r fa9255e09139 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Feb 10 11:17:24 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file