Improved version of my binary counter. Uses a while loop for greater flexibility (relative to original for loop version).

Committer:
CSTritt
Date:
Tue Oct 05 13:18:23 2021 +0000
Revision:
110:e80444a6fe3a
Parent:
109:86a37f0a397f
Cleaned up comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CSTritt 107:61b9c99a4e27 1 /*
CSTritt 110:e80444a6fe3a 2 Project: 21_BC_Improved_v5 (Improved Binary Counter (while loop) Version)
CSTritt 108:eee3167b25b4 3 File: main.cpp
CSTritt 108:eee3167b25b4 4
CSTritt 109:86a37f0a397f 5 Displays 8-bit binary count on bar graph display. This version uses a while
CSTritt 109:86a37f0a397f 6 loop which provides a much better starting point for an Up/Down counter.
CSTritt 109:86a37f0a397f 7
CSTritt 109:86a37f0a397f 8 Error in pow function use corrected in v. 1.0.
CSTritt 108:eee3167b25b4 9
CSTritt 109:86a37f0a397f 10 Note: I tried to use count for the loop counter but this resulted in an
CSTritt 109:86a37f0a397f 11 ambiguous name error.
CSTritt 109:86a37f0a397f 12
CSTritt 108:eee3167b25b4 13 Written by: Dr. C. S. Tritt
CSTritt 110:e80444a6fe3a 14 Created: 10/5/21 (v. 1.1)
CSTritt 107:61b9c99a4e27 15 */
Jonathan Austin 0:2757d7abb7d9 16 #include "mbed.h"
CSTritt 108:eee3167b25b4 17
CSTritt 109:86a37f0a397f 18 DigitalIn uB(USER_BUTTON); // Button is active low (up = 1, down = 0).
CSTritt 110:e80444a6fe3a 19 const int bits = 8; // Number of bits to use.
CSTritt 109:86a37f0a397f 20 const int c_max = pow(2, bits) - 1; // Maximum count. pow is type double.
CSTritt 109:86a37f0a397f 21 const int sleepTime = 100; // Sleep time in milliseconds.
CSTritt 109:86a37f0a397f 22 int myCount = 0; // Count to be displayed. Loop counter.
CSTritt 109:86a37f0a397f 23 BusOut barGraph(D2, D3, D4, D5, D6, D7, D8, D9); // The display.
CSTritt 108:eee3167b25b4 24
CSTritt 108:eee3167b25b4 25 int main() {
CSTritt 108:eee3167b25b4 26 // Test the wiring.
CSTritt 108:eee3167b25b4 27 ThisThread::sleep_for(400); // For 0.4 seconds.
CSTritt 108:eee3167b25b4 28 barGraph = 0b01010101; // Odd bars on (binary).
CSTritt 108:eee3167b25b4 29 ThisThread::sleep_for(400); // Test even bars for 0.4 seconds.
CSTritt 108:eee3167b25b4 30 barGraph = 0b10101010; // Even bars on (binary).
CSTritt 108:eee3167b25b4 31 ThisThread::sleep_for(400); // Test even bars for 0.4 seconds.
CSTritt 108:eee3167b25b4 32 barGraph = 0xFF; // All bars on. Hex.
CSTritt 109:86a37f0a397f 33 ThisThread::sleep_for(400); // For 0.4 seconds.
CSTritt 109:86a37f0a397f 34
CSTritt 109:86a37f0a397f 35 barGraph = myCount; // Initialize the display to myCount.
CSTritt 109:86a37f0a397f 36 // Enter main loop.
CSTritt 108:eee3167b25b4 37 while(true) {
CSTritt 109:86a37f0a397f 38 while (myCount >= 0 && myCount <= c_max) {
CSTritt 109:86a37f0a397f 39 barGraph = myCount; // Set display to myCount.
CSTritt 109:86a37f0a397f 40 ThisThread::sleep_for(sleepTime); // Display value for 0.1 seconds.
CSTritt 109:86a37f0a397f 41 myCount++;
CSTritt 108:eee3167b25b4 42 }
CSTritt 109:86a37f0a397f 43 myCount = 0;
CSTritt 108:eee3167b25b4 44 }
CSTritt 108:eee3167b25b4 45 }