A twist to the computer that landed man on the moon. More information can be found at http://hackaday.io/project/294-Open-Source-DSKY

Dependencies:   DS1302 keypad mbed

Hardware

Committer:
VivaPenguinos
Date:
Thu Apr 24 03:29:32 2014 +0000
Revision:
3:29cff763ae36
Parent:
2:aee9ee1296cd
Child:
4:99535d368a9f
Official Release of Open Source DSKY.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VivaPenguinos 0:3ff58b093415 1 /* Introduction
VivaPenguinos 2:aee9ee1296cd 2 MBED DSKY
VivaPenguinos 0:3ff58b093415 3 This is a personal project used developed by penguinos to mix old school technology with a modern twist.
VivaPenguinos 3:29cff763ae36 4 Version 0.03: March. 8 2014
VivaPenguinos 3:29cff763ae36 5 - Planning to add a DS1302 RTC into the platform
VivaPenguinos 0:3ff58b093415 6 Notable Credits:
VivaPenguinos 0:3ff58b093415 7 NASA! - Release of technical documentations regarding the AGC and DSKY
VivaPenguinos 0:3ff58b093415 8 Ron Burkley and Contributers of "Virtual AGC — AGS — LVDC — Gemini" - Providing Technical documentations, Source Code, explanations,
VivaPenguinos 0:3ff58b093415 9 and refrences on other sites to make this project successful
VivaPenguinos 0:3ff58b093415 10
VivaPenguinos 0:3ff58b093415 11 Warning: This may contain author crude language, random memes, and random thoughts.
VivaPenguinos 0:3ff58b093415 12 */
VivaPenguinos 3:29cff763ae36 13
VivaPenguinos 3:29cff763ae36 14 /* Pin Usage
VivaPenguinos 3:29cff763ae36 15 Real Time Clock
VivaPenguinos 3:29cff763ae36 16 SCLK PTC5
VivaPenguinos 3:29cff763ae36 17 IO PTC4
VivaPenguinos 3:29cff763ae36 18 CE PTC3
VivaPenguinos 3:29cff763ae36 19 Keypad
VivaPenguinos 3:29cff763ae36 20 Row0 PTD4
VivaPenguinos 3:29cff763ae36 21 Row1 PTA12
VivaPenguinos 3:29cff763ae36 22 Row2 PTD3
VivaPenguinos 3:29cff763ae36 23 Row3 PTA5
VivaPenguinos 3:29cff763ae36 24 Col1 PTA13
VivaPenguinos 3:29cff763ae36 25 Col2 PTD5
VivaPenguinos 3:29cff763ae36 26 Col3 PTD0
VivaPenguinos 3:29cff763ae36 27 Col4 PTD2
VivaPenguinos 3:29cff763ae36 28 Shift Registers
VivaPenguinos 3:29cff763ae36 29 Latch PTC6
VivaPenguinos 3:29cff763ae36 30 Clock PTC10
VivaPenguinos 3:29cff763ae36 31 Data PTC11
VivaPenguinos 3:29cff763ae36 32 */
VivaPenguinos 3:29cff763ae36 33
VivaPenguinos 3:29cff763ae36 34 // For RTC
VivaPenguinos 3:29cff763ae36 35 #define SCLK PTC5
VivaPenguinos 3:29cff763ae36 36 #define IO PTC4
VivaPenguinos 3:29cff763ae36 37 #define CE PTC3
VivaPenguinos 3:29cff763ae36 38
VivaPenguinos 3:29cff763ae36 39 // Comment Line if DS1302 is already running
VivaPenguinos 3:29cff763ae36 40 #define INITIAL_RUN
VivaPenguinos 3:29cff763ae36 41
VivaPenguinos 0:3ff58b093415 42 using namespace std;
VivaPenguinos 0:3ff58b093415 43 #include "mbed.h"
VivaPenguinos 1:24446776f0d2 44 #include "Keypad.h" // Keypad
VivaPenguinos 3:29cff763ae36 45 #include "DS1302.h" // RTC for DS1032
VivaPenguinos 3:29cff763ae36 46
VivaPenguinos 3:29cff763ae36 47 DS1302 clk(SCLK, IO, CE); //DS1302 clk(SCLK, IO, PTC3);
VivaPenguinos 0:3ff58b093415 48
VivaPenguinos 0:3ff58b093415 49 //Declare Variables
VivaPenguinos 0:3ff58b093415 50 int shift = 0; // Shift Data
VivaPenguinos 0:3ff58b093415 51 // In the Arduino Version it uses a String. Will use an Int instead to see if this works on Mbed
VivaPenguinos 1:24446776f0d2 52 int Verb_Number1 = 0;
VivaPenguinos 1:24446776f0d2 53 int Verb_Number2 = 0;
VivaPenguinos 1:24446776f0d2 54 int Noun_Number1 = 0;
VivaPenguinos 1:24446776f0d2 55 int Noun_Number2 = 0;
VivaPenguinos 1:24446776f0d2 56 int Enter_Number1 = 0;
VivaPenguinos 1:24446776f0d2 57 int Enter_Number2 = 0;
VivaPenguinos 1:24446776f0d2 58 int Verb; // DSKY Verb
VivaPenguinos 1:24446776f0d2 59 int Noun; // DSkY Noun
VivaPenguinos 1:24446776f0d2 60 int Enter; // DSKY Enter
VivaPenguinos 3:29cff763ae36 61 // GET USE
VivaPenguinos 0:3ff58b093415 62 int Set_GET_Seconds = 30; // Configure the Set Get in seconds. 1/100th of a second
VivaPenguinos 0:3ff58b093415 63 char Set_get_miliseconds = 10;
VivaPenguinos 0:3ff58b093415 64 char Set_Get_Seconds_Byte = 0;
VivaPenguinos 0:3ff58b093415 65 char Set_Get_Seconds_Byte2 = 0;
VivaPenguinos 3:29cff763ae36 66 // Shift Register
VivaPenguinos 0:3ff58b093415 67 char data = 0;
VivaPenguinos 0:3ff58b093415 68 char data2 = 0;
VivaPenguinos 0:3ff58b093415 69 char data3 = 0;
VivaPenguinos 1:24446776f0d2 70 char nibble[10] = { // Holds variables for nibbles for number 0-9 in hexes. nibble ALL the things!
VivaPenguinos 1:24446776f0d2 71 0x00, 0x01, 0x02, 0x03, 0x04,
VivaPenguinos 1:24446776f0d2 72 0x05, 0x06, 0x07, 0x08, 0x09
VivaPenguinos 1:24446776f0d2 73 };
VivaPenguinos 3:29cff763ae36 74 // Keypad
VivaPenguinos 1:24446776f0d2 75 char Keytable[] = { '1', '2', '3', '+', // R0
VivaPenguinos 1:24446776f0d2 76 '4', '5', '6', '-', // R1
VivaPenguinos 1:24446776f0d2 77 '7', '8', '9', 'E', // R2
VivaPenguinos 1:24446776f0d2 78 'V', '0', 'N', 'R', // R3
VivaPenguinos 1:24446776f0d2 79 };
VivaPenguinos 1:24446776f0d2 80 // C0 C1 C2 C3
VivaPenguinos 1:24446776f0d2 81
VivaPenguinos 3:29cff763ae36 82 // RTC Variables
VivaPenguinos 3:29cff763ae36 83 int TIME_VALUE = 1397702161;
VivaPenguinos 3:29cff763ae36 84 int Time_Difference;
VivaPenguinos 3:29cff763ae36 85
VivaPenguinos 3:29cff763ae36 86 // Button State
VivaPenguinos 1:24446776f0d2 87 int32_t Index = -1; // Button
VivaPenguinos 1:24446776f0d2 88 int State;
VivaPenguinos 0:3ff58b093415 89
VivaPenguinos 0:3ff58b093415 90 // Function Declaration
VivaPenguinos 1:24446776f0d2 91 void Verb_Button();
VivaPenguinos 1:24446776f0d2 92 void Noun_Button();
VivaPenguinos 1:24446776f0d2 93 void Enter_Button();
VivaPenguinos 1:24446776f0d2 94 void compare();
VivaPenguinos 1:24446776f0d2 95 void Button_Sort(int sort); // Function that sorts Verb Values
VivaPenguinos 0:3ff58b093415 96 void blinkAll(int amount, int delay);// Function that Blinks all LED
VivaPenguinos 0:3ff58b093415 97 //void ShiftingOut(char myDataOut);
VivaPenguinos 0:3ff58b093415 98
VivaPenguinos 3:29cff763ae36 99 // Program Names
VivaPenguinos 1:24446776f0d2 100 void Ground_Elapse_Time(); // Ground Elapse Time
VivaPenguinos 1:24446776f0d2 101
VivaPenguinos 0:3ff58b093415 102 // Pin modes for each pins
VivaPenguinos 3:29cff763ae36 103 DigitalOut LatchPin(PTC6); //Pin for ST_CP of 74HC595 Pin # 12
VivaPenguinos 3:29cff763ae36 104 DigitalOut ClockPin(PTC10); //Pin for SH_CP of 74HC595 Pin # 11
VivaPenguinos 3:29cff763ae36 105 DigitalOut DataPin(PTC11); //Pin for to DS of 74HC595 Pin # 14
VivaPenguinos 0:3ff58b093415 106
VivaPenguinos 0:3ff58b093415 107 DigitalOut myled(LED1);
VivaPenguinos 0:3ff58b093415 108 Serial pc(USBTX, USBRX); // tx, rx Serial Output to PC Enabling this WILL consume resources. Use only for debug
VivaPenguinos 1:24446776f0d2 109
VivaPenguinos 1:24446776f0d2 110 uint32_t cbAfterInput(uint32_t index)
VivaPenguinos 1:24446776f0d2 111 {
VivaPenguinos 1:24446776f0d2 112 Index = index;
VivaPenguinos 1:24446776f0d2 113 return 0;
VivaPenguinos 1:24446776f0d2 114 }
VivaPenguinos 1:24446776f0d2 115
VivaPenguinos 0:3ff58b093415 116 int main()
VivaPenguinos 0:3ff58b093415 117 {
VivaPenguinos 0:3ff58b093415 118 wait(1);
VivaPenguinos 0:3ff58b093415 119 pc.printf("Shifting");
VivaPenguinos 0:3ff58b093415 120 blinkAll(4,1);
VivaPenguinos 0:3ff58b093415 121 pc.printf("Done");
VivaPenguinos 0:3ff58b093415 122 wait(1);
VivaPenguinos 1:24446776f0d2 123 State = 1;
VivaPenguinos 1:24446776f0d2 124 // r0 r1 r2 r3 c0 c1 c2 c3
VivaPenguinos 1:24446776f0d2 125 Keypad keypad(PTD4, PTA12, PTD3, PTA5, PTA13, PTD5, PTD0, PTD2, 20);
VivaPenguinos 1:24446776f0d2 126 keypad.attach(&cbAfterInput);
VivaPenguinos 1:24446776f0d2 127 keypad.start(); // energize the columns c0-c3 of the keypad
VivaPenguinos 1:24446776f0d2 128 while (1) {
VivaPenguinos 1:24446776f0d2 129 __wfi();
VivaPenguinos 1:24446776f0d2 130 if (Index >-1) {
VivaPenguinos 1:24446776f0d2 131 pc.printf("Interrupted");
VivaPenguinos 1:24446776f0d2 132 pc.printf("Index:%d => Key:%c\r\n", Index, Keytable[Index]);
VivaPenguinos 1:24446776f0d2 133 if (Index == 12) { // Index 12 = Verb Button
VivaPenguinos 1:24446776f0d2 134 Verb_Button(); // Goes to Verb_Button
VivaPenguinos 1:24446776f0d2 135 }
VivaPenguinos 1:24446776f0d2 136 if (Index == 14) { // Index 14 = Noun Button
VivaPenguinos 1:24446776f0d2 137 Noun_Button(); // Goes to Noun_Button
VivaPenguinos 1:24446776f0d2 138 }
VivaPenguinos 1:24446776f0d2 139 if (Index == 11) { // Index 11 = Enter Button
VivaPenguinos 1:24446776f0d2 140 Enter_Button(); // Goes to Enter_Button
VivaPenguinos 1:24446776f0d2 141 }
VivaPenguinos 1:24446776f0d2 142 Index = -1;
VivaPenguinos 1:24446776f0d2 143 }
VivaPenguinos 1:24446776f0d2 144 // Debug use only
VivaPenguinos 1:24446776f0d2 145 //pc.printf("%c", Keytable[Verb_Number1]);
VivaPenguinos 1:24446776f0d2 146 //pc.printf("%c", Keytable[Verb_Number2]);
VivaPenguinos 1:24446776f0d2 147 //pc.printf("%c", Keytable[Noun_Number1]);
VivaPenguinos 1:24446776f0d2 148 //pc.printf("%c", Keytable[Noun_Number2]);
VivaPenguinos 0:3ff58b093415 149 }
VivaPenguinos 1:24446776f0d2 150 }
VivaPenguinos 1:24446776f0d2 151
VivaPenguinos 1:24446776f0d2 152 /* This function is used when the Verb Button has been pressed. Take the inputs of the button twice and determine if the buttons are integers.
VivaPenguinos 1:24446776f0d2 153 If other buttons are pressed send it to their perspective locations.
VivaPenguinos 1:24446776f0d2 154 */
VivaPenguinos 1:24446776f0d2 155 void Verb_Button(){
VivaPenguinos 1:24446776f0d2 156 Verbz: // Don't Ask
VivaPenguinos 1:24446776f0d2 157 // All Variables for Verb, Noun and Enter are zeroed out
VivaPenguinos 1:24446776f0d2 158 Verb_Number1 = 0;
VivaPenguinos 1:24446776f0d2 159 Verb_Number2 = 0;
VivaPenguinos 1:24446776f0d2 160 Noun_Number1 = 0;
VivaPenguinos 1:24446776f0d2 161 Noun_Number2 = 0;
VivaPenguinos 1:24446776f0d2 162 Enter_Number1 = 0;
VivaPenguinos 1:24446776f0d2 163 Enter_Number2 = 0;
VivaPenguinos 1:24446776f0d2 164 pc.printf("Please enter a Verb Number");
VivaPenguinos 1:24446776f0d2 165 __wfi();
VivaPenguinos 1:24446776f0d2 166 Verb_Number1 = Index;
VivaPenguinos 1:24446776f0d2 167 if (Verb_Number1 == 12){ // This is section is used on atleast one of the two Verb_Number variabels to prevent a Nestled If within if within if.
VivaPenguinos 1:24446776f0d2 168 goto Verbz; // Line 110
VivaPenguinos 1:24446776f0d2 169 }
VivaPenguinos 1:24446776f0d2 170 else{
VivaPenguinos 1:24446776f0d2 171 Button_Sort(Verb_Number1);
VivaPenguinos 1:24446776f0d2 172 }
VivaPenguinos 1:24446776f0d2 173 //wait(0.01); // Is needed so that Verb_Number1 can store the variable from the keypad. Not sure why it requires an additional job for it to store the data.
VivaPenguinos 1:24446776f0d2 174 //pc.printf("%c", Verb_Number1);
VivaPenguinos 1:24446776f0d2 175 //pc.printf("%c", Keytable[Index]);
VivaPenguinos 1:24446776f0d2 176 __wfi();
VivaPenguinos 1:24446776f0d2 177 Verb_Number2 = Index;
VivaPenguinos 1:24446776f0d2 178 Button_Sort(Verb_Number2);
VivaPenguinos 1:24446776f0d2 179 //wait(0.01); // Is needed so that Verb_Number2 can store the variable form the keypad. Not sure why it requires an additional job for it to store the data.
VivaPenguinos 1:24446776f0d2 180 //pc.printf("%c", Verb_Number2);
VivaPenguinos 1:24446776f0d2 181 //pc.printf("%c", Verb_Number1);
VivaPenguinos 1:24446776f0d2 182 //pc.printf("%c\n", Verb_Number2);
VivaPenguinos 0:3ff58b093415 183 }
VivaPenguinos 1:24446776f0d2 184
VivaPenguinos 1:24446776f0d2 185 /* This Function is used when the Verb Button has been Pressed. Take the inputs of the button twice and determine if the buttons are integers.
VivaPenguinos 1:24446776f0d2 186 If other buttons are pressed send it to their perspective locations.
VivaPenguinos 1:24446776f0d2 187 */
VivaPenguinos 1:24446776f0d2 188 void Noun_Button()
VivaPenguinos 1:24446776f0d2 189 {
VivaPenguinos 1:24446776f0d2 190 Nounz:
VivaPenguinos 1:24446776f0d2 191 pc.printf("Please enter a Noun Number");
VivaPenguinos 1:24446776f0d2 192 __wfi();
VivaPenguinos 1:24446776f0d2 193 Noun_Number1 = Index;
VivaPenguinos 1:24446776f0d2 194 if (Noun_Number1 == 14) {// This is section is used on atleast one of the two Noun_Number variabels to prevent a Nestled If within if within if.
VivaPenguinos 1:24446776f0d2 195 goto Nounz; //Line 140
VivaPenguinos 0:3ff58b093415 196 }
VivaPenguinos 1:24446776f0d2 197 else{
VivaPenguinos 1:24446776f0d2 198 Button_Sort(Noun_Number1);
VivaPenguinos 0:3ff58b093415 199 }
VivaPenguinos 1:24446776f0d2 200 __wfi();
VivaPenguinos 1:24446776f0d2 201 Noun_Number2 = Index;
VivaPenguinos 1:24446776f0d2 202 Button_Sort(Noun_Number2);
VivaPenguinos 1:24446776f0d2 203 }
VivaPenguinos 1:24446776f0d2 204
VivaPenguinos 1:24446776f0d2 205 /* This function is used wen the Enter button has been pressed. This function is a special circumstance since it will be checking both the Verb and Noun variables before entering variable to Enter.
VivaPenguinos 1:24446776f0d2 206 */
VivaPenguinos 1:24446776f0d2 207 void Enter_Button()
VivaPenguinos 1:24446776f0d2 208 {
VivaPenguinos 1:24446776f0d2 209 Enterz:
VivaPenguinos 1:24446776f0d2 210 pc.printf("Checking Whether there is a variable stored in Noun\n");
VivaPenguinos 1:24446776f0d2 211 if (Noun_Number1 == 0 && Noun_Number2 == 0){
VivaPenguinos 1:24446776f0d2 212 pc.printf("Please enter a Enter Number");
VivaPenguinos 1:24446776f0d2 213 __wfi();
VivaPenguinos 1:24446776f0d2 214 Enter_Number1 = Index;
VivaPenguinos 1:24446776f0d2 215 if (Enter_Number1 == 11) { // This section is used on atleast one of the two Enter_Number variable to prevent a nestled if within if within if.
VivaPenguinos 1:24446776f0d2 216 goto Enterz;
VivaPenguinos 1:24446776f0d2 217 }
VivaPenguinos 1:24446776f0d2 218 else{
VivaPenguinos 1:24446776f0d2 219 Button_Sort(Enter_Number1);
VivaPenguinos 1:24446776f0d2 220 }
VivaPenguinos 1:24446776f0d2 221 __wfi();
VivaPenguinos 1:24446776f0d2 222 Enter_Number2 = Index;
VivaPenguinos 1:24446776f0d2 223 Button_Sort(Enter_Number2);
VivaPenguinos 1:24446776f0d2 224 }
VivaPenguinos 1:24446776f0d2 225 if (Noun_Number1 != 0 && Noun_Number2 != 0){
VivaPenguinos 1:24446776f0d2 226 pc.printf("Check completed, Executing");
VivaPenguinos 1:24446776f0d2 227 compare();
VivaPenguinos 1:24446776f0d2 228 }
VivaPenguinos 1:24446776f0d2 229
VivaPenguinos 1:24446776f0d2 230 }
VivaPenguinos 1:24446776f0d2 231
VivaPenguinos 1:24446776f0d2 232 // This function is used to sort the button press for Verb and Noun.
VivaPenguinos 1:24446776f0d2 233 void Button_Sort(int Sort)
VivaPenguinos 1:24446776f0d2 234 {
VivaPenguinos 1:24446776f0d2 235 // Determines what button are pressed before moving on to the 2nd button.
VivaPenguinos 1:24446776f0d2 236 if (Sort == 12){ //comparing the array number NOT what value in the array it is. Actual Array value is V
VivaPenguinos 1:24446776f0d2 237 Verb_Button();
VivaPenguinos 1:24446776f0d2 238 }
VivaPenguinos 1:24446776f0d2 239 else if (Sort == 14) { //comparing the array number NOT what value in the array it is. Actual Array value is N
VivaPenguinos 1:24446776f0d2 240 Noun_Button();
VivaPenguinos 1:24446776f0d2 241 }
VivaPenguinos 1:24446776f0d2 242 else if (Sort == 3) { //comparing the array number NOT what value in the array it is. Actual Array value is +
VivaPenguinos 1:24446776f0d2 243 pc.printf("+");
VivaPenguinos 1:24446776f0d2 244 }
VivaPenguinos 1:24446776f0d2 245 else if (Sort == 7) { //comparing the array number NOT what value in the array it is. Actual Array value is -
VivaPenguinos 1:24446776f0d2 246 pc.printf("-");
VivaPenguinos 1:24446776f0d2 247 }
VivaPenguinos 1:24446776f0d2 248 else if (Sort == 15) { //comparing the array number NOT what value in the array it is. Actual Array value is R
VivaPenguinos 1:24446776f0d2 249 pc.printf("R");
VivaPenguinos 1:24446776f0d2 250 }
VivaPenguinos 1:24446776f0d2 251 }
VivaPenguinos 1:24446776f0d2 252 // Compares the button to what program the DSKY should be running. This section will be inefficent until I can improve on my programming skills :]
VivaPenguinos 1:24446776f0d2 253 void compare()
VivaPenguinos 1:24446776f0d2 254 {
VivaPenguinos 1:24446776f0d2 255 if (Verb_Number1 == 0 && Verb_Number2 == 6 && Noun_Number1 == 2 && Noun_Number2 == 6 && Enter_Number1 == 0 && Enter_Number2 == 0) {// Verb 16, Noun 36, Enter 00
VivaPenguinos 1:24446776f0d2 256 //Configure GET
VivaPenguinos 1:24446776f0d2 257 pc.printf("Configuring GET");
VivaPenguinos 1:24446776f0d2 258 Ground_Elapse_Time();
VivaPenguinos 1:24446776f0d2 259 } else if (Verb_Number1 == 3 && Verb_Number2 == 5 && Noun_Number1 == 0 && Noun_Number2 == 0) {
VivaPenguinos 1:24446776f0d2 260 // Test Light
VivaPenguinos 1:24446776f0d2 261 } else if (Verb == 25 && Noun == 36) {
VivaPenguinos 0:3ff58b093415 262 // Configure GET
VivaPenguinos 1:24446776f0d2 263 } else if (Verb == 37 && Enter == 00) {
VivaPenguinos 0:3ff58b093415 264 // Idle Program
VivaPenguinos 0:3ff58b093415 265 }
VivaPenguinos 1:24446776f0d2 266 }
VivaPenguinos 0:3ff58b093415 267
VivaPenguinos 1:24446776f0d2 268 void ShiftingOut(int myDataOut)
VivaPenguinos 1:24446776f0d2 269 {
VivaPenguinos 0:3ff58b093415 270 // This shifts 8 bits out to the MSB first, The the rising edge of the clock, while clock idles low.
VivaPenguinos 0:3ff58b093415 271 // Internal Fucntions
VivaPenguinos 0:3ff58b093415 272 DataPin = 0;
VivaPenguinos 0:3ff58b093415 273 ClockPin = 0;
VivaPenguinos 0:3ff58b093415 274 int i= 0;
VivaPenguinos 0:3ff58b093415 275 int pinState;
VivaPenguinos 0:3ff58b093415 276 // Clears Everything within shift registers
VivaPenguinos 0:3ff58b093415 277 DataPin = 0;
VivaPenguinos 0:3ff58b093415 278 ClockPin = 0;
VivaPenguinos 1:24446776f0d2 279
VivaPenguinos 0:3ff58b093415 280 for (i=7; i>= 0; i--) {
VivaPenguinos 0:3ff58b093415 281 ClockPin = 0;
VivaPenguinos 1:24446776f0d2 282
VivaPenguinos 0:3ff58b093415 283 // Value passed to my data out
VivaPenguinos 0:3ff58b093415 284 if ( myDataOut & (1<<i)) {
VivaPenguinos 0:3ff58b093415 285 pinState = 1;
VivaPenguinos 0:3ff58b093415 286 myled = 1;
VivaPenguinos 0:3ff58b093415 287 pc.printf("1");
VivaPenguinos 1:24446776f0d2 288 } else {
VivaPenguinos 0:3ff58b093415 289 pinState = 0;
VivaPenguinos 0:3ff58b093415 290 myled = 0;
VivaPenguinos 0:3ff58b093415 291 pc.printf("0");
VivaPenguinos 0:3ff58b093415 292 }
VivaPenguinos 0:3ff58b093415 293 DataPin = pinState;
VivaPenguinos 0:3ff58b093415 294 ClockPin = 1;
VivaPenguinos 0:3ff58b093415 295 DataPin = 0;
VivaPenguinos 1:24446776f0d2 296 }
VivaPenguinos 0:3ff58b093415 297 ClockPin = 0;
VivaPenguinos 0:3ff58b093415 298 DataPin = 1;
VivaPenguinos 1:24446776f0d2 299 }
VivaPenguinos 0:3ff58b093415 300
VivaPenguinos 1:24446776f0d2 301 //blinks the whole registered based on the number of times you want to blink with a certain delay
VivaPenguinos 1:24446776f0d2 302 void blinkAll(int amount, int delay)
VivaPenguinos 1:24446776f0d2 303 {
VivaPenguinos 0:3ff58b093415 304 LatchPin = 0;
VivaPenguinos 0:3ff58b093415 305 ShiftingOut(0);
VivaPenguinos 0:3ff58b093415 306 ShiftingOut(0);
VivaPenguinos 0:3ff58b093415 307 LatchPin = 1;
VivaPenguinos 0:3ff58b093415 308 wait(0.2);
VivaPenguinos 0:3ff58b093415 309 for (int x = 0; x < amount; x++) {
VivaPenguinos 0:3ff58b093415 310 LatchPin = 0;
VivaPenguinos 0:3ff58b093415 311 pc.printf("sending");
VivaPenguinos 0:3ff58b093415 312 ShiftingOut(255);
VivaPenguinos 0:3ff58b093415 313 ShiftingOut(255);
VivaPenguinos 0:3ff58b093415 314 ShiftingOut(255);
VivaPenguinos 0:3ff58b093415 315 LatchPin = 1;
VivaPenguinos 0:3ff58b093415 316 wait(delay);
VivaPenguinos 0:3ff58b093415 317 LatchPin = 0;
VivaPenguinos 0:3ff58b093415 318 ShiftingOut(0);
VivaPenguinos 0:3ff58b093415 319 ShiftingOut(0);
VivaPenguinos 0:3ff58b093415 320 ShiftingOut(0);
VivaPenguinos 0:3ff58b093415 321 LatchPin = 1;
VivaPenguinos 0:3ff58b093415 322 wait(delay);
VivaPenguinos 1:24446776f0d2 323 }
VivaPenguinos 1:24446776f0d2 324 }
VivaPenguinos 1:24446776f0d2 325
VivaPenguinos 1:24446776f0d2 326 // Need to fill this too...
VivaPenguinos 1:24446776f0d2 327 void Ground_Elapse_Time()
VivaPenguinos 1:24446776f0d2 328 {
VivaPenguinos 3:29cff763ae36 329 #ifdef INITIAL_RUN
VivaPenguinos 3:29cff763ae36 330 clk.set_time(TIME_VALUE);
VivaPenguinos 3:29cff763ae36 331 #endif
VivaPenguinos 3:29cff763ae36 332 char storedByte = clk.recallByte(0);
VivaPenguinos 3:29cff763ae36 333 printf("\r\nStored byte was %d, now increasing by one\r\n", storedByte);
VivaPenguinos 3:29cff763ae36 334 clk.storeByte(0, storedByte + 1);
VivaPenguinos 1:24446776f0d2 335
VivaPenguinos 3:29cff763ae36 336 while(1) {
VivaPenguinos 3:29cff763ae36 337 time_t seconds = clk.time(NULL);
VivaPenguinos 3:29cff763ae36 338 Time_Difference = seconds - TIME_VALUE;
VivaPenguinos 3:29cff763ae36 339 printf("%d \n", Time_Difference);
VivaPenguinos 3:29cff763ae36 340 //printf("Time as a basic string = %s\r", ctime(&seconds));
VivaPenguinos 3:29cff763ae36 341 wait(1);
VivaPenguinos 3:29cff763ae36 342 }
VivaPenguinos 1:24446776f0d2 343 }