
Dit is het programma voor de Shotclocks van de op de BeagleBone gebaseerde schotklok.
Diff: main.cpp
- Revision:
- 0:22f635e17330
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jan 31 16:45:25 2016 +0000 @@ -0,0 +1,109 @@ +#include "mbed.h" + +DigitalOut ShiftClk(PC_13); // klok schuifregister +DigitalOut ShiftEnable(PC_14); // Enable output schuifregister +DigitalOut ShiftData(PC_15); // data schuifregister +DigitalOut Display2(PA_0); // display1 common annode +DigitalOut Display1(PA_1); // display2 common annode +DigitalOut RE(PA_5); //Active low RE SP3485EN (data in) +DigitalOut DE(PA_4); //Active high DE SP3485EN (data out) +Serial pc(PA_2, PA_3); // TX & RX + +int Waarden[12]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x83,0xF8,0x80,0x98,0xFF,0xBF}; // waarden 7 seg 0-9 + clear + -- + +int seg = 0; // teller 7segment 1 of 2 +int klokschuifregister = 0; // klok schuifregister +int uitlezen = 0; // teller aanzetten output enable schuifregister +int schuif = 0; // aantal keer schuiven + +int seg1 = 0; // waarde segment1 +int seg2 = 0; // waarde segment2 + +char segwaarden[10] = {'0','1','2','3','4','5','6','7','8','9'}; + +Timer t; // functie timer + +char karakter; // variabele ingelezen karakters +int plaats = 0; // variabele gebruikt om karakters in een array te plaatsen + +char commando [5]; // array die karakters opslaat om vergelijking te maken met commando's + +void print(int data1, int data2) { // functie: data uitlezen schuifregister + + klokschuifregister = klokschuifregister^1; // klokschuifregister aan-uit + ShiftClk = klokschuifregister; // klokschuifregister aansturen + + if(seg==0){ // display 1 aansturen + ShiftData = (Waarden[data1] >> (7-schuif)) & 1; // Uit te sturen bit selecteren + + if (klokschuifregister == 1){ // Als klok hoog is + schuif++; // data volgende keer meer schuiven + uitlezen++; // variabele verhogen om uit te lezen + } + + if (uitlezen == 8){ // na 8 klokpulsen data op de 7seg plaatsen + Display1 = 0; // display 1 aan + Display2 = 1; // display 2 uit + + ShiftEnable = 1; // enable output schuifregister aanzetten + uitlezen = 0; // reset variable uitlezen + schuif = 0; // aantal bits schuiven reset + seg = 1; // veranderen aansturing 7segment 2de segment + } + ShiftEnable = 0; // enable output schuifregister uitzetten + } + + if(seg==1){ // display 2 aansturen + ShiftData = (Waarden[data2] >> (7-schuif)) & 1; // Uit te sturen bit selecteren + + if (klokschuifregister == 1){ // Als klok hoog is + schuif++; // data volgende keer meer schuiven + uitlezen++; // variabele verhogen om uit te lezen + } + + if (uitlezen == 8){ // na 8 klokpulsen uitlezen + Display1 = 1; // display 1 uit + Display2 = 0; // display 2 aan + + ShiftEnable = 1; // enable output schuifregister aanzetten + uitlezen = 0; // reset variabele uitlezen + schuif = 0; // aantal bits schuiven reset + seg = 0; // veranderen aansturen 7segment 1ste segment + } + ShiftEnable = 0; // enable output schuifregister uitzetten + } +} + +void lezen(){ + print(seg2, seg1); + if(pc.readable()){ // kijken of er een karakter gelezen kan worden + karakter = pc.getc(); // karakter inlezen + + if(karakter == 'a'){ // als het juiste adress is gegeven verdergaan + + plaats = 0; // plaats op 0 zetten zodat we een array kunnen opvullen + + while (plaats < 2){ // 5 karakters inlezen + + karakter = pc.getc(); // karakter inlezen + + commando[plaats] = karakter; // karakter in array plaatsen + + plaats++; // plaats in het array opschuiven + + } + seg1 = commando[0]-0x30; // segment 1 op instelwaarde plaatsen + seg2 = commando[1]-0x30; // segment 2 op instelwaarde plaatsen + print(seg2, seg1); + } + } +} + +int main(){ + RE = 0; + DE = 0; + t.start(); + while(true){ + lezen(); + } +} \ No newline at end of file