
Dit is het programma voor de Shotclocks van de op de BeagleBone gebaseerde schotklok.
main.cpp
- Committer:
- cpu20
- Date:
- 2016-01-31
- Revision:
- 1:22d791e591a6
- Parent:
- 0:22f635e17330
File content as of revision 1:22d791e591a6:
#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(); } }