Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 0:bbe54468c896
- Child:
- 1:d6cbfa3636c7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat May 24 12:20:47 2014 +0000
@@ -0,0 +1,79 @@
+/**************************************************************************
+* *
+* This example builds on 01_Simple_Segments by introducing an example *
+* of how brightness might be achieved. *
+* *
+* In this case the right hand LED is displayed dimmer than the left. *
+* With more logic it would be possible to adjust te brightness of *
+* individual segments within the display. *
+* *
+**************************************************************************/
+
+#include "mbed.h"
+
+uint8_t left = 0;
+uint8_t right = 1;
+
+uint8_t brightness = 100;
+
+//The 8 segment outputs and com to switch between the LEDs
+DigitalOut seg_a(P1_23), seg_b(P1_28), seg_c(P0_16), seg_d(P1_31), seg_e(P1_13), seg_f(P1_16), seg_g(P1_19), seg_p(P0_23), com(P1_25);
+
+/******************************************************
+* Set each of the segments for a desired LED *
+******************************************************/
+void SetSegments(uint8_t led, uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f, uint8_t g, uint8_t p)
+{
+ //Set left LED
+ com = left;
+
+ //Switch off all segments (1 means off!)
+ seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = seg_p = 1;
+
+ //Set desired LED to update
+ com = led;
+
+ //Switch on the desired segments a number of times based on the brightness required
+ for(uint8_t i = 0; i < brightness; i++)
+ {
+ seg_a = 1 - a; //setting a segment to 1 means off
+ seg_b = 1 - b; //so invert all requested segment values
+ seg_c = 1 - c;
+ seg_d = 1 - d;
+ seg_e = 1 - e;
+ seg_f = 1 - f;
+ seg_g = 1 - g;
+ seg_p = 1 - p;
+ }
+
+ //Switch off all the segments a remaining number of times to reach 100 updates
+ for(uint8_t i = 0; i < 100 - brightness; i++)
+ {
+ seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = seg_p = 1;
+ }
+
+ //Finally switch off all segments again, we must do this otherwise when
+ //switching com the segments could be momentarily duplicated from this led.
+ seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = seg_p = 1;
+
+}
+
+/******************************************************
+* Main loop repeatedly updates each of the LEDs *
+******************************************************/
+int main()
+{
+ for(;;)
+ {
+ //Set the display to read '42'
+
+ //The 4 will be displayed at full brightness
+ brightness = 100;
+ SetSegments(left, 0,1,1,0,0,1,1,0); //4
+
+ //The 2 will be displayed much more faintly
+ brightness = 5;
+ SetSegments(right, 1,1,0,1,1,0,1,0); //2
+ }
+}
+