Mbed Colombia Meetup
/
MBC004-Ticker
MBC004 - Ticker This example use the BusOut function with a 7-Segment Display
main.cpp
- Committer:
- leandropg
- Date:
- 2018-07-12
- Revision:
- 0:317ba4466741
File content as of revision 0:317ba4466741:
/** * MBC004 - Ticker * This example use the BusOut function with a 7-Segment Display * 12 Jul 2018 - Mbed Colombia - http://mbedcolombia.wordpress.com/ * * Board: ST-Nucleo-F446RE - https://os.mbed.com/platforms/ST-Nucleo-F446RE/ * * Copyright [2018] [Leandro Perez Guatibonza / leandropg AT gmail DOT com] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "mbed.h" // Define GPIO Pins 7-Segment Display // PA_10 --> A // PB_3 --> B // PB_5 --> C // PB_4 --> D // PB_10 --> E // PA_8 --> F // PA_9 --> G BusOut display7Seg(PA_9, PA_8, PB_10, PB_4, PB_5, PB_3, PA_10); // Anode Display 1 DigitalOut display1(PC_7); // Anode Display 2 DigitalOut display2(PB_6); // Variables Counter int tens; int units; // Define Logic Anode Comun Display // ABCDEFG int anodeComun[16] = { 0b0000001, // 0 0b1001111, // 1 0b0010010, // 2 0b0000110, // 3 0b1001100, // 4 0b0100100, // 5 0b0100000, // 6 0b0001111, // 7 0b0000000, // 8 0b0001100, // 9 0b0001000, // A 0b1100000, // B 0b1110010, // C 0b1000010, // D 0b0110000, // E 0b0111000 }; // F // Change Display Selected void changeDisplaySelected() { // Check Display Selected if(display1) { // Turn Off Display 1 display1 = 0; // Export data to Bus display7Seg = anodeComun[units]; // Turn On Display 2 display2 = 1; } else { // Turn Off Display 2 display2 = 0; // Export data to Bus display7Seg = anodeComun[tens]; // Turn On Display 1 display1 = 1; } } // Main Loop runs in its own thread in the OS int main() { Ticker changeDisplay; // Configure Change Display Selected each 10 ms changeDisplay.attach(&changeDisplaySelected, 0.010); // Inifite Loop while(1) { // Iterate between 0 and 99 for(int i = 0; i < 100; i++) { // Calculate Tens and Units tens = i / 10; units = i % 10; // Wait 150 millisecond wait_ms(150); } } }