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.
main.cpp@0:22f635e17330, 2016-01-31 (annotated)
- Committer:
- cpu20
- Date:
- Sun Jan 31 16:45:25 2016 +0000
- Revision:
- 0:22f635e17330
ShotClock program version where the time is send over RS485.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cpu20 | 0:22f635e17330 | 1 | #include "mbed.h" |
cpu20 | 0:22f635e17330 | 2 | |
cpu20 | 0:22f635e17330 | 3 | DigitalOut ShiftClk(PC_13); // klok schuifregister |
cpu20 | 0:22f635e17330 | 4 | DigitalOut ShiftEnable(PC_14); // Enable output schuifregister |
cpu20 | 0:22f635e17330 | 5 | DigitalOut ShiftData(PC_15); // data schuifregister |
cpu20 | 0:22f635e17330 | 6 | DigitalOut Display2(PA_0); // display1 common annode |
cpu20 | 0:22f635e17330 | 7 | DigitalOut Display1(PA_1); // display2 common annode |
cpu20 | 0:22f635e17330 | 8 | DigitalOut RE(PA_5); //Active low RE SP3485EN (data in) |
cpu20 | 0:22f635e17330 | 9 | DigitalOut DE(PA_4); //Active high DE SP3485EN (data out) |
cpu20 | 0:22f635e17330 | 10 | Serial pc(PA_2, PA_3); // TX & RX |
cpu20 | 0:22f635e17330 | 11 | |
cpu20 | 0:22f635e17330 | 12 | int Waarden[12]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x83,0xF8,0x80,0x98,0xFF,0xBF}; // waarden 7 seg 0-9 + clear + -- |
cpu20 | 0:22f635e17330 | 13 | |
cpu20 | 0:22f635e17330 | 14 | int seg = 0; // teller 7segment 1 of 2 |
cpu20 | 0:22f635e17330 | 15 | int klokschuifregister = 0; // klok schuifregister |
cpu20 | 0:22f635e17330 | 16 | int uitlezen = 0; // teller aanzetten output enable schuifregister |
cpu20 | 0:22f635e17330 | 17 | int schuif = 0; // aantal keer schuiven |
cpu20 | 0:22f635e17330 | 18 | |
cpu20 | 0:22f635e17330 | 19 | int seg1 = 0; // waarde segment1 |
cpu20 | 0:22f635e17330 | 20 | int seg2 = 0; // waarde segment2 |
cpu20 | 0:22f635e17330 | 21 | |
cpu20 | 0:22f635e17330 | 22 | char segwaarden[10] = {'0','1','2','3','4','5','6','7','8','9'}; |
cpu20 | 0:22f635e17330 | 23 | |
cpu20 | 0:22f635e17330 | 24 | Timer t; // functie timer |
cpu20 | 0:22f635e17330 | 25 | |
cpu20 | 0:22f635e17330 | 26 | char karakter; // variabele ingelezen karakters |
cpu20 | 0:22f635e17330 | 27 | int plaats = 0; // variabele gebruikt om karakters in een array te plaatsen |
cpu20 | 0:22f635e17330 | 28 | |
cpu20 | 0:22f635e17330 | 29 | char commando [5]; // array die karakters opslaat om vergelijking te maken met commando's |
cpu20 | 0:22f635e17330 | 30 | |
cpu20 | 0:22f635e17330 | 31 | void print(int data1, int data2) { // functie: data uitlezen schuifregister |
cpu20 | 0:22f635e17330 | 32 | |
cpu20 | 0:22f635e17330 | 33 | klokschuifregister = klokschuifregister^1; // klokschuifregister aan-uit |
cpu20 | 0:22f635e17330 | 34 | ShiftClk = klokschuifregister; // klokschuifregister aansturen |
cpu20 | 0:22f635e17330 | 35 | |
cpu20 | 0:22f635e17330 | 36 | if(seg==0){ // display 1 aansturen |
cpu20 | 0:22f635e17330 | 37 | ShiftData = (Waarden[data1] >> (7-schuif)) & 1; // Uit te sturen bit selecteren |
cpu20 | 0:22f635e17330 | 38 | |
cpu20 | 0:22f635e17330 | 39 | if (klokschuifregister == 1){ // Als klok hoog is |
cpu20 | 0:22f635e17330 | 40 | schuif++; // data volgende keer meer schuiven |
cpu20 | 0:22f635e17330 | 41 | uitlezen++; // variabele verhogen om uit te lezen |
cpu20 | 0:22f635e17330 | 42 | } |
cpu20 | 0:22f635e17330 | 43 | |
cpu20 | 0:22f635e17330 | 44 | if (uitlezen == 8){ // na 8 klokpulsen data op de 7seg plaatsen |
cpu20 | 0:22f635e17330 | 45 | Display1 = 0; // display 1 aan |
cpu20 | 0:22f635e17330 | 46 | Display2 = 1; // display 2 uit |
cpu20 | 0:22f635e17330 | 47 | |
cpu20 | 0:22f635e17330 | 48 | ShiftEnable = 1; // enable output schuifregister aanzetten |
cpu20 | 0:22f635e17330 | 49 | uitlezen = 0; // reset variable uitlezen |
cpu20 | 0:22f635e17330 | 50 | schuif = 0; // aantal bits schuiven reset |
cpu20 | 0:22f635e17330 | 51 | seg = 1; // veranderen aansturing 7segment 2de segment |
cpu20 | 0:22f635e17330 | 52 | } |
cpu20 | 0:22f635e17330 | 53 | ShiftEnable = 0; // enable output schuifregister uitzetten |
cpu20 | 0:22f635e17330 | 54 | } |
cpu20 | 0:22f635e17330 | 55 | |
cpu20 | 0:22f635e17330 | 56 | if(seg==1){ // display 2 aansturen |
cpu20 | 0:22f635e17330 | 57 | ShiftData = (Waarden[data2] >> (7-schuif)) & 1; // Uit te sturen bit selecteren |
cpu20 | 0:22f635e17330 | 58 | |
cpu20 | 0:22f635e17330 | 59 | if (klokschuifregister == 1){ // Als klok hoog is |
cpu20 | 0:22f635e17330 | 60 | schuif++; // data volgende keer meer schuiven |
cpu20 | 0:22f635e17330 | 61 | uitlezen++; // variabele verhogen om uit te lezen |
cpu20 | 0:22f635e17330 | 62 | } |
cpu20 | 0:22f635e17330 | 63 | |
cpu20 | 0:22f635e17330 | 64 | if (uitlezen == 8){ // na 8 klokpulsen uitlezen |
cpu20 | 0:22f635e17330 | 65 | Display1 = 1; // display 1 uit |
cpu20 | 0:22f635e17330 | 66 | Display2 = 0; // display 2 aan |
cpu20 | 0:22f635e17330 | 67 | |
cpu20 | 0:22f635e17330 | 68 | ShiftEnable = 1; // enable output schuifregister aanzetten |
cpu20 | 0:22f635e17330 | 69 | uitlezen = 0; // reset variabele uitlezen |
cpu20 | 0:22f635e17330 | 70 | schuif = 0; // aantal bits schuiven reset |
cpu20 | 0:22f635e17330 | 71 | seg = 0; // veranderen aansturen 7segment 1ste segment |
cpu20 | 0:22f635e17330 | 72 | } |
cpu20 | 0:22f635e17330 | 73 | ShiftEnable = 0; // enable output schuifregister uitzetten |
cpu20 | 0:22f635e17330 | 74 | } |
cpu20 | 0:22f635e17330 | 75 | } |
cpu20 | 0:22f635e17330 | 76 | |
cpu20 | 0:22f635e17330 | 77 | void lezen(){ |
cpu20 | 0:22f635e17330 | 78 | print(seg2, seg1); |
cpu20 | 0:22f635e17330 | 79 | if(pc.readable()){ // kijken of er een karakter gelezen kan worden |
cpu20 | 0:22f635e17330 | 80 | karakter = pc.getc(); // karakter inlezen |
cpu20 | 0:22f635e17330 | 81 | |
cpu20 | 0:22f635e17330 | 82 | if(karakter == 'a'){ // als het juiste adress is gegeven verdergaan |
cpu20 | 0:22f635e17330 | 83 | |
cpu20 | 0:22f635e17330 | 84 | plaats = 0; // plaats op 0 zetten zodat we een array kunnen opvullen |
cpu20 | 0:22f635e17330 | 85 | |
cpu20 | 0:22f635e17330 | 86 | while (plaats < 2){ // 5 karakters inlezen |
cpu20 | 0:22f635e17330 | 87 | |
cpu20 | 0:22f635e17330 | 88 | karakter = pc.getc(); // karakter inlezen |
cpu20 | 0:22f635e17330 | 89 | |
cpu20 | 0:22f635e17330 | 90 | commando[plaats] = karakter; // karakter in array plaatsen |
cpu20 | 0:22f635e17330 | 91 | |
cpu20 | 0:22f635e17330 | 92 | plaats++; // plaats in het array opschuiven |
cpu20 | 0:22f635e17330 | 93 | |
cpu20 | 0:22f635e17330 | 94 | } |
cpu20 | 0:22f635e17330 | 95 | seg1 = commando[0]-0x30; // segment 1 op instelwaarde plaatsen |
cpu20 | 0:22f635e17330 | 96 | seg2 = commando[1]-0x30; // segment 2 op instelwaarde plaatsen |
cpu20 | 0:22f635e17330 | 97 | print(seg2, seg1); |
cpu20 | 0:22f635e17330 | 98 | } |
cpu20 | 0:22f635e17330 | 99 | } |
cpu20 | 0:22f635e17330 | 100 | } |
cpu20 | 0:22f635e17330 | 101 | |
cpu20 | 0:22f635e17330 | 102 | int main(){ |
cpu20 | 0:22f635e17330 | 103 | RE = 0; |
cpu20 | 0:22f635e17330 | 104 | DE = 0; |
cpu20 | 0:22f635e17330 | 105 | t.start(); |
cpu20 | 0:22f635e17330 | 106 | while(true){ |
cpu20 | 0:22f635e17330 | 107 | lezen(); |
cpu20 | 0:22f635e17330 | 108 | } |
cpu20 | 0:22f635e17330 | 109 | } |