Tijl Schepens / Mbed 2 deprecated WiFiClock-Shotclock

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }