Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- struct display {
- uint8_t data_pin;
- uint8_t lacth_pin;
- uint8_t clock_pin;
- uint8_t indicators_num;
- uint8_t first_cathode_pin;
- uint8_t* indicator_state;
- };
- struct display display_create(uint8_t data_pin, uint8_t lacth_pin, uint8_t clock_pin, uint8_t indicators_num, uint8_t first_cathode_pin) {
- uint8_t* indicator_state = malloc( sizeof(uint8_t) * indicators_num );
- struct display main_display = {data_pin, lacth_pin, clock_pin, indicators_num, first_cathode_pin, indicator_state};
- for(uint8_t i = 0; i < indicators_num; i++) {
- main_display.indicator_state[i] = 0;
- }
- return main_display;
- }
- void show_number(struct display* main_display, int number ) {
- for(uint8_t i = 0; i < main_display -> indicators_num; i++) {
- main_display -> indicator_state[i] = number % 10;
- digitalWrite(main_display -> latchPin, LOW);
- shiftOut( main_display -> data_pin, main_display -> clock_pin, LSBFIRST, main_display -> indicator_state[i] );
- digitalWrite(main_display -> latchPin, HIGH);
- number /= 10;
- }
- }
- int main() {
- struct display main_display = display_create(2,3,4,4,5);
- int number = 13;
- show_number(&main_display, number);
- }
Advertisement
Add Comment
Please, Sign In to add comment