RoboCup Base Station

Dependencies:   mbed mbed-rtos Wireless Drivers

Committer:
jjones646
Date:
Wed Dec 31 02:45:31 2014 +0000
Revision:
0:a606cf2249ad
Child:
1:e5373c63f642
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jjones646 0:a606cf2249ad 1 // Cycle through a 7-segment LCD display
jjones646 0:a606cf2249ad 2
jjones646 0:a606cf2249ad 3 #include "mbed.h"
jjones646 0:a606cf2249ad 4
jjones646 0:a606cf2249ad 5 // Outputs used as input values to the 7-segment binary decoder
jjones646 0:a606cf2249ad 6 DigitalOut signal[4] = {p17, p18, p19, p20};
jjones646 0:a606cf2249ad 7
jjones646 0:a606cf2249ad 8 // For latching the 7 segment led's output
jjones646 0:a606cf2249ad 9 DigitalOut latch(p16);
jjones646 0:a606cf2249ad 10
jjones646 0:a606cf2249ad 11 // To show that the mbed is running
jjones646 0:a606cf2249ad 12 DigitalOut status_led(LED1);
jjones646 0:a606cf2249ad 13
jjones646 0:a606cf2249ad 14 // Function for writing a number to the 7-segment display
jjones646 0:a606cf2249ad 15 void writeSegment(uint8_t val)
jjones646 0:a606cf2249ad 16 {
jjones646 0:a606cf2249ad 17 // write out the new value
jjones646 0:a606cf2249ad 18 for (int i=0; i<4; i++)
jjones646 0:a606cf2249ad 19 signal[i] = ((1<<i) & (val)) & 0x0F;
jjones646 0:a606cf2249ad 20
jjones646 0:a606cf2249ad 21 // latch the value
jjones646 0:a606cf2249ad 22 for (int i=0; i<2; i++)
jjones646 0:a606cf2249ad 23 latch = !latch;
jjones646 0:a606cf2249ad 24 }
jjones646 0:a606cf2249ad 25
jjones646 0:a606cf2249ad 26 int main()
jjones646 0:a606cf2249ad 27 {
jjones646 0:a606cf2249ad 28 latch = 0; // initialize the latch pin for the CD4511B decoder
jjones646 0:a606cf2249ad 29 status_led = 0; // initialize & turn off led for startup operations
jjones646 0:a606cf2249ad 30
jjones646 0:a606cf2249ad 31 uint8_t channel; // limit to 4 bits (0x00 to 0x0F)
jjones646 0:a606cf2249ad 32 channel = 8; // light up all of the 7-segment's segments at startup - allows for the user to detect if there's a problem
jjones646 0:a606cf2249ad 33 writeSegment(channel);
jjones646 0:a606cf2249ad 34 wait(1.0); // wait 2 seconds to ensure user sees the startup operation
jjones646 0:a606cf2249ad 35
jjones646 0:a606cf2249ad 36 channel = 0; // start back over at 0
jjones646 0:a606cf2249ad 37
jjones646 0:a606cf2249ad 38 while(1) {
jjones646 0:a606cf2249ad 39 // send numerical value to 7-segment & hold for a while
jjones646 0:a606cf2249ad 40 writeSegment(channel++);
jjones646 0:a606cf2249ad 41 wait(0.3);
jjones646 0:a606cf2249ad 42 status_led = !status_led;
jjones646 0:a606cf2249ad 43
jjones646 0:a606cf2249ad 44 // wait again just so that the status led and segment are out of sync
jjones646 0:a606cf2249ad 45 wait(0.2);
jjones646 0:a606cf2249ad 46
jjones646 0:a606cf2249ad 47 // reset value if too high
jjones646 0:a606cf2249ad 48 channel = channel > 9 ? 0 : channel;
jjones646 0:a606cf2249ad 49 }
jjones646 0:a606cf2249ad 50 }