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
main.cpp@5:5f08974ef8bb, 2014-08-15 (annotated)
- Committer:
- VivaPenguinos
- Date:
- Fri Aug 15 20:27:26 2014 +0000
- Revision:
- 5:5f08974ef8bb
- Parent:
- 4:99535d368a9f
- Child:
- 6:3019f2f7e9d4
Contains P00, P01, P02, R1_Component; Edited R_GET() Function for indicator lights; Edited GET_Config(); Added Indicator Lights; Added R1_Component
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:5f08974ef8bb | 4 | Version 0.05: July. 24 2014 |
VivaPenguinos | 5:5f08974ef8bb | 5 | - Indicator lights added |
VivaPenguinos | 5:5f08974ef8bb | 6 | - Included Comp ACTY light |
VivaPenguinos | 5:5f08974ef8bb | 7 | - Added all indicator lights into Blink all. (Doesn't follow format correctly yet) |
VivaPenguinos | 5:5f08974ef8bb | 8 | - R_GET() function now includes the Positive and negative indicator lights for the R rows. (Function has yet to be tested) |
VivaPenguinos | 5:5f08974ef8bb | 9 | - GET_Config function during value checking now checks whether the indicator lights for Positive are on or off. (Has yet to be tested also) |
VivaPenguinos | 5:5f08974ef8bb | 10 | - P00 - Idling Program Completed |
VivaPenguinos | 5:5f08974ef8bb | 11 | - P01 - PreLaunch Initialization Program Completed |
VivaPenguinos | 5:5f08974ef8bb | 12 | - P02 - PreLaunch Gyrocompassing Program Completed |
VivaPenguinos | 5:5f08974ef8bb | 13 | - Prelaunch_Gyrocompassing_Configure Completed |
VivaPenguinos | 5:5f08974ef8bb | 14 | - R1_Component Added |
VivaPenguinos | 4:99535d368a9f | 15 | |
VivaPenguinos | 0:3ff58b093415 | 16 | Notable Credits: |
VivaPenguinos | 0:3ff58b093415 | 17 | NASA! - Release of technical documentations regarding the AGC and DSKY |
VivaPenguinos | 0:3ff58b093415 | 18 | Ron Burkley and Contributers of "Virtual AGC — AGS — LVDC — Gemini" - Providing Technical documentations, Source Code, explanations, |
VivaPenguinos | 0:3ff58b093415 | 19 | and refrences on other sites to make this project successful |
VivaPenguinos | 4:99535d368a9f | 20 | Warning: This may contain author's crude language, and random thoughts. |
VivaPenguinos | 4:99535d368a9f | 21 | |
VivaPenguinos | 4:99535d368a9f | 22 | Pin Usage: |
VivaPenguinos | 4:99535d368a9f | 23 | |
VivaPenguinos | 3:29cff763ae36 | 24 | Real Time Clock |
VivaPenguinos | 3:29cff763ae36 | 25 | SCLK PTC5 |
VivaPenguinos | 3:29cff763ae36 | 26 | IO PTC4 |
VivaPenguinos | 3:29cff763ae36 | 27 | CE PTC3 |
VivaPenguinos | 3:29cff763ae36 | 28 | Keypad |
VivaPenguinos | 3:29cff763ae36 | 29 | Row0 PTD4 |
VivaPenguinos | 3:29cff763ae36 | 30 | Row1 PTA12 |
VivaPenguinos | 3:29cff763ae36 | 31 | Row2 PTD3 |
VivaPenguinos | 3:29cff763ae36 | 32 | Row3 PTA5 |
VivaPenguinos | 3:29cff763ae36 | 33 | Col1 PTA13 |
VivaPenguinos | 3:29cff763ae36 | 34 | Col2 PTD5 |
VivaPenguinos | 3:29cff763ae36 | 35 | Col3 PTD0 |
VivaPenguinos | 3:29cff763ae36 | 36 | Col4 PTD2 |
VivaPenguinos | 3:29cff763ae36 | 37 | Shift Registers |
VivaPenguinos | 3:29cff763ae36 | 38 | Latch PTC6 |
VivaPenguinos | 3:29cff763ae36 | 39 | Clock PTC10 |
VivaPenguinos | 3:29cff763ae36 | 40 | Data PTC11 |
VivaPenguinos | 5:5f08974ef8bb | 41 | Statues Indicator |
VivaPenguinos | 5:5f08974ef8bb | 42 | Uplink ACTY PTE5 |
VivaPenguinos | 5:5f08974ef8bb | 43 | NO ATT PTE4 |
VivaPenguinos | 5:5f08974ef8bb | 44 | STBY PTE3 |
VivaPenguinos | 5:5f08974ef8bb | 45 | KEY REL PTE2 |
VivaPenguinos | 5:5f08974ef8bb | 46 | OPP ERR PTB11 |
VivaPenguinos | 5:5f08974ef8bb | 47 | TEMP PTB10 |
VivaPenguinos | 5:5f08974ef8bb | 48 | GIMBAL LOCK PTB9 |
VivaPenguinos | 5:5f08974ef8bb | 49 | PROG PTB8 |
VivaPenguinos | 5:5f08974ef8bb | 50 | RESTART PTC12 |
VivaPenguinos | 5:5f08974ef8bb | 51 | TRACKER PTC13 |
VivaPenguinos | 5:5f08974ef8bb | 52 | R1+ PTC16 |
VivaPenguinos | 5:5f08974ef8bb | 53 | R2+ PTC17 |
VivaPenguinos | 5:5f08974ef8bb | 54 | R3+ PTA16 |
VivaPenguinos | 5:5f08974ef8bb | 55 | R1- PTA17 |
VivaPenguinos | 5:5f08974ef8bb | 56 | R2- PTE31 |
VivaPenguinos | 5:5f08974ef8bb | 57 | R3- PTC6 |
VivaPenguinos | 5:5f08974ef8bb | 58 | COMP ACTY PTC7 |
VivaPenguinos | 4:99535d368a9f | 59 | |
VivaPenguinos | 4:99535d368a9f | 60 | Shift Registers Data: |
VivaPenguinos | 4:99535d368a9f | 61 | Because the project contains 11 shift registers, All data must be properly formatted before shifting out. each shift register controls 2 7 segments. |
VivaPenguinos | 4:99535d368a9f | 62 | R1_A [P_A | P_B] |
VivaPenguinos | 4:99535d368a9f | 63 | R1_B |
VivaPenguinos | 4:99535d368a9f | 64 | R1_C [V_A | V_B] [N_A | N_B] |
VivaPenguinos | 4:99535d368a9f | 65 | R1_D |
VivaPenguinos | 4:99535d368a9f | 66 | R1_E [R3_E | R3_D | R3_C | R3_B | R3_A] |
VivaPenguinos | 4:99535d368a9f | 67 | R2_A |
VivaPenguinos | 4:99535d368a9f | 68 | R2_B [R2_E | R2_D | R2_C | R2_B | R2_A] |
VivaPenguinos | 4:99535d368a9f | 69 | R2_C |
VivaPenguinos | 4:99535d368a9f | 70 | R2_D [R1_E | R1_D | R1_C | R1_B | R1_A] |
VivaPenguinos | 4:99535d368a9f | 71 | R2_E |
VivaPenguinos | 4:99535d368a9f | 72 | R3_A |
VivaPenguinos | 4:99535d368a9f | 73 | R3_B |
VivaPenguinos | 4:99535d368a9f | 74 | R3_C |
VivaPenguinos | 4:99535d368a9f | 75 | R3_D |
VivaPenguinos | 4:99535d368a9f | 76 | R3_E |
VivaPenguinos | 4:99535d368a9f | 77 | V_A |
VivaPenguinos | 4:99535d368a9f | 78 | V_B |
VivaPenguinos | 4:99535d368a9f | 79 | N_A |
VivaPenguinos | 4:99535d368a9f | 80 | N_B |
VivaPenguinos | 4:99535d368a9f | 81 | P_A |
VivaPenguinos | 4:99535d368a9f | 82 | P_B |
VivaPenguinos | 3:29cff763ae36 | 83 | */ |
VivaPenguinos | 3:29cff763ae36 | 84 | |
VivaPenguinos | 3:29cff763ae36 | 85 | // For RTC |
VivaPenguinos | 3:29cff763ae36 | 86 | #define SCLK PTC5 |
VivaPenguinos | 3:29cff763ae36 | 87 | #define IO PTC4 |
VivaPenguinos | 3:29cff763ae36 | 88 | #define CE PTC3 |
VivaPenguinos | 3:29cff763ae36 | 89 | |
VivaPenguinos | 3:29cff763ae36 | 90 | // Comment Line if DS1302 is already running |
VivaPenguinos | 3:29cff763ae36 | 91 | #define INITIAL_RUN |
VivaPenguinos | 3:29cff763ae36 | 92 | |
VivaPenguinos | 0:3ff58b093415 | 93 | using namespace std; |
VivaPenguinos | 0:3ff58b093415 | 94 | #include "mbed.h" |
VivaPenguinos | 1:24446776f0d2 | 95 | #include "Keypad.h" // Keypad |
VivaPenguinos | 3:29cff763ae36 | 96 | #include "DS1302.h" // RTC for DS1032 |
VivaPenguinos | 4:99535d368a9f | 97 | |
VivaPenguinos | 3:29cff763ae36 | 98 | DS1302 clk(SCLK, IO, CE); //DS1302 clk(SCLK, IO, PTC3); |
VivaPenguinos | 0:3ff58b093415 | 99 | |
VivaPenguinos | 0:3ff58b093415 | 100 | //Declare Variables |
VivaPenguinos | 4:99535d368a9f | 101 | // int shift = 0; // Shift Data |
VivaPenguinos | 0:3ff58b093415 | 102 | // In the Arduino Version it uses a String. Will use an Int instead to see if this works on Mbed |
VivaPenguinos | 1:24446776f0d2 | 103 | int Verb_Number1 = 0; |
VivaPenguinos | 1:24446776f0d2 | 104 | int Verb_Number2 = 0; |
VivaPenguinos | 1:24446776f0d2 | 105 | int Noun_Number1 = 0; |
VivaPenguinos | 1:24446776f0d2 | 106 | int Noun_Number2 = 0; |
VivaPenguinos | 1:24446776f0d2 | 107 | int Enter_Number1 = 0; |
VivaPenguinos | 1:24446776f0d2 | 108 | int Enter_Number2 = 0; |
VivaPenguinos | 1:24446776f0d2 | 109 | int Verb; // DSKY Verb |
VivaPenguinos | 1:24446776f0d2 | 110 | int Noun; // DSkY Noun |
VivaPenguinos | 1:24446776f0d2 | 111 | int Enter; // DSKY Enter |
VivaPenguinos | 4:99535d368a9f | 112 | |
VivaPenguinos | 4:99535d368a9f | 113 | // For shift register use. Refer to shift register data for additional information. |
VivaPenguinos | 4:99535d368a9f | 114 | int R1_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 115 | int R1_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 116 | int R1_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 117 | int R1_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 118 | int R1_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 119 | int R2_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 120 | int R2_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 121 | int R2_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 122 | int R2_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 123 | int R2_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 124 | int R3_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 125 | int R3_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 126 | int R3_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 127 | int R3_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 128 | int R3_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 129 | int V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 130 | int V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 131 | int N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 132 | int N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 133 | int P_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 134 | int P_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 135 | |
VivaPenguinos | 5:5f08974ef8bb | 136 | // For R use. |
VivaPenguinos | 5:5f08974ef8bb | 137 | int R_Pos = 0; |
VivaPenguinos | 5:5f08974ef8bb | 138 | int R_Neg = 0; |
VivaPenguinos | 4:99535d368a9f | 139 | int RA = 0; |
VivaPenguinos | 4:99535d368a9f | 140 | int RB = 0; |
VivaPenguinos | 4:99535d368a9f | 141 | int RC = 0; |
VivaPenguinos | 4:99535d368a9f | 142 | int RD = 0; |
VivaPenguinos | 4:99535d368a9f | 143 | int RE = 0; |
VivaPenguinos | 5:5f08974ef8bb | 144 | int RP = 0; |
VivaPenguinos | 4:99535d368a9f | 145 | int RVA = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 146 | int RVB = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 147 | int RVC = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 148 | int RVD = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 149 | int RVE = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 150 | int R_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 151 | int R1_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 152 | int R2_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 153 | int R3_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 154 | int GET_Config_Time = 0; |
VivaPenguinos | 4:99535d368a9f | 155 | |
VivaPenguinos | 5:5f08974ef8bb | 156 | // For N Use. |
VivaPenguinos | 5:5f08974ef8bb | 157 | int NA = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 158 | int NB = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 159 | int N_Position = 1; |
VivaPenguinos | 5:5f08974ef8bb | 160 | |
VivaPenguinos | 5:5f08974ef8bb | 161 | // PC Variables (Future use) |
VivaPenguinos | 5:5f08974ef8bb | 162 | int IMUPWR = 1; |
VivaPenguinos | 5:5f08974ef8bb | 163 | |
VivaPenguinos | 5:5f08974ef8bb | 164 | // DSKY Variables |
VivaPenguinos | 5:5f08974ef8bb | 165 | int LAUNCHAZ = 0; // LAUNCH AZIMUTH |
VivaPenguinos | 5:5f08974ef8bb | 166 | int R1_COMP; |
VivaPenguinos | 5:5f08974ef8bb | 167 | |
VivaPenguinos | 3:29cff763ae36 | 168 | // Keypad |
VivaPenguinos | 1:24446776f0d2 | 169 | char Keytable[] = { '1', '2', '3', '+', // R0 |
VivaPenguinos | 1:24446776f0d2 | 170 | '4', '5', '6', '-', // R1 |
VivaPenguinos | 1:24446776f0d2 | 171 | '7', '8', '9', 'E', // R2 |
VivaPenguinos | 1:24446776f0d2 | 172 | 'V', '0', 'N', 'R', // R3 |
VivaPenguinos | 1:24446776f0d2 | 173 | }; |
VivaPenguinos | 4:99535d368a9f | 174 | // C0 C1 C2 C3 |
VivaPenguinos | 1:24446776f0d2 | 175 | |
VivaPenguinos | 3:29cff763ae36 | 176 | // RTC Variables |
VivaPenguinos | 3:29cff763ae36 | 177 | int TIME_VALUE = 1397702161; |
VivaPenguinos | 4:99535d368a9f | 178 | int Time_Difference = 0%60; |
VivaPenguinos | 3:29cff763ae36 | 179 | |
VivaPenguinos | 3:29cff763ae36 | 180 | // Button State |
VivaPenguinos | 1:24446776f0d2 | 181 | int32_t Index = -1; // Button |
VivaPenguinos | 1:24446776f0d2 | 182 | int State; |
VivaPenguinos | 0:3ff58b093415 | 183 | |
VivaPenguinos | 0:3ff58b093415 | 184 | // Function Declaration |
VivaPenguinos | 5:5f08974ef8bb | 185 | void Interruption(); |
VivaPenguinos | 1:24446776f0d2 | 186 | void Verb_Button(); |
VivaPenguinos | 1:24446776f0d2 | 187 | void Noun_Button(); |
VivaPenguinos | 1:24446776f0d2 | 188 | void Enter_Button(); |
VivaPenguinos | 1:24446776f0d2 | 189 | void compare(); |
VivaPenguinos | 0:3ff58b093415 | 190 | void blinkAll(int amount, int delay);// Function that Blinks all LED |
VivaPenguinos | 4:99535d368a9f | 191 | void Shift(); // Function that shifts all data |
VivaPenguinos | 5:5f08974ef8bb | 192 | void R_GET(int R); // Grab inputs for Rows |
VivaPenguinos | 5:5f08974ef8bb | 193 | void N_GET(); // Grab inputs for Noun |
VivaPenguinos | 5:5f08974ef8bb | 194 | void NO_Light(int L); // Configures shift registers to 0 |
VivaPenguinos | 5:5f08974ef8bb | 195 | void PreLaunch_Gyrocompassing_Configure(); // For the inputs of the PreLaunch_Gyrocompassing |
VivaPenguinos | 5:5f08974ef8bb | 196 | int Button_Sort(int sort); // Function that sorts Verb Values |
VivaPenguinos | 4:99535d368a9f | 197 | int R_Concatenate(int C); // Used for concatenating information |
VivaPenguinos | 0:3ff58b093415 | 198 | //void ShiftingOut(char myDataOut); |
VivaPenguinos | 0:3ff58b093415 | 199 | |
VivaPenguinos | 3:29cff763ae36 | 200 | // Program Names |
VivaPenguinos | 5:5f08974ef8bb | 201 | void Ground_Elapse_Time(); // Ground Elapse Time |
VivaPenguinos | 5:5f08974ef8bb | 202 | void Test_Lights(); // Test Lights |
VivaPenguinos | 5:5f08974ef8bb | 203 | void GET_Config(); // Configures Ground Elapse Time |
VivaPenguinos | 5:5f08974ef8bb | 204 | void CMC_Idle(); // P00 - CMC Idling Program |
VivaPenguinos | 5:5f08974ef8bb | 205 | void PreLaunch_Initialization(); // P01 - Prelaunch - Initialization Program |
VivaPenguinos | 5:5f08974ef8bb | 206 | void PreLaunch_Gyrocompassing(); // P02 - Prelaunch - Gyrocompassing Program |
VivaPenguinos | 5:5f08974ef8bb | 207 | int R1_Component(); // Load Component into R1 |
VivaPenguinos | 1:24446776f0d2 | 208 | |
VivaPenguinos | 0:3ff58b093415 | 209 | // Pin modes for each pins |
VivaPenguinos | 3:29cff763ae36 | 210 | DigitalOut LatchPin(PTC6); //Pin for ST_CP of 74HC595 Pin # 12 |
VivaPenguinos | 3:29cff763ae36 | 211 | DigitalOut ClockPin(PTC10); //Pin for SH_CP of 74HC595 Pin # 11 |
VivaPenguinos | 3:29cff763ae36 | 212 | DigitalOut DataPin(PTC11); //Pin for to DS of 74HC595 Pin # 14 |
VivaPenguinos | 0:3ff58b093415 | 213 | |
VivaPenguinos | 5:5f08974ef8bb | 214 | // Indicator Lights |
VivaPenguinos | 5:5f08974ef8bb | 215 | DigitalOut UPLINK_ACTY(PTE5); |
VivaPenguinos | 5:5f08974ef8bb | 216 | DigitalOut NO_ATT(PTE4); |
VivaPenguinos | 5:5f08974ef8bb | 217 | DigitalOut STBY(PTE3); |
VivaPenguinos | 5:5f08974ef8bb | 218 | DigitalOut KEY_REL(PTE2); |
VivaPenguinos | 5:5f08974ef8bb | 219 | DigitalOut OPP_ERR(PTB11); |
VivaPenguinos | 5:5f08974ef8bb | 220 | DigitalOut TEMP(PTB10); |
VivaPenguinos | 5:5f08974ef8bb | 221 | DigitalOut GIMBAL_LOCK(PTB9); |
VivaPenguinos | 5:5f08974ef8bb | 222 | DigitalOut PROG(PTB8); |
VivaPenguinos | 5:5f08974ef8bb | 223 | DigitalOut RESTART(PTC12); |
VivaPenguinos | 5:5f08974ef8bb | 224 | DigitalOut TRACKER(PTC13); |
VivaPenguinos | 5:5f08974ef8bb | 225 | DigitalOut R1_POS(PTC16); |
VivaPenguinos | 5:5f08974ef8bb | 226 | DigitalOut R2_POS(PTC17); |
VivaPenguinos | 5:5f08974ef8bb | 227 | DigitalOut R3_POS(PTA16); |
VivaPenguinos | 5:5f08974ef8bb | 228 | DigitalOut R1_NEG(PTA17); |
VivaPenguinos | 5:5f08974ef8bb | 229 | DigitalOut R2_NEG(PTE31); |
VivaPenguinos | 5:5f08974ef8bb | 230 | DigitalOut R3_NEG(PTD6); |
VivaPenguinos | 5:5f08974ef8bb | 231 | DigitalOut COMP_ACTY(PTD7); |
VivaPenguinos | 5:5f08974ef8bb | 232 | |
VivaPenguinos | 0:3ff58b093415 | 233 | DigitalOut myled(LED1); |
VivaPenguinos | 0:3ff58b093415 | 234 | Serial pc(USBTX, USBRX); // tx, rx Serial Output to PC Enabling this WILL consume resources. Use only for debug |
VivaPenguinos | 1:24446776f0d2 | 235 | |
VivaPenguinos | 4:99535d368a9f | 236 | unsigned concatenate(unsigned x, unsigned y); |
VivaPenguinos | 4:99535d368a9f | 237 | |
VivaPenguinos | 1:24446776f0d2 | 238 | uint32_t cbAfterInput(uint32_t index) |
VivaPenguinos | 1:24446776f0d2 | 239 | { |
VivaPenguinos | 1:24446776f0d2 | 240 | Index = index; |
VivaPenguinos | 1:24446776f0d2 | 241 | return 0; |
VivaPenguinos | 1:24446776f0d2 | 242 | } |
VivaPenguinos | 1:24446776f0d2 | 243 | |
VivaPenguinos | 0:3ff58b093415 | 244 | int main() |
VivaPenguinos | 0:3ff58b093415 | 245 | { |
VivaPenguinos | 4:99535d368a9f | 246 | pc.printf("Initialization...\n"); |
VivaPenguinos | 0:3ff58b093415 | 247 | wait(1); |
VivaPenguinos | 4:99535d368a9f | 248 | pc.printf("Testing shift registers.\n"); |
VivaPenguinos | 0:3ff58b093415 | 249 | blinkAll(4,1); |
VivaPenguinos | 4:99535d368a9f | 250 | pc.printf("Shift Register: PASS \n"); |
VivaPenguinos | 0:3ff58b093415 | 251 | wait(1); |
VivaPenguinos | 4:99535d368a9f | 252 | pc.printf("Energizing keypad\n"); |
VivaPenguinos | 1:24446776f0d2 | 253 | State = 1; |
VivaPenguinos | 1:24446776f0d2 | 254 | // r0 r1 r2 r3 c0 c1 c2 c3 |
VivaPenguinos | 1:24446776f0d2 | 255 | Keypad keypad(PTD4, PTA12, PTD3, PTA5, PTA13, PTD5, PTD0, PTD2, 20); |
VivaPenguinos | 1:24446776f0d2 | 256 | keypad.attach(&cbAfterInput); |
VivaPenguinos | 1:24446776f0d2 | 257 | keypad.start(); // energize the columns c0-c3 of the keypad |
VivaPenguinos | 4:99535d368a9f | 258 | pc.printf("Keypad: PASS \n"); |
VivaPenguinos | 4:99535d368a9f | 259 | pc.printf("Initialize RTC Clock. \n"); |
VivaPenguinos | 4:99535d368a9f | 260 | #ifdef INITIAL_RUN |
VivaPenguinos | 4:99535d368a9f | 261 | clk.set_time(TIME_VALUE); |
VivaPenguinos | 4:99535d368a9f | 262 | #endif |
VivaPenguinos | 4:99535d368a9f | 263 | //char storedByte = clk.recallByte(0); |
VivaPenguinos | 4:99535d368a9f | 264 | //clk.storeByte(0, storedByte + 1); |
VivaPenguinos | 4:99535d368a9f | 265 | pc.printf("RTC: PASS \n"); |
VivaPenguinos | 4:99535d368a9f | 266 | pc.printf("Welcome to DSKY!\n"); |
VivaPenguinos | 1:24446776f0d2 | 267 | while (1) { |
VivaPenguinos | 1:24446776f0d2 | 268 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 269 | if (Index >-1) { |
VivaPenguinos | 1:24446776f0d2 | 270 | pc.printf("Interrupted"); |
VivaPenguinos | 1:24446776f0d2 | 271 | pc.printf("Index:%d => Key:%c\r\n", Index, Keytable[Index]); |
VivaPenguinos | 1:24446776f0d2 | 272 | if (Index == 12) { // Index 12 = Verb Button |
VivaPenguinos | 4:99535d368a9f | 273 | Verb_Button(); // Goes to Verb_Button |
VivaPenguinos | 1:24446776f0d2 | 274 | } |
VivaPenguinos | 1:24446776f0d2 | 275 | if (Index == 14) { // Index 14 = Noun Button |
VivaPenguinos | 1:24446776f0d2 | 276 | Noun_Button(); // Goes to Noun_Button |
VivaPenguinos | 1:24446776f0d2 | 277 | } |
VivaPenguinos | 1:24446776f0d2 | 278 | if (Index == 11) { // Index 11 = Enter Button |
VivaPenguinos | 4:99535d368a9f | 279 | Enter_Button(); // Goes to Enter_Button |
VivaPenguinos | 1:24446776f0d2 | 280 | } |
VivaPenguinos | 1:24446776f0d2 | 281 | Index = -1; |
VivaPenguinos | 1:24446776f0d2 | 282 | } |
VivaPenguinos | 1:24446776f0d2 | 283 | // Debug use only |
VivaPenguinos | 1:24446776f0d2 | 284 | //pc.printf("%c", Keytable[Verb_Number1]); |
VivaPenguinos | 1:24446776f0d2 | 285 | //pc.printf("%c", Keytable[Verb_Number2]); |
VivaPenguinos | 1:24446776f0d2 | 286 | //pc.printf("%c", Keytable[Noun_Number1]); |
VivaPenguinos | 1:24446776f0d2 | 287 | //pc.printf("%c", Keytable[Noun_Number2]); |
VivaPenguinos | 0:3ff58b093415 | 288 | } |
VivaPenguinos | 1:24446776f0d2 | 289 | } |
VivaPenguinos | 1:24446776f0d2 | 290 | |
VivaPenguinos | 5:5f08974ef8bb | 291 | void Interruption() |
VivaPenguinos | 5:5f08974ef8bb | 292 | { |
VivaPenguinos | 5:5f08974ef8bb | 293 | pc.printf("Interrupted"); |
VivaPenguinos | 5:5f08974ef8bb | 294 | pc.printf("Index:%d => Key:%c\r\n", Index, Keytable[Index]); |
VivaPenguinos | 5:5f08974ef8bb | 295 | if (Index == 12) { // Index 12 = Verb Button |
VivaPenguinos | 5:5f08974ef8bb | 296 | Verb_Button(); // Goes to Verb_Button |
VivaPenguinos | 5:5f08974ef8bb | 297 | } |
VivaPenguinos | 5:5f08974ef8bb | 298 | if (Index == 14) { // Index 14 = Noun Button |
VivaPenguinos | 5:5f08974ef8bb | 299 | Noun_Button(); // Goes to Noun_Button |
VivaPenguinos | 5:5f08974ef8bb | 300 | } |
VivaPenguinos | 5:5f08974ef8bb | 301 | if (Index == 11) { // Index 11 = Enter Button |
VivaPenguinos | 5:5f08974ef8bb | 302 | Enter_Button(); // Goes to Enter_Button |
VivaPenguinos | 5:5f08974ef8bb | 303 | } |
VivaPenguinos | 5:5f08974ef8bb | 304 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 305 | } |
VivaPenguinos | 5:5f08974ef8bb | 306 | |
VivaPenguinos | 1:24446776f0d2 | 307 | /* 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 | 308 | If other buttons are pressed send it to their perspective locations. |
VivaPenguinos | 1:24446776f0d2 | 309 | */ |
VivaPenguinos | 1:24446776f0d2 | 310 | void Verb_Button(){ |
VivaPenguinos | 1:24446776f0d2 | 311 | Verbz: // Don't Ask |
VivaPenguinos | 1:24446776f0d2 | 312 | // All Variables for Verb, Noun and Enter are zeroed out |
VivaPenguinos | 4:99535d368a9f | 313 | Verb_Number1 = 0; |
VivaPenguinos | 4:99535d368a9f | 314 | Verb_Number2 = 0; |
VivaPenguinos | 4:99535d368a9f | 315 | Noun_Number1 = 0; |
VivaPenguinos | 4:99535d368a9f | 316 | Noun_Number2 = 0; |
VivaPenguinos | 4:99535d368a9f | 317 | Enter_Number1 = 0; |
VivaPenguinos | 4:99535d368a9f | 318 | Enter_Number2 = 0; |
VivaPenguinos | 1:24446776f0d2 | 319 | pc.printf("Please enter a Verb Number"); |
VivaPenguinos | 1:24446776f0d2 | 320 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 321 | Verb_Number1 = Index; |
VivaPenguinos | 1:24446776f0d2 | 322 | 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 | 323 | goto Verbz; // Line 110 |
VivaPenguinos | 4:99535d368a9f | 324 | } else { |
VivaPenguinos | 4:99535d368a9f | 325 | V_A = Button_Sort(Verb_Number1); |
VivaPenguinos | 4:99535d368a9f | 326 | Shift(); |
VivaPenguinos | 1:24446776f0d2 | 327 | } |
VivaPenguinos | 1:24446776f0d2 | 328 | //pc.printf("%c", Verb_Number1); |
VivaPenguinos | 1:24446776f0d2 | 329 | //pc.printf("%c", Keytable[Index]); |
VivaPenguinos | 1:24446776f0d2 | 330 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 331 | Verb_Number2 = Index; |
VivaPenguinos | 4:99535d368a9f | 332 | V_B = Button_Sort(Verb_Number2); |
VivaPenguinos | 4:99535d368a9f | 333 | Shift(); |
VivaPenguinos | 1:24446776f0d2 | 334 | //pc.printf("%c", Verb_Number2); |
VivaPenguinos | 1:24446776f0d2 | 335 | //pc.printf("%c", Verb_Number1); |
VivaPenguinos | 1:24446776f0d2 | 336 | //pc.printf("%c\n", Verb_Number2); |
VivaPenguinos | 0:3ff58b093415 | 337 | } |
VivaPenguinos | 1:24446776f0d2 | 338 | |
VivaPenguinos | 1:24446776f0d2 | 339 | /* 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 | 340 | If other buttons are pressed send it to their perspective locations. |
VivaPenguinos | 1:24446776f0d2 | 341 | */ |
VivaPenguinos | 1:24446776f0d2 | 342 | void Noun_Button() |
VivaPenguinos | 1:24446776f0d2 | 343 | { |
VivaPenguinos | 1:24446776f0d2 | 344 | Nounz: |
VivaPenguinos | 1:24446776f0d2 | 345 | pc.printf("Please enter a Noun Number"); |
VivaPenguinos | 1:24446776f0d2 | 346 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 347 | Noun_Number1 = Index; |
VivaPenguinos | 1:24446776f0d2 | 348 | 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 | 4:99535d368a9f | 349 | goto Nounz; |
VivaPenguinos | 0:3ff58b093415 | 350 | } |
VivaPenguinos | 1:24446776f0d2 | 351 | else{ |
VivaPenguinos | 4:99535d368a9f | 352 | N_A = Button_Sort(Noun_Number1); |
VivaPenguinos | 4:99535d368a9f | 353 | Shift(); |
VivaPenguinos | 0:3ff58b093415 | 354 | } |
VivaPenguinos | 1:24446776f0d2 | 355 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 356 | Noun_Number2 = Index; |
VivaPenguinos | 4:99535d368a9f | 357 | N_B = Button_Sort(Noun_Number2); |
VivaPenguinos | 4:99535d368a9f | 358 | Shift(); |
VivaPenguinos | 1:24446776f0d2 | 359 | } |
VivaPenguinos | 1:24446776f0d2 | 360 | |
VivaPenguinos | 1:24446776f0d2 | 361 | /* 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 | 362 | */ |
VivaPenguinos | 1:24446776f0d2 | 363 | void Enter_Button() |
VivaPenguinos | 1:24446776f0d2 | 364 | { |
VivaPenguinos | 1:24446776f0d2 | 365 | Enterz: |
VivaPenguinos | 4:99535d368a9f | 366 | pc.printf("Checking Whether there is a variable stored in Noun or Verb 35\n"); |
VivaPenguinos | 5:5f08974ef8bb | 367 | if (Noun_Number1 == 0 && Noun_Number2 == 0 && Verb_Number1 != 2 && Verb_Number2 != 5){ // N00V35 // Test Lights |
VivaPenguinos | 1:24446776f0d2 | 368 | pc.printf("Please enter a Enter Number"); |
VivaPenguinos | 1:24446776f0d2 | 369 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 370 | Enter_Number1 = Index; |
VivaPenguinos | 1:24446776f0d2 | 371 | 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 | 372 | goto Enterz; |
VivaPenguinos | 1:24446776f0d2 | 373 | } |
VivaPenguinos | 1:24446776f0d2 | 374 | else{ |
VivaPenguinos | 1:24446776f0d2 | 375 | Button_Sort(Enter_Number1); |
VivaPenguinos | 1:24446776f0d2 | 376 | } |
VivaPenguinos | 1:24446776f0d2 | 377 | __wfi(); |
VivaPenguinos | 1:24446776f0d2 | 378 | Enter_Number2 = Index; |
VivaPenguinos | 1:24446776f0d2 | 379 | Button_Sort(Enter_Number2); |
VivaPenguinos | 1:24446776f0d2 | 380 | } |
VivaPenguinos | 5:5f08974ef8bb | 381 | // This is for P01 |
VivaPenguinos | 5:5f08974ef8bb | 382 | else if(Noun_Number1 == 0 && Noun_Number2 == 0 && Verb_Number1 == 2 && Verb_Number2 == 8){ //N00V37 |
VivaPenguinos | 5:5f08974ef8bb | 383 | pc.printf("This is the P01\n"); |
VivaPenguinos | 5:5f08974ef8bb | 384 | pc.printf("Please enter a Enter Number\n"); |
VivaPenguinos | 5:5f08974ef8bb | 385 | //Noun_Number1 = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 386 | //Noun_Number2 = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 387 | NO_Light(5); |
VivaPenguinos | 5:5f08974ef8bb | 388 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 389 | do { |
VivaPenguinos | 5:5f08974ef8bb | 390 | N_GET(); |
VivaPenguinos | 5:5f08974ef8bb | 391 | V_A = 0x03; |
VivaPenguinos | 5:5f08974ef8bb | 392 | V_B = 0x07; |
VivaPenguinos | 5:5f08974ef8bb | 393 | N_GET(); |
VivaPenguinos | 5:5f08974ef8bb | 394 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 395 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 396 | N_GET(); |
VivaPenguinos | 5:5f08974ef8bb | 397 | NO_Light(4); // No Light Verb |
VivaPenguinos | 5:5f08974ef8bb | 398 | NO_Light(5); |
VivaPenguinos | 5:5f08974ef8bb | 399 | N_GET(); |
VivaPenguinos | 5:5f08974ef8bb | 400 | NO_Light(5); |
VivaPenguinos | 5:5f08974ef8bb | 401 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 402 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 403 | } while (N_Position != 3); |
VivaPenguinos | 5:5f08974ef8bb | 404 | V_A = 3; |
VivaPenguinos | 5:5f08974ef8bb | 405 | V_B = 7; |
VivaPenguinos | 5:5f08974ef8bb | 406 | N_A = Enter_Number1; |
VivaPenguinos | 5:5f08974ef8bb | 407 | N_B = Enter_Number2; |
VivaPenguinos | 5:5f08974ef8bb | 408 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 409 | compare(); |
VivaPenguinos | 5:5f08974ef8bb | 410 | pc.printf("Out of P01, Waiting for Orders\n"); |
VivaPenguinos | 5:5f08974ef8bb | 411 | // pc.printf("V1 %d \n", Verb_Number1); |
VivaPenguinos | 5:5f08974ef8bb | 412 | // pc.printf("V2 %d \n", Verb_Number2); |
VivaPenguinos | 5:5f08974ef8bb | 413 | // pc.printf("N1 %d \n", Noun_Number1); |
VivaPenguinos | 5:5f08974ef8bb | 414 | // pc.printf("N2 %d \n", Noun_Number2); |
VivaPenguinos | 5:5f08974ef8bb | 415 | // pc.printf("E1 %d \n", Enter_Number1); |
VivaPenguinos | 5:5f08974ef8bb | 416 | // pc.printf("E2 %d \n", Enter_Number2); |
VivaPenguinos | 5:5f08974ef8bb | 417 | N_Position = 1; |
VivaPenguinos | 5:5f08974ef8bb | 418 | __wfi(); |
VivaPenguinos | 5:5f08974ef8bb | 419 | if (Index == 11) { // 11 = Enter Button |
VivaPenguinos | 5:5f08974ef8bb | 420 | pc.printf("Compare\n"); |
VivaPenguinos | 5:5f08974ef8bb | 421 | compare(); |
VivaPenguinos | 5:5f08974ef8bb | 422 | } |
VivaPenguinos | 5:5f08974ef8bb | 423 | else if (Index == 14) { |
VivaPenguinos | 5:5f08974ef8bb | 424 | Noun_Button(); |
VivaPenguinos | 5:5f08974ef8bb | 425 | } |
VivaPenguinos | 5:5f08974ef8bb | 426 | else if (Index == 12) { |
VivaPenguinos | 5:5f08974ef8bb | 427 | Verb_Button(); |
VivaPenguinos | 5:5f08974ef8bb | 428 | } |
VivaPenguinos | 5:5f08974ef8bb | 429 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 430 | } |
VivaPenguinos | 4:99535d368a9f | 431 | else {// (Noun_Number1 != 0 && Noun_Number2 != 0){ |
VivaPenguinos | 1:24446776f0d2 | 432 | pc.printf("Check completed, Executing"); |
VivaPenguinos | 4:99535d368a9f | 433 | Index = -1; |
VivaPenguinos | 1:24446776f0d2 | 434 | compare(); |
VivaPenguinos | 1:24446776f0d2 | 435 | } |
VivaPenguinos | 1:24446776f0d2 | 436 | |
VivaPenguinos | 1:24446776f0d2 | 437 | } |
VivaPenguinos | 1:24446776f0d2 | 438 | |
VivaPenguinos | 1:24446776f0d2 | 439 | // This function is used to sort the button press for Verb and Noun. |
VivaPenguinos | 4:99535d368a9f | 440 | int Button_Sort(int Sort) |
VivaPenguinos | 1:24446776f0d2 | 441 | { |
VivaPenguinos | 4:99535d368a9f | 442 | if (Sort == 0){ // Index 0 - Char 1 |
VivaPenguinos | 4:99535d368a9f | 443 | return 0x01; |
VivaPenguinos | 1:24446776f0d2 | 444 | } |
VivaPenguinos | 4:99535d368a9f | 445 | else if (Sort == 1) { // Index 1 - Char 2 |
VivaPenguinos | 4:99535d368a9f | 446 | return 0x02; |
VivaPenguinos | 1:24446776f0d2 | 447 | } |
VivaPenguinos | 4:99535d368a9f | 448 | else if (Sort == 2) { // Index 2 - Char 3 |
VivaPenguinos | 4:99535d368a9f | 449 | return 0x03; |
VivaPenguinos | 4:99535d368a9f | 450 | } |
VivaPenguinos | 4:99535d368a9f | 451 | else if (Sort == 3) { // Index 3 - Char + comparing the array number NOT what value in the array it is. Actual Array value is + |
VivaPenguinos | 1:24446776f0d2 | 452 | pc.printf("+"); |
VivaPenguinos | 5:5f08974ef8bb | 453 | return 0x10; |
VivaPenguinos | 1:24446776f0d2 | 454 | } |
VivaPenguinos | 4:99535d368a9f | 455 | else if (Sort == 4) { // Index 4 - Char 4 |
VivaPenguinos | 4:99535d368a9f | 456 | return 0x04; |
VivaPenguinos | 4:99535d368a9f | 457 | } |
VivaPenguinos | 4:99535d368a9f | 458 | else if (Sort == 5) { // Index 5 - Char 5 |
VivaPenguinos | 4:99535d368a9f | 459 | return 0x05; |
VivaPenguinos | 4:99535d368a9f | 460 | } |
VivaPenguinos | 4:99535d368a9f | 461 | else if (Sort == 6) { // Index 6 - Char 6 |
VivaPenguinos | 4:99535d368a9f | 462 | return 0x06; |
VivaPenguinos | 4:99535d368a9f | 463 | } |
VivaPenguinos | 4:99535d368a9f | 464 | else if (Sort == 7) { // Index 7 - Char - comparing the array number NOT what value in the array it is. Actual Array value is - |
VivaPenguinos | 1:24446776f0d2 | 465 | pc.printf("-"); |
VivaPenguinos | 5:5f08974ef8bb | 466 | return 0x11; |
VivaPenguinos | 1:24446776f0d2 | 467 | } |
VivaPenguinos | 4:99535d368a9f | 468 | else if (Sort == 8) { // Index 8 - Char 7 |
VivaPenguinos | 4:99535d368a9f | 469 | return 0x07; |
VivaPenguinos | 4:99535d368a9f | 470 | } |
VivaPenguinos | 4:99535d368a9f | 471 | else if (Sort == 9) { // Index 9 - Char 8 |
VivaPenguinos | 4:99535d368a9f | 472 | return 0x08; |
VivaPenguinos | 4:99535d368a9f | 473 | } |
VivaPenguinos | 4:99535d368a9f | 474 | else if (Sort == 10) { // Index 10 - Char 9 |
VivaPenguinos | 4:99535d368a9f | 475 | return 0x09; |
VivaPenguinos | 4:99535d368a9f | 476 | } |
VivaPenguinos | 4:99535d368a9f | 477 | else if (Sort == 12){ // Index 12 - Char V comparing the array number NOT what value in the array it is. Actual Array value is V |
VivaPenguinos | 4:99535d368a9f | 478 | Verb_Button(); |
VivaPenguinos | 4:99535d368a9f | 479 | } |
VivaPenguinos | 4:99535d368a9f | 480 | else if (Sort == 13) { // Index 13 - Char 0 |
VivaPenguinos | 4:99535d368a9f | 481 | return 0x00; |
VivaPenguinos | 4:99535d368a9f | 482 | } |
VivaPenguinos | 4:99535d368a9f | 483 | else if (Sort == 14) { // Index 14 - Char N comparing the array number NOT what value in the array it is. Actual Array value is N |
VivaPenguinos | 4:99535d368a9f | 484 | Noun_Button(); |
VivaPenguinos | 4:99535d368a9f | 485 | } |
VivaPenguinos | 1:24446776f0d2 | 486 | else if (Sort == 15) { //comparing the array number NOT what value in the array it is. Actual Array value is R |
VivaPenguinos | 1:24446776f0d2 | 487 | pc.printf("R"); |
VivaPenguinos | 1:24446776f0d2 | 488 | } |
VivaPenguinos | 4:99535d368a9f | 489 | return 0; |
VivaPenguinos | 1:24446776f0d2 | 490 | } |
VivaPenguinos | 4:99535d368a9f | 491 | |
VivaPenguinos | 1:24446776f0d2 | 492 | // 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 | 493 | void compare() |
VivaPenguinos | 1:24446776f0d2 | 494 | { |
VivaPenguinos | 1:24446776f0d2 | 495 | 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 | 4:99535d368a9f | 496 | // Configure GET |
VivaPenguinos | 4:99535d368a9f | 497 | pc.printf("Display GET"); |
VivaPenguinos | 1:24446776f0d2 | 498 | Ground_Elapse_Time(); |
VivaPenguinos | 4:99535d368a9f | 499 | } else if (Verb_Number1 == 2 && Verb_Number2 == 5 && Noun_Number1 == 0 && Noun_Number2 == 0 && Enter_Number1 == 0 && Enter_Number2 == 0) { // Verb 35 Noun 00 Enter 00 |
VivaPenguinos | 4:99535d368a9f | 500 | // Test Lights |
VivaPenguinos | 4:99535d368a9f | 501 | pc.printf("Testing Lights"); |
VivaPenguinos | 4:99535d368a9f | 502 | Test_Lights(); |
VivaPenguinos | 4:99535d368a9f | 503 | } else if (Verb_Number1 == 1 && Verb_Number2 == 5 && Noun_Number1 == 2 && Noun_Number2 == 6 && Enter_Number1 == 0 && Enter_Number2 == 0) { // Verb 25, Noun 36, Enter 00 |
VivaPenguinos | 4:99535d368a9f | 504 | // GET COnfiguration |
VivaPenguinos | 4:99535d368a9f | 505 | pc.printf("GET configuration"); |
VivaPenguinos | 4:99535d368a9f | 506 | GET_Config(); |
VivaPenguinos | 5:5f08974ef8bb | 507 | } else if (Verb_Number1 == 2 && Verb_Number2 == 8 && Noun_Number1 == 0 && Noun_Number2 == 0 && Enter_Number1 == 0 && Enter_Number2 == 0) { // Verb 37, Noun 00, Enter 00 |
VivaPenguinos | 5:5f08974ef8bb | 508 | // CMC Idling Program |
VivaPenguinos | 5:5f08974ef8bb | 509 | pc.printf("CMC Idling Program"); |
VivaPenguinos | 5:5f08974ef8bb | 510 | CMC_Idle(); |
VivaPenguinos | 5:5f08974ef8bb | 511 | } else if (Verb_Number1 == 2 && Verb_Number2 == 8 && Noun_Number1 == 0 && Noun_Number2 == 0 && Enter_Number1 == 0 && Enter_Number2 == 1) { // Verb 37, Noun 00, Enter 01 |
VivaPenguinos | 5:5f08974ef8bb | 512 | pc.printf("Prelaunch or Service - Initialization Program"); |
VivaPenguinos | 5:5f08974ef8bb | 513 | PreLaunch_Initialization(); |
VivaPenguinos | 5:5f08974ef8bb | 514 | } //else if (Verb_Number1 == 1 && Verb_Number2 == 0 && Noun_Number1 == 0 && Noun_Number2 == 0 && Enter_Number1 == 0 && Enter_Number2 == 0) { // Verb 21, Noun 00, Enter 00 |
VivaPenguinos | 5:5f08974ef8bb | 515 | // R1_Component(); |
VivaPenguinos | 5:5f08974ef8bb | 516 | //} |
VivaPenguinos | 5:5f08974ef8bb | 517 | else { |
VivaPenguinos | 5:5f08974ef8bb | 518 | pc.printf("Failed"); |
VivaPenguinos | 0:3ff58b093415 | 519 | } |
VivaPenguinos | 1:24446776f0d2 | 520 | } |
VivaPenguinos | 0:3ff58b093415 | 521 | |
VivaPenguinos | 1:24446776f0d2 | 522 | void ShiftingOut(int myDataOut) |
VivaPenguinos | 1:24446776f0d2 | 523 | { |
VivaPenguinos | 0:3ff58b093415 | 524 | // This shifts 8 bits out to the MSB first, The the rising edge of the clock, while clock idles low. |
VivaPenguinos | 0:3ff58b093415 | 525 | // Internal Fucntions |
VivaPenguinos | 0:3ff58b093415 | 526 | DataPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 527 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 528 | int i= 0; |
VivaPenguinos | 0:3ff58b093415 | 529 | int pinState; |
VivaPenguinos | 0:3ff58b093415 | 530 | // Clears Everything within shift registers |
VivaPenguinos | 0:3ff58b093415 | 531 | DataPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 532 | ClockPin = 0; |
VivaPenguinos | 1:24446776f0d2 | 533 | |
VivaPenguinos | 4:99535d368a9f | 534 | for (i=3; i>= 0; i--) { |
VivaPenguinos | 0:3ff58b093415 | 535 | ClockPin = 0; |
VivaPenguinos | 1:24446776f0d2 | 536 | |
VivaPenguinos | 0:3ff58b093415 | 537 | // Value passed to my data out |
VivaPenguinos | 0:3ff58b093415 | 538 | if ( myDataOut & (1<<i)) { |
VivaPenguinos | 0:3ff58b093415 | 539 | pinState = 1; |
VivaPenguinos | 0:3ff58b093415 | 540 | myled = 1; |
VivaPenguinos | 4:99535d368a9f | 541 | //pc.printf("1"); |
VivaPenguinos | 1:24446776f0d2 | 542 | } else { |
VivaPenguinos | 0:3ff58b093415 | 543 | pinState = 0; |
VivaPenguinos | 0:3ff58b093415 | 544 | myled = 0; |
VivaPenguinos | 4:99535d368a9f | 545 | //pc.printf("0"); |
VivaPenguinos | 0:3ff58b093415 | 546 | } |
VivaPenguinos | 0:3ff58b093415 | 547 | DataPin = pinState; |
VivaPenguinos | 0:3ff58b093415 | 548 | ClockPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 549 | DataPin = 0; |
VivaPenguinos | 1:24446776f0d2 | 550 | } |
VivaPenguinos | 4:99535d368a9f | 551 | //pc.printf("\n"); |
VivaPenguinos | 0:3ff58b093415 | 552 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 553 | DataPin = 1; |
VivaPenguinos | 1:24446776f0d2 | 554 | } |
VivaPenguinos | 0:3ff58b093415 | 555 | |
VivaPenguinos | 4:99535d368a9f | 556 | // This function is used for shifting all Shift_X variables into the 7 segment display. |
VivaPenguinos | 4:99535d368a9f | 557 | void Shift() |
VivaPenguinos | 4:99535d368a9f | 558 | { |
VivaPenguinos | 4:99535d368a9f | 559 | LatchPin = 0; |
VivaPenguinos | 4:99535d368a9f | 560 | ShiftingOut(P_B); |
VivaPenguinos | 4:99535d368a9f | 561 | ShiftingOut(P_A); |
VivaPenguinos | 4:99535d368a9f | 562 | ShiftingOut(V_B); |
VivaPenguinos | 4:99535d368a9f | 563 | ShiftingOut(V_A); |
VivaPenguinos | 4:99535d368a9f | 564 | ShiftingOut(N_B); |
VivaPenguinos | 4:99535d368a9f | 565 | ShiftingOut(N_A); |
VivaPenguinos | 4:99535d368a9f | 566 | ShiftingOut(R3_E); |
VivaPenguinos | 4:99535d368a9f | 567 | ShiftingOut(R3_D); |
VivaPenguinos | 4:99535d368a9f | 568 | ShiftingOut(R3_C); |
VivaPenguinos | 4:99535d368a9f | 569 | ShiftingOut(R3_B); |
VivaPenguinos | 4:99535d368a9f | 570 | ShiftingOut(R3_A); |
VivaPenguinos | 4:99535d368a9f | 571 | ShiftingOut(R2_E); |
VivaPenguinos | 4:99535d368a9f | 572 | ShiftingOut(R2_D); |
VivaPenguinos | 4:99535d368a9f | 573 | ShiftingOut(R2_C); |
VivaPenguinos | 4:99535d368a9f | 574 | ShiftingOut(R2_B); |
VivaPenguinos | 4:99535d368a9f | 575 | ShiftingOut(R2_A); |
VivaPenguinos | 4:99535d368a9f | 576 | ShiftingOut(R1_E); |
VivaPenguinos | 4:99535d368a9f | 577 | ShiftingOut(R1_D); |
VivaPenguinos | 4:99535d368a9f | 578 | ShiftingOut(R1_C); |
VivaPenguinos | 4:99535d368a9f | 579 | ShiftingOut(R1_B); |
VivaPenguinos | 4:99535d368a9f | 580 | ShiftingOut(R1_A); |
VivaPenguinos | 4:99535d368a9f | 581 | LatchPin = 1; |
VivaPenguinos | 4:99535d368a9f | 582 | } |
VivaPenguinos | 4:99535d368a9f | 583 | |
VivaPenguinos | 1:24446776f0d2 | 584 | //blinks the whole registered based on the number of times you want to blink with a certain delay |
VivaPenguinos | 1:24446776f0d2 | 585 | void blinkAll(int amount, int delay) |
VivaPenguinos | 1:24446776f0d2 | 586 | { |
VivaPenguinos | 4:99535d368a9f | 587 | LatchPin = 0; // Before shift |
VivaPenguinos | 4:99535d368a9f | 588 | //ShiftingOut(0); |
VivaPenguinos | 4:99535d368a9f | 589 | //ShiftingOut(0); |
VivaPenguinos | 4:99535d368a9f | 590 | LatchPin = 1; // Done shift |
VivaPenguinos | 0:3ff58b093415 | 591 | wait(0.2); |
VivaPenguinos | 0:3ff58b093415 | 592 | for (int x = 0; x < amount; x++) { |
VivaPenguinos | 0:3ff58b093415 | 593 | LatchPin = 0; |
VivaPenguinos | 4:99535d368a9f | 594 | pc.printf("sending\n"); |
VivaPenguinos | 4:99535d368a9f | 595 | for (int s = 0; s < 22; s++) |
VivaPenguinos | 4:99535d368a9f | 596 | { |
VivaPenguinos | 4:99535d368a9f | 597 | ShiftingOut(0x08); |
VivaPenguinos | 5:5f08974ef8bb | 598 | UPLINK_ACTY = 1; |
VivaPenguinos | 5:5f08974ef8bb | 599 | NO_ATT = 1; |
VivaPenguinos | 5:5f08974ef8bb | 600 | STBY = 1; |
VivaPenguinos | 5:5f08974ef8bb | 601 | KEY_REL = 1; |
VivaPenguinos | 5:5f08974ef8bb | 602 | OPP_ERR = 1; |
VivaPenguinos | 5:5f08974ef8bb | 603 | TEMP = 1; |
VivaPenguinos | 5:5f08974ef8bb | 604 | GIMBAL_LOCK = 1; |
VivaPenguinos | 5:5f08974ef8bb | 605 | PROG = 1; |
VivaPenguinos | 5:5f08974ef8bb | 606 | RESTART = 1; |
VivaPenguinos | 5:5f08974ef8bb | 607 | TRACKER = 1; |
VivaPenguinos | 5:5f08974ef8bb | 608 | R1_POS = 1; |
VivaPenguinos | 5:5f08974ef8bb | 609 | R2_POS = 1; |
VivaPenguinos | 5:5f08974ef8bb | 610 | R3_POS = 1; |
VivaPenguinos | 5:5f08974ef8bb | 611 | R1_NEG = 1; |
VivaPenguinos | 5:5f08974ef8bb | 612 | R2_NEG = 1; |
VivaPenguinos | 5:5f08974ef8bb | 613 | R3_NEG = 1; |
VivaPenguinos | 5:5f08974ef8bb | 614 | COMP_ACTY = 1; |
VivaPenguinos | 4:99535d368a9f | 615 | } |
VivaPenguinos | 0:3ff58b093415 | 616 | LatchPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 617 | wait(delay); |
VivaPenguinos | 0:3ff58b093415 | 618 | LatchPin = 0; |
VivaPenguinos | 4:99535d368a9f | 619 | for (int s = 0; s < 22; s++) |
VivaPenguinos | 4:99535d368a9f | 620 | { |
VivaPenguinos | 5:5f08974ef8bb | 621 | ShiftingOut(0x0f); |
VivaPenguinos | 5:5f08974ef8bb | 622 | UPLINK_ACTY = 0; |
VivaPenguinos | 5:5f08974ef8bb | 623 | NO_ATT = 0; |
VivaPenguinos | 5:5f08974ef8bb | 624 | STBY = 0; |
VivaPenguinos | 5:5f08974ef8bb | 625 | KEY_REL = 0; |
VivaPenguinos | 5:5f08974ef8bb | 626 | OPP_ERR = 0; |
VivaPenguinos | 5:5f08974ef8bb | 627 | TEMP = 0; |
VivaPenguinos | 5:5f08974ef8bb | 628 | GIMBAL_LOCK = 0; |
VivaPenguinos | 5:5f08974ef8bb | 629 | PROG = 0; |
VivaPenguinos | 5:5f08974ef8bb | 630 | RESTART = 0; |
VivaPenguinos | 5:5f08974ef8bb | 631 | TRACKER = 0; |
VivaPenguinos | 5:5f08974ef8bb | 632 | R1_POS = 0; |
VivaPenguinos | 5:5f08974ef8bb | 633 | R2_POS = 0; |
VivaPenguinos | 5:5f08974ef8bb | 634 | R3_POS = 0; |
VivaPenguinos | 5:5f08974ef8bb | 635 | R1_NEG = 0; |
VivaPenguinos | 5:5f08974ef8bb | 636 | R2_NEG = 0; |
VivaPenguinos | 5:5f08974ef8bb | 637 | R3_NEG = 0; |
VivaPenguinos | 5:5f08974ef8bb | 638 | COMP_ACTY = 0; |
VivaPenguinos | 4:99535d368a9f | 639 | } |
VivaPenguinos | 0:3ff58b093415 | 640 | LatchPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 641 | wait(delay); |
VivaPenguinos | 1:24446776f0d2 | 642 | } |
VivaPenguinos | 1:24446776f0d2 | 643 | } |
VivaPenguinos | 1:24446776f0d2 | 644 | |
VivaPenguinos | 4:99535d368a9f | 645 | // The Ground Elapse Time is refrence to range zero or the last integeral before liftoff. |
VivaPenguinos | 4:99535d368a9f | 646 | // Page CM-9 |
VivaPenguinos | 4:99535d368a9f | 647 | // 00XXX h |
VivaPenguinos | 4:99535d368a9f | 648 | // 000XX min |
VivaPenguinos | 4:99535d368a9f | 649 | // 0XX.XX s (Code current does not follow this format) |
VivaPenguinos | 1:24446776f0d2 | 650 | void Ground_Elapse_Time() |
VivaPenguinos | 1:24446776f0d2 | 651 | { |
VivaPenguinos | 4:99535d368a9f | 652 | NO_Light(7); // Clears all the 7 Segment first. |
VivaPenguinos | 4:99535d368a9f | 653 | // Displays V16N36 on the 7 segments |
VivaPenguinos | 4:99535d368a9f | 654 | V_A = 0x01; |
VivaPenguinos | 4:99535d368a9f | 655 | V_B = 0x06; |
VivaPenguinos | 4:99535d368a9f | 656 | N_A = 0x03; |
VivaPenguinos | 4:99535d368a9f | 657 | N_B = 0x06; |
VivaPenguinos | 4:99535d368a9f | 658 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 659 | int GET_FLAG = 1; |
VivaPenguinos | 4:99535d368a9f | 660 | while(GET_FLAG == 1) { |
VivaPenguinos | 4:99535d368a9f | 661 | int minute = 0; |
VivaPenguinos | 4:99535d368a9f | 662 | int Seconds = 0; |
VivaPenguinos | 4:99535d368a9f | 663 | int Hours = 0; |
VivaPenguinos | 4:99535d368a9f | 664 | int minutemod = 0; // Minute Modulo |
VivaPenguinos | 4:99535d368a9f | 665 | int R1D = 0x00; |
VivaPenguinos | 4:99535d368a9f | 666 | int R1E = 0x00; |
VivaPenguinos | 4:99535d368a9f | 667 | int R2D = 0x00; |
VivaPenguinos | 4:99535d368a9f | 668 | int R2E = 0x00; |
VivaPenguinos | 4:99535d368a9f | 669 | int R3D = 0x00; |
VivaPenguinos | 4:99535d368a9f | 670 | int R3E = 0x00; |
VivaPenguinos | 4:99535d368a9f | 671 | time_t seconds = clk.time(NULL); |
VivaPenguinos | 4:99535d368a9f | 672 | pc.printf ("S = %d\n", seconds); |
VivaPenguinos | 4:99535d368a9f | 673 | Time_Difference = (seconds + GET_Config_Time) - TIME_VALUE; |
VivaPenguinos | 4:99535d368a9f | 674 | printf("TIME=%d \n", Time_Difference); // Displays time elapsed based on seconds elapsed. |
VivaPenguinos | 4:99535d368a9f | 675 | Hours = Time_Difference/3600; // Divide seconds by 3600 seconds |
VivaPenguinos | 4:99535d368a9f | 676 | Seconds = Time_Difference%60; // Get the remainder of time difference after 60 seconds |
VivaPenguinos | 4:99535d368a9f | 677 | minute = Time_Difference/60; // Divide the seconds by 3600 |
VivaPenguinos | 4:99535d368a9f | 678 | // Comments: 7 Segments Location |
VivaPenguinos | 4:99535d368a9f | 679 | minutemod = minute%60; // Get the remainder of the minutemod after 60 seconds |
VivaPenguinos | 4:99535d368a9f | 680 | R3D = (Hours%60)/10; // Get the modulo of the hour variable then divde by 10 to get single digit [][][][x][] |
VivaPenguinos | 4:99535d368a9f | 681 | R3E = Hours%10; // Get the modulo of the Hours variable by 10 to get single digit [][][][][x] |
VivaPenguinos | 4:99535d368a9f | 682 | R2D = minutemod/10; // Divide the minute variable by 10 to get single digit [][][][x][] |
VivaPenguinos | 4:99535d368a9f | 683 | R2E = minute%10; // Get the remainder of the minute variable to get single digit [][][][][x] |
VivaPenguinos | 4:99535d368a9f | 684 | R1D = Seconds/10; // Divide the seconds variable by 10 to get single digit [][][][x][] |
VivaPenguinos | 4:99535d368a9f | 685 | R1E = Time_Difference%10; // Get the remainder of the Time_Difference to get single digit [][][][][x] |
VivaPenguinos | 4:99535d368a9f | 686 | // Debug Use: |
VivaPenguinos | 4:99535d368a9f | 687 | // pc.printf("%d \n", minute); |
VivaPenguinos | 4:99535d368a9f | 688 | // pc.printf("%o \n", R2E); |
VivaPenguinos | 4:99535d368a9f | 689 | // pc.printf("%o \n", R2D); |
VivaPenguinos | 4:99535d368a9f | 690 | R3_E = R3E; |
VivaPenguinos | 4:99535d368a9f | 691 | R3_D = R3D; |
VivaPenguinos | 4:99535d368a9f | 692 | R1_E = R1E; |
VivaPenguinos | 4:99535d368a9f | 693 | R1_D = R1D; |
VivaPenguinos | 4:99535d368a9f | 694 | R2_E = R2E; |
VivaPenguinos | 4:99535d368a9f | 695 | R2_D = R2D; |
VivaPenguinos | 4:99535d368a9f | 696 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 697 | //pc.printf("%i \n",(Time_Difference%10) + ((Time_Difference/10)<<4)); // Decimal to BCD |
VivaPenguinos | 4:99535d368a9f | 698 | //printf("Time as a basic string = %s\r", ctime(&seconds)); |
VivaPenguinos | 4:99535d368a9f | 699 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 700 | GET_FLAG = 0; |
VivaPenguinos | 4:99535d368a9f | 701 | pc.printf("Interrupted"); |
VivaPenguinos | 4:99535d368a9f | 702 | pc.printf("Index:%d => Key:%c\r\n", Index, Keytable[Index]); |
VivaPenguinos | 4:99535d368a9f | 703 | if (Index == 12) { // Index 12 = Verb Button |
VivaPenguinos | 4:99535d368a9f | 704 | Verb_Button(); // Goes to Verb_Button |
VivaPenguinos | 4:99535d368a9f | 705 | GET_FLAG = 0; |
VivaPenguinos | 4:99535d368a9f | 706 | break; |
VivaPenguinos | 4:99535d368a9f | 707 | } else if (Index == 14) { // Index 14 = Noun Button |
VivaPenguinos | 4:99535d368a9f | 708 | Noun_Button(); // Goes to Noun_Button |
VivaPenguinos | 4:99535d368a9f | 709 | GET_FLAG = 0; |
VivaPenguinos | 4:99535d368a9f | 710 | break; |
VivaPenguinos | 4:99535d368a9f | 711 | } else if (Index == 11) { // Index 11 = Enter Button |
VivaPenguinos | 4:99535d368a9f | 712 | Enter_Button(); // Goes to Enter_Button |
VivaPenguinos | 4:99535d368a9f | 713 | GET_FLAG = 0; |
VivaPenguinos | 4:99535d368a9f | 714 | break; |
VivaPenguinos | 4:99535d368a9f | 715 | } |
VivaPenguinos | 4:99535d368a9f | 716 | Index = -1; |
VivaPenguinos | 4:99535d368a9f | 717 | GET_FLAG = 0; |
VivaPenguinos | 4:99535d368a9f | 718 | break; |
VivaPenguinos | 4:99535d368a9f | 719 | } |
VivaPenguinos | 4:99535d368a9f | 720 | wait(1); |
VivaPenguinos | 4:99535d368a9f | 721 | } |
VivaPenguinos | 4:99535d368a9f | 722 | } |
VivaPenguinos | 4:99535d368a9f | 723 | |
VivaPenguinos | 4:99535d368a9f | 724 | // This function tells the shift registers to not display anything on the 7 segments. The integer L is used to specificy which area to zero. |
VivaPenguinos | 4:99535d368a9f | 725 | // 1 = Row 1 |
VivaPenguinos | 4:99535d368a9f | 726 | // 2 = Row 2 |
VivaPenguinos | 4:99535d368a9f | 727 | // 3 = Row 3 |
VivaPenguinos | 4:99535d368a9f | 728 | // 4 = Verb |
VivaPenguinos | 4:99535d368a9f | 729 | // 5 = Nouns |
VivaPenguinos | 4:99535d368a9f | 730 | // 6 = Program Number |
VivaPenguinos | 4:99535d368a9f | 731 | // 7 = All lights off |
VivaPenguinos | 4:99535d368a9f | 732 | void NO_Light(int L) |
VivaPenguinos | 4:99535d368a9f | 733 | { |
VivaPenguinos | 4:99535d368a9f | 734 | |
VivaPenguinos | 4:99535d368a9f | 735 | switch(L) { |
VivaPenguinos | 4:99535d368a9f | 736 | case 1: |
VivaPenguinos | 4:99535d368a9f | 737 | R1_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 738 | R1_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 739 | R1_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 740 | R1_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 741 | R1_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 742 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 743 | case 2: |
VivaPenguinos | 4:99535d368a9f | 744 | R2_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 745 | R2_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 746 | R2_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 747 | R2_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 748 | R2_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 749 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 750 | case 3: |
VivaPenguinos | 4:99535d368a9f | 751 | R3_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 752 | R3_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 753 | R3_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 754 | R3_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 755 | R3_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 756 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 757 | case 4: |
VivaPenguinos | 4:99535d368a9f | 758 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 759 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 760 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 761 | case 5: |
VivaPenguinos | 4:99535d368a9f | 762 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 763 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 764 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 765 | case 6: |
VivaPenguinos | 4:99535d368a9f | 766 | P_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 767 | P_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 768 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 769 | case 7: |
VivaPenguinos | 4:99535d368a9f | 770 | R1_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 771 | R1_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 772 | R1_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 773 | R1_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 774 | R1_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 775 | R2_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 776 | R2_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 777 | R2_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 778 | R2_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 779 | R2_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 780 | R3_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 781 | R3_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 782 | R3_C = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 783 | R3_D = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 784 | R3_E = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 785 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 786 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 787 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 788 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 789 | P_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 790 | P_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 791 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 792 | } |
VivaPenguinos | 4:99535d368a9f | 793 | } |
VivaPenguinos | 4:99535d368a9f | 794 | |
VivaPenguinos | 4:99535d368a9f | 795 | // Test lights is to make sure all the 7 segments and indicator lights worked prior to lift-off. |
VivaPenguinos | 4:99535d368a9f | 796 | void Test_Lights() |
VivaPenguinos | 4:99535d368a9f | 797 | { |
VivaPenguinos | 4:99535d368a9f | 798 | for(int x = 0; x < 7; x++) { |
VivaPenguinos | 4:99535d368a9f | 799 | R1_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 800 | R1_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 801 | R1_C = 0x08; |
VivaPenguinos | 4:99535d368a9f | 802 | R1_D = 0x08; |
VivaPenguinos | 4:99535d368a9f | 803 | R1_E = 0x08; |
VivaPenguinos | 4:99535d368a9f | 804 | R2_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 805 | R2_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 806 | R2_C = 0x08; |
VivaPenguinos | 4:99535d368a9f | 807 | R2_D = 0x08; |
VivaPenguinos | 4:99535d368a9f | 808 | R2_E = 0x08; |
VivaPenguinos | 4:99535d368a9f | 809 | R3_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 810 | R3_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 811 | R3_C = 0x08; |
VivaPenguinos | 4:99535d368a9f | 812 | R3_D = 0x08; |
VivaPenguinos | 4:99535d368a9f | 813 | R3_E = 0x08; |
VivaPenguinos | 4:99535d368a9f | 814 | V_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 815 | V_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 816 | N_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 817 | N_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 818 | P_A = 0x08; |
VivaPenguinos | 4:99535d368a9f | 819 | P_B = 0x08; |
VivaPenguinos | 4:99535d368a9f | 820 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 821 | wait(1); |
VivaPenguinos | 4:99535d368a9f | 822 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 823 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 824 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 825 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 826 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 827 | wait(1); |
VivaPenguinos | 4:99535d368a9f | 828 | } |
VivaPenguinos | 4:99535d368a9f | 829 | } |
VivaPenguinos | 4:99535d368a9f | 830 | |
VivaPenguinos | 4:99535d368a9f | 831 | // This configs the Ground Elapse Time |
VivaPenguinos | 4:99535d368a9f | 832 | // This portion of code converts the value retrived into seconds and replaces the value in the RTC module. |
VivaPenguinos | 4:99535d368a9f | 833 | // Process: |
VivaPenguinos | 4:99535d368a9f | 834 | // V25N36 |
VivaPenguinos | 4:99535d368a9f | 835 | // Displays V21N36 |
VivaPenguinos | 4:99535d368a9f | 836 | // +-00XXX 750 hours max (equates to 31.25 days) Longest Apollo mission was only 12 hours, 13 hours. So 750 Hours is more than enough. |
VivaPenguinos | 4:99535d368a9f | 837 | // Displays V22N36 |
VivaPenguinos | 4:99535d368a9f | 838 | // +-000XX 60 Minutes Max |
VivaPenguinos | 4:99535d368a9f | 839 | // Displays V23N36 |
VivaPenguinos | 4:99535d368a9f | 840 | // +-0XXXX 60 Seconds Max, Currently follows 000XX will change in future revisions |
VivaPenguinos | 4:99535d368a9f | 841 | void GET_Config() |
VivaPenguinos | 4:99535d368a9f | 842 | { |
VivaPenguinos | 4:99535d368a9f | 843 | int GET_Hours = 0; |
VivaPenguinos | 4:99535d368a9f | 844 | int GET_Minute = 0; |
VivaPenguinos | 4:99535d368a9f | 845 | int GET_Seconds = 0; |
VivaPenguinos | 4:99535d368a9f | 846 | // Configures Hours, Minutes, and Seconds for RTC |
VivaPenguinos | 4:99535d368a9f | 847 | NO_Light(3); |
VivaPenguinos | 4:99535d368a9f | 848 | do { |
VivaPenguinos | 4:99535d368a9f | 849 | NO_Light(3); |
VivaPenguinos | 4:99535d368a9f | 850 | pc.printf("Debug"); |
VivaPenguinos | 4:99535d368a9f | 851 | R_GET(3); |
VivaPenguinos | 4:99535d368a9f | 852 | V_A = 0x02; |
VivaPenguinos | 4:99535d368a9f | 853 | V_B = 0x01; |
VivaPenguinos | 4:99535d368a9f | 854 | N_A = 0x03; |
VivaPenguinos | 4:99535d368a9f | 855 | N_B = 0x06; |
VivaPenguinos | 4:99535d368a9f | 856 | R_GET(3); |
VivaPenguinos | 4:99535d368a9f | 857 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 858 | wait(.5); |
VivaPenguinos | 4:99535d368a9f | 859 | R_GET(3); |
VivaPenguinos | 4:99535d368a9f | 860 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 861 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 862 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 863 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 864 | R_GET(3); |
VivaPenguinos | 4:99535d368a9f | 865 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 866 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 867 | } while (R3_Position != 7); |
VivaPenguinos | 4:99535d368a9f | 868 | R_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 869 | RVA = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 870 | RVB = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 871 | RVC = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 872 | RVD = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 873 | RVE = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 874 | do { |
VivaPenguinos | 4:99535d368a9f | 875 | pc.printf("Debug R2"); |
VivaPenguinos | 4:99535d368a9f | 876 | R_GET(2); |
VivaPenguinos | 4:99535d368a9f | 877 | V_A = 0x02; |
VivaPenguinos | 4:99535d368a9f | 878 | V_B = 0x02; |
VivaPenguinos | 4:99535d368a9f | 879 | N_A = 0x03; |
VivaPenguinos | 4:99535d368a9f | 880 | N_B = 0x06; |
VivaPenguinos | 4:99535d368a9f | 881 | R_GET(2); |
VivaPenguinos | 4:99535d368a9f | 882 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 883 | wait(.5); |
VivaPenguinos | 4:99535d368a9f | 884 | R_GET(2); |
VivaPenguinos | 4:99535d368a9f | 885 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 886 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 887 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 888 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 889 | R_GET(2); |
VivaPenguinos | 4:99535d368a9f | 890 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 891 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 892 | } while(R2_Position != 7); |
VivaPenguinos | 4:99535d368a9f | 893 | R_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 894 | RVA = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 895 | RVB = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 896 | RVC = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 897 | RVD = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 898 | RVE = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 899 | do { |
VivaPenguinos | 4:99535d368a9f | 900 | pc.printf("Debug R1"); |
VivaPenguinos | 4:99535d368a9f | 901 | R_GET(1); |
VivaPenguinos | 4:99535d368a9f | 902 | V_A = 0x02; |
VivaPenguinos | 4:99535d368a9f | 903 | V_B = 0x03; |
VivaPenguinos | 4:99535d368a9f | 904 | N_A = 0x03; |
VivaPenguinos | 4:99535d368a9f | 905 | N_B = 0x06; |
VivaPenguinos | 4:99535d368a9f | 906 | R_GET(1); |
VivaPenguinos | 4:99535d368a9f | 907 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 908 | wait(.5); |
VivaPenguinos | 4:99535d368a9f | 909 | R_GET(1); |
VivaPenguinos | 4:99535d368a9f | 910 | V_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 911 | V_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 912 | N_A = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 913 | N_B = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 914 | R_GET(1); |
VivaPenguinos | 4:99535d368a9f | 915 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 916 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 917 | } while(R1_Position != 7); |
VivaPenguinos | 4:99535d368a9f | 918 | R_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 919 | RVA = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 920 | RVB = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 921 | RVC = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 922 | RVD = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 923 | RVE = 0x0f; |
VivaPenguinos | 4:99535d368a9f | 924 | |
VivaPenguinos | 4:99535d368a9f | 925 | // The Actual Configuration of GET |
VivaPenguinos | 4:99535d368a9f | 926 | // Concatenate the values from each row based on it's value |
VivaPenguinos | 4:99535d368a9f | 927 | GET_Hours = R_Concatenate(3); |
VivaPenguinos | 4:99535d368a9f | 928 | GET_Minute = R_Concatenate(2); |
VivaPenguinos | 4:99535d368a9f | 929 | GET_Seconds = R_Concatenate(1); |
VivaPenguinos | 4:99535d368a9f | 930 | |
VivaPenguinos | 5:5f08974ef8bb | 931 | // Checks if value exceeds the Hours, Minute, and Seconds and verifies if Rows are in Positive |
VivaPenguinos | 5:5f08974ef8bb | 932 | if (GET_Hours > 750 or GET_Minute > 60 or GET_Seconds > 60 or R1_POS != 1 or R2_POS != 1 or R3_POS != 1) { |
VivaPenguinos | 4:99535d368a9f | 933 | pc.printf("Error! Check your Hours, Minute, and Seconds Value"); |
VivaPenguinos | 4:99535d368a9f | 934 | R3_Position = 1; |
VivaPenguinos | 4:99535d368a9f | 935 | GET_Config(); |
VivaPenguinos | 4:99535d368a9f | 936 | } else { |
VivaPenguinos | 4:99535d368a9f | 937 | pc.printf("Pass!, Going to configure RTC Now"); |
VivaPenguinos | 4:99535d368a9f | 938 | GET_Config_Time = GET_Hours * 3600; |
VivaPenguinos | 4:99535d368a9f | 939 | GET_Config_Time += GET_Minute * 60; |
VivaPenguinos | 4:99535d368a9f | 940 | GET_Config_Time += GET_Seconds; |
VivaPenguinos | 4:99535d368a9f | 941 | pc.printf("Time Conversion is %d", GET_Config_Time); |
VivaPenguinos | 4:99535d368a9f | 942 | } |
VivaPenguinos | 4:99535d368a9f | 943 | |
VivaPenguinos | 4:99535d368a9f | 944 | // Reconfigures the timee so the values can be resetted. |
VivaPenguinos | 3:29cff763ae36 | 945 | #ifdef INITIAL_RUN |
VivaPenguinos | 3:29cff763ae36 | 946 | clk.set_time(TIME_VALUE); |
VivaPenguinos | 3:29cff763ae36 | 947 | #endif |
VivaPenguinos | 1:24446776f0d2 | 948 | |
VivaPenguinos | 4:99535d368a9f | 949 | // Debug Use Only |
VivaPenguinos | 4:99535d368a9f | 950 | //pc.printf("%d\n", GET_Hours); |
VivaPenguinos | 4:99535d368a9f | 951 | //pc.printf("%d\n", GET_Minute); |
VivaPenguinos | 4:99535d368a9f | 952 | //pc.printf("%d\n", GET_Seconds); |
VivaPenguinos | 4:99535d368a9f | 953 | Ground_Elapse_Time(); |
VivaPenguinos | 4:99535d368a9f | 954 | } |
VivaPenguinos | 5:5f08974ef8bb | 955 | |
VivaPenguinos | 5:5f08974ef8bb | 956 | // This is the CMC Idling Program Page CM-39 |
VivaPenguinos | 5:5f08974ef8bb | 957 | // This portion of code just turns off all of the display. Originally used to save power consumption. |
VivaPenguinos | 5:5f08974ef8bb | 958 | // Process: |
VivaPenguinos | 5:5f08974ef8bb | 959 | // Display PROG 00 |
VivaPenguinos | 5:5f08974ef8bb | 960 | // Verb 37 Enter 00 |
VivaPenguinos | 5:5f08974ef8bb | 961 | // Verb 06 Noun 38 |
VivaPenguinos | 5:5f08974ef8bb | 962 | // Optional Display: |
VivaPenguinos | 5:5f08974ef8bb | 963 | // Verb 06 Noun 38 - |
VivaPenguinos | 5:5f08974ef8bb | 964 | // Time of State Vector being Integrated |
VivaPenguinos | 5:5f08974ef8bb | 965 | // 00xxx hours |
VivaPenguinos | 5:5f08974ef8bb | 966 | // 000xx minutes |
VivaPenguinos | 5:5f08974ef8bb | 967 | // 0xx.xx seconds |
VivaPenguinos | 5:5f08974ef8bb | 968 | void CMC_Idle() |
VivaPenguinos | 5:5f08974ef8bb | 969 | { |
VivaPenguinos | 5:5f08974ef8bb | 970 | NO_Light(7); |
VivaPenguinos | 5:5f08974ef8bb | 971 | P_A = 0x00; |
VivaPenguinos | 5:5f08974ef8bb | 972 | P_B = 0x00; |
VivaPenguinos | 5:5f08974ef8bb | 973 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 974 | while(1) { |
VivaPenguinos | 5:5f08974ef8bb | 975 | __wfi(); |
VivaPenguinos | 5:5f08974ef8bb | 976 | if (Index >-1) { |
VivaPenguinos | 5:5f08974ef8bb | 977 | Interruption(); |
VivaPenguinos | 5:5f08974ef8bb | 978 | break; |
VivaPenguinos | 5:5f08974ef8bb | 979 | } |
VivaPenguinos | 5:5f08974ef8bb | 980 | |
VivaPenguinos | 5:5f08974ef8bb | 981 | } |
VivaPenguinos | 5:5f08974ef8bb | 982 | |
VivaPenguinos | 5:5f08974ef8bb | 983 | } |
VivaPenguinos | 5:5f08974ef8bb | 984 | |
VivaPenguinos | 5:5f08974ef8bb | 985 | /* |
VivaPenguinos | 5:5f08974ef8bb | 986 | P01 - Prelaunch or Service - Initialization Program CM-39 |
VivaPenguinos | 5:5f08974ef8bb | 987 | Purpose: |
VivaPenguinos | 5:5f08974ef8bb | 988 | 1. To intialize the platform for the prelaunch programs. |
VivaPenguinos | 5:5f08974ef8bb | 989 | 2. To provide an initial stable member orientation for Gyrocompassing (P02) |
VivaPenguinos | 5:5f08974ef8bb | 990 | Assumptions: |
VivaPenguinos | 5:5f08974ef8bb | 991 | Erasble location has been Properly initialized. |
VivaPenguinos | 5:5f08974ef8bb | 992 | Azimuth, +1 |
VivaPenguinos | 5:5f08974ef8bb | 993 | Latitude, +1 |
VivaPenguinos | 5:5f08974ef8bb | 994 | LaunchAZ +1 |
VivaPenguinos | 5:5f08974ef8bb | 995 | IMU compenstaion parameters |
VivaPenguinos | 5:5f08974ef8bb | 996 | */ |
VivaPenguinos | 5:5f08974ef8bb | 997 | void PreLaunch_Initialization() |
VivaPenguinos | 5:5f08974ef8bb | 998 | { |
VivaPenguinos | 5:5f08974ef8bb | 999 | P_A = 0x00; |
VivaPenguinos | 5:5f08974ef8bb | 1000 | P_B = 0x01; |
VivaPenguinos | 5:5f08974ef8bb | 1001 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1002 | |
VivaPenguinos | 5:5f08974ef8bb | 1003 | if (IMUPWR == 1) { |
VivaPenguinos | 5:5f08974ef8bb | 1004 | NO_ATT = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1005 | wait(9); |
VivaPenguinos | 5:5f08974ef8bb | 1006 | pc.printf("Course Align IMU\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1007 | NO_ATT = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1008 | wait(10); |
VivaPenguinos | 5:5f08974ef8bb | 1009 | pc.printf("Course Align IMU complete\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1010 | NO_ATT = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1011 | wait(2); |
VivaPenguinos | 5:5f08974ef8bb | 1012 | PreLaunch_Gyrocompassing(); |
VivaPenguinos | 5:5f08974ef8bb | 1013 | } else { |
VivaPenguinos | 5:5f08974ef8bb | 1014 | // NO_ATT is off for 8 seconds, with one COMP_ACTY light. |
VivaPenguinos | 5:5f08974ef8bb | 1015 | PROG = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1016 | wait(6); |
VivaPenguinos | 5:5f08974ef8bb | 1017 | COMP_ACTY = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1018 | wait(0.5); |
VivaPenguinos | 5:5f08974ef8bb | 1019 | COMP_ACTY = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1020 | wait(1.5); |
VivaPenguinos | 5:5f08974ef8bb | 1021 | // NO_ATT is on for 6 seconds, No COMP_ACTY light. |
VivaPenguinos | 5:5f08974ef8bb | 1022 | NO_ATT = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1023 | wait(6); |
VivaPenguinos | 5:5f08974ef8bb | 1024 | NO_ATT = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1025 | P_A = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 1026 | P_B = 0x0f; |
VivaPenguinos | 5:5f08974ef8bb | 1027 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1028 | } |
VivaPenguinos | 5:5f08974ef8bb | 1029 | } |
VivaPenguinos | 5:5f08974ef8bb | 1030 | |
VivaPenguinos | 5:5f08974ef8bb | 1031 | /* |
VivaPenguinos | 5:5f08974ef8bb | 1032 | P02 - Prelaunch or Service - Gyrocompassing Program CM-39 |
VivaPenguinos | 5:5f08974ef8bb | 1033 | Purpose: |
VivaPenguinos | 5:5f08974ef8bb | 1034 | 1. Provide proper stable member orientation for launch |
VivaPenguinos | 5:5f08974ef8bb | 1035 | Assumptions: |
VivaPenguinos | 5:5f08974ef8bb | 1036 | 1. Program may be interuppted to perform the prelaunch or service - optical verification of gyrocompassing program (P03) |
VivaPenguinos | 5:5f08974ef8bb | 1037 | 2. V75 will be keyed in and displaed during this program to permit crew backup of the liftoff discrete. |
VivaPenguinos | 5:5f08974ef8bb | 1038 | 3. Program is automatically selected by the Initialization Program (P01). |
VivaPenguinos | 5:5f08974ef8bb | 1039 | 4. This program has capability (Via V78E) to change the luanch azimuth of the stable memeber while gyrocompassing. |
VivaPenguinos | 5:5f08974ef8bb | 1040 | Process: |
VivaPenguinos | 5:5f08974ef8bb | 1041 | 1. After P01 is completed |
VivaPenguinos | 5:5f08974ef8bb | 1042 | 2. Display P02 |
VivaPenguinos | 5:5f08974ef8bb | 1043 | 3. Flashing V06 N29 / Display LAUNCHAZ in R3 |
VivaPenguinos | 5:5f08974ef8bb | 1044 | 4. User input V21E |
VivaPenguinos | 5:5f08974ef8bb | 1045 | 5. Flash V21N29 This is R1_Component May be for future use. |
VivaPenguinos | 5:5f08974ef8bb | 1046 | 6. User inputs values for LAUNCHAZ |
VivaPenguinos | 5:5f08974ef8bb | 1047 | 7. Flash V06 N29 / Display LAUNCHAZ in R3 |
VivaPenguinos | 5:5f08974ef8bb | 1048 | 8. Input Pro |
VivaPenguinos | 5:5f08974ef8bb | 1049 | 9. Pulses Gyros |
VivaPenguinos | 5:5f08974ef8bb | 1050 | Programming Notes: |
VivaPenguinos | 5:5f08974ef8bb | 1051 | Void PreLaunch_Gyrocomapssing() and PreLaunch_Gyrocompassing_Configure() are tied together |
VivaPenguinos | 5:5f08974ef8bb | 1052 | |
VivaPenguinos | 5:5f08974ef8bb | 1053 | */ |
VivaPenguinos | 5:5f08974ef8bb | 1054 | void PreLaunch_Gyrocompassing () |
VivaPenguinos | 5:5f08974ef8bb | 1055 | { |
VivaPenguinos | 5:5f08974ef8bb | 1056 | // Process 1 |
VivaPenguinos | 5:5f08974ef8bb | 1057 | // Process 2 |
VivaPenguinos | 5:5f08974ef8bb | 1058 | NO_Light(7); |
VivaPenguinos | 5:5f08974ef8bb | 1059 | P_A = 0x00; |
VivaPenguinos | 5:5f08974ef8bb | 1060 | P_B = 0x02; |
VivaPenguinos | 5:5f08974ef8bb | 1061 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1062 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1063 | R3_E = LAUNCHAZ%10; |
VivaPenguinos | 5:5f08974ef8bb | 1064 | R3_D = (LAUNCHAZ/10)%10; |
VivaPenguinos | 5:5f08974ef8bb | 1065 | R3_C = (LAUNCHAZ/100)%10; |
VivaPenguinos | 5:5f08974ef8bb | 1066 | R3_B = (LAUNCHAZ/1000)%10; |
VivaPenguinos | 5:5f08974ef8bb | 1067 | R3_A = (LAUNCHAZ/10000)%10; |
VivaPenguinos | 5:5f08974ef8bb | 1068 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1069 | while(1) { |
VivaPenguinos | 5:5f08974ef8bb | 1070 | // Process 3; |
VivaPenguinos | 5:5f08974ef8bb | 1071 | PreLaunch_Gyrocompassing_Configure(); |
VivaPenguinos | 5:5f08974ef8bb | 1072 | COMP_ACTY = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1073 | PreLaunch_Gyrocompassing_Configure(); |
VivaPenguinos | 5:5f08974ef8bb | 1074 | wait(0.5); |
VivaPenguinos | 5:5f08974ef8bb | 1075 | PreLaunch_Gyrocompassing_Configure(); |
VivaPenguinos | 5:5f08974ef8bb | 1076 | COMP_ACTY = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1077 | PreLaunch_Gyrocompassing_Configure(); |
VivaPenguinos | 5:5f08974ef8bb | 1078 | wait(0.5); |
VivaPenguinos | 5:5f08974ef8bb | 1079 | pc.printf("spam\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1080 | pc.printf("Index %d\n", Index); |
VivaPenguinos | 5:5f08974ef8bb | 1081 | } // While 1 |
VivaPenguinos | 5:5f08974ef8bb | 1082 | } // prelaunch configuration |
VivaPenguinos | 5:5f08974ef8bb | 1083 | |
VivaPenguinos | 5:5f08974ef8bb | 1084 | // This is used for the configuration of PreLaunch_Gyrocompassing(); |
VivaPenguinos | 5:5f08974ef8bb | 1085 | // This has to be used since it awaits for the input of the astronauts. |
VivaPenguinos | 5:5f08974ef8bb | 1086 | void PreLaunch_Gyrocompassing_Configure() |
VivaPenguinos | 5:5f08974ef8bb | 1087 | { |
VivaPenguinos | 5:5f08974ef8bb | 1088 | int Azimuth; |
VivaPenguinos | 5:5f08974ef8bb | 1089 | while(1){ |
VivaPenguinos | 5:5f08974ef8bb | 1090 | if (Index >-1) { |
VivaPenguinos | 5:5f08974ef8bb | 1091 | if (Index == 12) { |
VivaPenguinos | 5:5f08974ef8bb | 1092 | Verb_Button(); //For V21 use |
VivaPenguinos | 5:5f08974ef8bb | 1093 | } |
VivaPenguinos | 5:5f08974ef8bb | 1094 | if (Index == 11) { |
VivaPenguinos | 5:5f08974ef8bb | 1095 | if (Verb_Number1 == 1 && Verb_Number2 == 0 && Noun_Number1 == 0 && Noun_Number2 == 0 && Enter_Number1 == 0 && Enter_Number2 == 0) { // Verb 21, Noun 00, Enter 00 |
VivaPenguinos | 5:5f08974ef8bb | 1096 | //Flash V21N29 and Get user inputs under R3 |
VivaPenguinos | 5:5f08974ef8bb | 1097 | // Process 5 and 6 |
VivaPenguinos | 5:5f08974ef8bb | 1098 | Azimuth = R1_Component(); // Goes to R1 Component |
VivaPenguinos | 5:5f08974ef8bb | 1099 | if(Azimuth < 90000 && R3_POS == 1 && R1_NEG == 0) { // Error Checking Checks if it's over 90000 or 90 degrees and that R3_POS is lit and not R3_NEG |
VivaPenguinos | 5:5f08974ef8bb | 1100 | // If it passes |
VivaPenguinos | 5:5f08974ef8bb | 1101 | LAUNCHAZ = Azimuth; |
VivaPenguinos | 5:5f08974ef8bb | 1102 | PreLaunch_Gyrocompassing();// This is suppose to go to PreLaunch_Gyrocompassing |
VivaPenguinos | 5:5f08974ef8bb | 1103 | }// if Azimuth = R1 |
VivaPenguinos | 5:5f08974ef8bb | 1104 | else{ |
VivaPenguinos | 5:5f08974ef8bb | 1105 | pc.printf("Failed"); |
VivaPenguinos | 5:5f08974ef8bb | 1106 | } // Error checking |
VivaPenguinos | 5:5f08974ef8bb | 1107 | } // V21 N00 E00 |
VivaPenguinos | 5:5f08974ef8bb | 1108 | } // Enter BUtton |
VivaPenguinos | 5:5f08974ef8bb | 1109 | if (Index == 99){ // This is Prog Button |
VivaPenguinos | 5:5f08974ef8bb | 1110 | // Error checks just in case |
VivaPenguinos | 5:5f08974ef8bb | 1111 | if (LAUNCHAZ > 0 && R3_POS == 1){ |
VivaPenguinos | 5:5f08974ef8bb | 1112 | // Because there are no Phsyical Gyro's present, This section of code is just going to simulate gyros pulsing |
VivaPenguinos | 5:5f08974ef8bb | 1113 | for (int x = 0; x > 21; x++){ |
VivaPenguinos | 5:5f08974ef8bb | 1114 | pc.printf("Pulsing Gyros...\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1115 | COMP_ACTY = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1116 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 1117 | COMP_ACTY = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1118 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 1119 | }// Pulsing Gyro simulation |
VivaPenguinos | 5:5f08974ef8bb | 1120 | pc.printf("Done!"); |
VivaPenguinos | 5:5f08974ef8bb | 1121 | }// Prog Error checking |
VivaPenguinos | 5:5f08974ef8bb | 1122 | }// Prog Button |
VivaPenguinos | 5:5f08974ef8bb | 1123 | } // Index > -1 |
VivaPenguinos | 5:5f08974ef8bb | 1124 | } // While(1) |
VivaPenguinos | 5:5f08974ef8bb | 1125 | } // PreLaunh_Gyrocompassing_Configure(); |
VivaPenguinos | 5:5f08974ef8bb | 1126 | |
VivaPenguinos | 5:5f08974ef8bb | 1127 | |
VivaPenguinos | 5:5f08974ef8bb | 1128 | // Load Component 1 into R1 |
VivaPenguinos | 5:5f08974ef8bb | 1129 | int R1_Component() |
VivaPenguinos | 5:5f08974ef8bb | 1130 | { |
VivaPenguinos | 5:5f08974ef8bb | 1131 | R1_POS = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1132 | R1_NEG = 0; |
VivaPenguinos | 5:5f08974ef8bb | 1133 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1134 | do { |
VivaPenguinos | 5:5f08974ef8bb | 1135 | R_GET(3); |
VivaPenguinos | 5:5f08974ef8bb | 1136 | V_A = 0x02; |
VivaPenguinos | 5:5f08974ef8bb | 1137 | V_B = 0x01; |
VivaPenguinos | 5:5f08974ef8bb | 1138 | N_A = 0x02; |
VivaPenguinos | 5:5f08974ef8bb | 1139 | N_B = 0x09; |
VivaPenguinos | 5:5f08974ef8bb | 1140 | R_GET(3); |
VivaPenguinos | 5:5f08974ef8bb | 1141 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1142 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 1143 | R_GET(3); |
VivaPenguinos | 5:5f08974ef8bb | 1144 | NO_Light(4); |
VivaPenguinos | 5:5f08974ef8bb | 1145 | NO_Light(5); |
VivaPenguinos | 5:5f08974ef8bb | 1146 | R_GET(3); |
VivaPenguinos | 5:5f08974ef8bb | 1147 | wait(.5); |
VivaPenguinos | 5:5f08974ef8bb | 1148 | } while (R3_Position != 7); |
VivaPenguinos | 5:5f08974ef8bb | 1149 | R_Position = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1150 | |
VivaPenguinos | 5:5f08974ef8bb | 1151 | return R_Concatenate(3); |
VivaPenguinos | 5:5f08974ef8bb | 1152 | } |
VivaPenguinos | 4:99535d368a9f | 1153 | |
VivaPenguinos | 4:99535d368a9f | 1154 | // This is used to concatenate Row 3, Useful for when verifying inputs. |
VivaPenguinos | 4:99535d368a9f | 1155 | int R_Concatenate(int C) { |
VivaPenguinos | 4:99535d368a9f | 1156 | |
VivaPenguinos | 4:99535d368a9f | 1157 | // Used for concatenation only |
VivaPenguinos | 4:99535d368a9f | 1158 | int RAB = 0; |
VivaPenguinos | 4:99535d368a9f | 1159 | int RCD = 0; |
VivaPenguinos | 4:99535d368a9f | 1160 | int RABCD = 0; |
VivaPenguinos | 4:99535d368a9f | 1161 | int RABCDE = 0; |
VivaPenguinos | 4:99535d368a9f | 1162 | |
VivaPenguinos | 4:99535d368a9f | 1163 | // Actual Physical Interaces, Row Physical |
VivaPenguinos | 4:99535d368a9f | 1164 | int RPA = 0; |
VivaPenguinos | 4:99535d368a9f | 1165 | int RPB = 0; |
VivaPenguinos | 4:99535d368a9f | 1166 | int RPC = 0; |
VivaPenguinos | 4:99535d368a9f | 1167 | int RPD = 0; |
VivaPenguinos | 4:99535d368a9f | 1168 | int RPE = 0; |
VivaPenguinos | 4:99535d368a9f | 1169 | |
VivaPenguinos | 4:99535d368a9f | 1170 | // This if Statement compares which rows to concatenate then replaces the variables with the correct one. |
VivaPenguinos | 4:99535d368a9f | 1171 | if (C == 3) { |
VivaPenguinos | 4:99535d368a9f | 1172 | RPA = R3_A; |
VivaPenguinos | 4:99535d368a9f | 1173 | RPB = R3_B; |
VivaPenguinos | 4:99535d368a9f | 1174 | RPC = R3_C; |
VivaPenguinos | 4:99535d368a9f | 1175 | RPD = R3_D; |
VivaPenguinos | 4:99535d368a9f | 1176 | RPE = R3_E; |
VivaPenguinos | 4:99535d368a9f | 1177 | } |
VivaPenguinos | 4:99535d368a9f | 1178 | if (C == 2) { |
VivaPenguinos | 4:99535d368a9f | 1179 | RPA = R2_A; |
VivaPenguinos | 4:99535d368a9f | 1180 | RPB = R3_B; |
VivaPenguinos | 4:99535d368a9f | 1181 | RPC = R2_C; |
VivaPenguinos | 4:99535d368a9f | 1182 | RPD = R2_D; |
VivaPenguinos | 4:99535d368a9f | 1183 | RPE = R2_E; |
VivaPenguinos | 4:99535d368a9f | 1184 | } |
VivaPenguinos | 4:99535d368a9f | 1185 | if (C == 1) { |
VivaPenguinos | 4:99535d368a9f | 1186 | RPA = R1_A; |
VivaPenguinos | 4:99535d368a9f | 1187 | RPB = R1_B; |
VivaPenguinos | 4:99535d368a9f | 1188 | RPC = R1_C; |
VivaPenguinos | 4:99535d368a9f | 1189 | RPD = R1_D; |
VivaPenguinos | 4:99535d368a9f | 1190 | RPE = R1_E; |
VivaPenguinos | 3:29cff763ae36 | 1191 | } |
VivaPenguinos | 4:99535d368a9f | 1192 | RAB = concatenate(RPA, RPB); // R3A + R3B |
VivaPenguinos | 4:99535d368a9f | 1193 | RCD = concatenate(RPC, RPD); // R3C + R3D |
VivaPenguinos | 4:99535d368a9f | 1194 | RABCD = concatenate(RAB, RCD); // R3AB + R3CD |
VivaPenguinos | 4:99535d368a9f | 1195 | RABCDE = concatenate(RABCD, RPE); // R3ABCD = R3E |
VivaPenguinos | 4:99535d368a9f | 1196 | //Debug Use: |
VivaPenguinos | 4:99535d368a9f | 1197 | //pc.printf("%d\n", RAB); |
VivaPenguinos | 4:99535d368a9f | 1198 | //pc.printf("%d\n", RCD); |
VivaPenguinos | 4:99535d368a9f | 1199 | //pc.printf("%d\n", RABCD); |
VivaPenguinos | 4:99535d368a9f | 1200 | //pc.printf("%d\n", RABCDE); |
VivaPenguinos | 4:99535d368a9f | 1201 | return RABCDE; |
VivaPenguinos | 4:99535d368a9f | 1202 | } |
VivaPenguinos | 4:99535d368a9f | 1203 | |
VivaPenguinos | 4:99535d368a9f | 1204 | |
VivaPenguinos | 4:99535d368a9f | 1205 | // Concatenate two Integers. Credits to Mooing Duck. http://stackoverflow.com/questions/12700497/how-to-concatenate-two-integers-in-c |
VivaPenguinos | 4:99535d368a9f | 1206 | // Decided not modify the code to do 5 at a time since I can use it to concatenate the Verb, Noun, and Program Number. |
VivaPenguinos | 4:99535d368a9f | 1207 | unsigned concatenate(unsigned x, unsigned y) { |
VivaPenguinos | 4:99535d368a9f | 1208 | unsigned pow = 10; |
VivaPenguinos | 4:99535d368a9f | 1209 | while(y >= pow) |
VivaPenguinos | 4:99535d368a9f | 1210 | pow *= 10; |
VivaPenguinos | 4:99535d368a9f | 1211 | return x * pow + y; |
VivaPenguinos | 4:99535d368a9f | 1212 | } |
VivaPenguinos | 4:99535d368a9f | 1213 | |
VivaPenguinos | 4:99535d368a9f | 1214 | void R_GET(int R) |
VivaPenguinos | 4:99535d368a9f | 1215 | { |
VivaPenguinos | 4:99535d368a9f | 1216 | if (R == 3) { |
VivaPenguinos | 5:5f08974ef8bb | 1217 | R3_POS = R_Pos; |
VivaPenguinos | 5:5f08974ef8bb | 1218 | R3_NEG = R_Neg; |
VivaPenguinos | 4:99535d368a9f | 1219 | R3_A = RVA; |
VivaPenguinos | 4:99535d368a9f | 1220 | R3_B = RVB; |
VivaPenguinos | 4:99535d368a9f | 1221 | R3_C = RVC; |
VivaPenguinos | 4:99535d368a9f | 1222 | R3_D = RVD; |
VivaPenguinos | 4:99535d368a9f | 1223 | R3_E = RVE; |
VivaPenguinos | 4:99535d368a9f | 1224 | R3_Position = R_Position; |
VivaPenguinos | 4:99535d368a9f | 1225 | } |
VivaPenguinos | 4:99535d368a9f | 1226 | if (R == 2) { |
VivaPenguinos | 5:5f08974ef8bb | 1227 | R2_POS = R_Pos; |
VivaPenguinos | 5:5f08974ef8bb | 1228 | R2_NEG = R_Neg; |
VivaPenguinos | 4:99535d368a9f | 1229 | R2_A = RVA; |
VivaPenguinos | 4:99535d368a9f | 1230 | R2_B = RVB; |
VivaPenguinos | 4:99535d368a9f | 1231 | R2_C = RVC; |
VivaPenguinos | 4:99535d368a9f | 1232 | R2_D = RVD; |
VivaPenguinos | 4:99535d368a9f | 1233 | R2_E = RVE; |
VivaPenguinos | 4:99535d368a9f | 1234 | R2_Position = R_Position; |
VivaPenguinos | 4:99535d368a9f | 1235 | } |
VivaPenguinos | 4:99535d368a9f | 1236 | if (R == 1) { |
VivaPenguinos | 5:5f08974ef8bb | 1237 | R1_POS = R_Pos; |
VivaPenguinos | 5:5f08974ef8bb | 1238 | R1_NEG = R_Neg; |
VivaPenguinos | 4:99535d368a9f | 1239 | R1_A = RVA; |
VivaPenguinos | 4:99535d368a9f | 1240 | R1_B = RVB; |
VivaPenguinos | 4:99535d368a9f | 1241 | R1_C = RVC; |
VivaPenguinos | 4:99535d368a9f | 1242 | R1_D = RVD; |
VivaPenguinos | 4:99535d368a9f | 1243 | R1_E = RVE; |
VivaPenguinos | 4:99535d368a9f | 1244 | R1_Position = R_Position; |
VivaPenguinos | 4:99535d368a9f | 1245 | } |
VivaPenguinos | 4:99535d368a9f | 1246 | |
VivaPenguinos | 5:5f08974ef8bb | 1247 | switch (R_Position) { |
VivaPenguinos | 4:99535d368a9f | 1248 | case 1: |
VivaPenguinos | 4:99535d368a9f | 1249 | if (Index >-1) { |
VivaPenguinos | 5:5f08974ef8bb | 1250 | pc.printf("Plus-Minus\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1251 | RP = Button_Sort(Index); |
VivaPenguinos | 5:5f08974ef8bb | 1252 | if (RP == 0x10) { |
VivaPenguinos | 5:5f08974ef8bb | 1253 | R_Pos = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1254 | pc.printf("+"); |
VivaPenguinos | 5:5f08974ef8bb | 1255 | } else if (RP == 0x11) { |
VivaPenguinos | 5:5f08974ef8bb | 1256 | R_Neg = 1; |
VivaPenguinos | 5:5f08974ef8bb | 1257 | } |
VivaPenguinos | 5:5f08974ef8bb | 1258 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1259 | R_Position = 2; |
VivaPenguinos | 5:5f08974ef8bb | 1260 | } |
VivaPenguinos | 5:5f08974ef8bb | 1261 | |
VivaPenguinos | 5:5f08974ef8bb | 1262 | case 2: |
VivaPenguinos | 5:5f08974ef8bb | 1263 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 1264 | pc.printf("RA\n"); |
VivaPenguinos | 4:99535d368a9f | 1265 | RA = Button_Sort(Index); |
VivaPenguinos | 4:99535d368a9f | 1266 | RVA = RA; |
VivaPenguinos | 4:99535d368a9f | 1267 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 1268 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1269 | R_Position = 3; |
VivaPenguinos | 4:99535d368a9f | 1270 | } |
VivaPenguinos | 5:5f08974ef8bb | 1271 | case 3: |
VivaPenguinos | 4:99535d368a9f | 1272 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 1273 | pc.printf("RB\n"); |
VivaPenguinos | 4:99535d368a9f | 1274 | RB = Button_Sort(Index); |
VivaPenguinos | 4:99535d368a9f | 1275 | RVB = RB; |
VivaPenguinos | 4:99535d368a9f | 1276 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 1277 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1278 | R_Position = 4; |
VivaPenguinos | 4:99535d368a9f | 1279 | } |
VivaPenguinos | 5:5f08974ef8bb | 1280 | case 4: |
VivaPenguinos | 4:99535d368a9f | 1281 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 1282 | pc.printf("RC\n"); |
VivaPenguinos | 4:99535d368a9f | 1283 | RC = Button_Sort(Index); |
VivaPenguinos | 4:99535d368a9f | 1284 | RVC = RC; |
VivaPenguinos | 4:99535d368a9f | 1285 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 1286 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1287 | R_Position = 5; |
VivaPenguinos | 4:99535d368a9f | 1288 | } |
VivaPenguinos | 5:5f08974ef8bb | 1289 | case 5: |
VivaPenguinos | 4:99535d368a9f | 1290 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 1291 | pc.printf("RD\n"); |
VivaPenguinos | 4:99535d368a9f | 1292 | RD = Button_Sort(Index); |
VivaPenguinos | 4:99535d368a9f | 1293 | RVD = RD; |
VivaPenguinos | 4:99535d368a9f | 1294 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 1295 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1296 | R_Position = 6; |
VivaPenguinos | 4:99535d368a9f | 1297 | } |
VivaPenguinos | 5:5f08974ef8bb | 1298 | case 6: |
VivaPenguinos | 4:99535d368a9f | 1299 | if (Index >-1) { |
VivaPenguinos | 4:99535d368a9f | 1300 | pc.printf("RE\n"); |
VivaPenguinos | 4:99535d368a9f | 1301 | RE = Button_Sort(Index); |
VivaPenguinos | 4:99535d368a9f | 1302 | RVE = RE; |
VivaPenguinos | 4:99535d368a9f | 1303 | Shift(); |
VivaPenguinos | 4:99535d368a9f | 1304 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1305 | R_Position = 7; |
VivaPenguinos | 5:5f08974ef8bb | 1306 | } |
VivaPenguinos | 5:5f08974ef8bb | 1307 | } |
VivaPenguinos | 5:5f08974ef8bb | 1308 | } |
VivaPenguinos | 5:5f08974ef8bb | 1309 | |
VivaPenguinos | 5:5f08974ef8bb | 1310 | // When a value is required for Enter, The output is displayed via the Noun display Hence the Name N_GET not E_GET |
VivaPenguinos | 5:5f08974ef8bb | 1311 | void N_GET() |
VivaPenguinos | 5:5f08974ef8bb | 1312 | { |
VivaPenguinos | 5:5f08974ef8bb | 1313 | N_A = NA; |
VivaPenguinos | 5:5f08974ef8bb | 1314 | N_B = NB; |
VivaPenguinos | 5:5f08974ef8bb | 1315 | |
VivaPenguinos | 5:5f08974ef8bb | 1316 | switch (N_Position) { |
VivaPenguinos | 5:5f08974ef8bb | 1317 | case 1: |
VivaPenguinos | 5:5f08974ef8bb | 1318 | if (Index > -1) { |
VivaPenguinos | 5:5f08974ef8bb | 1319 | pc.printf("NA\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1320 | NA = Button_Sort(Index); |
VivaPenguinos | 5:5f08974ef8bb | 1321 | Enter_Number1 = NA; |
VivaPenguinos | 5:5f08974ef8bb | 1322 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1323 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1324 | N_Position = 2; |
VivaPenguinos | 5:5f08974ef8bb | 1325 | } |
VivaPenguinos | 5:5f08974ef8bb | 1326 | case 2: |
VivaPenguinos | 5:5f08974ef8bb | 1327 | if (Index > -1) { |
VivaPenguinos | 5:5f08974ef8bb | 1328 | pc.printf("NB\n"); |
VivaPenguinos | 5:5f08974ef8bb | 1329 | NB = Button_Sort(Index); |
VivaPenguinos | 5:5f08974ef8bb | 1330 | Enter_Number2 = NB; |
VivaPenguinos | 5:5f08974ef8bb | 1331 | Shift(); |
VivaPenguinos | 5:5f08974ef8bb | 1332 | Index = -1; |
VivaPenguinos | 5:5f08974ef8bb | 1333 | N_Position = 3; |
VivaPenguinos | 4:99535d368a9f | 1334 | } |
VivaPenguinos | 4:99535d368a9f | 1335 | } |
VivaPenguinos | 4:99535d368a9f | 1336 | |
VivaPenguinos | 4:99535d368a9f | 1337 | } |
VivaPenguinos | 4:99535d368a9f | 1338 |