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@0:3ff58b093415, 2014-02-16 (annotated)
- Committer:
- VivaPenguinos
- Date:
- Sun Feb 16 00:32:06 2014 +0000
- Revision:
- 0:3ff58b093415
- Child:
- 1:24446776f0d2
DSKY Version 0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
VivaPenguinos | 0:3ff58b093415 | 1 | /* Introduction |
VivaPenguinos | 0:3ff58b093415 | 2 | Arduino DSKY |
VivaPenguinos | 0:3ff58b093415 | 3 | This is a personal project used developed by penguinos to mix old school technology with a modern twist. |
VivaPenguinos | 0:3ff58b093415 | 4 | Version 0.01: Feb. 4 2014 |
VivaPenguinos | 0:3ff58b093415 | 5 | Switch platforms from Arduino to KL25Z by Freescale. Because of this, Revision number is resetted. |
VivaPenguinos | 0:3ff58b093415 | 6 | Major Revision to Code are being undertaken. |
VivaPenguinos | 0:3ff58b093415 | 7 | |
VivaPenguinos | 0:3ff58b093415 | 8 | Notable Credits: |
VivaPenguinos | 0:3ff58b093415 | 9 | NASA! - Release of technical documentations regarding the AGC and DSKY |
VivaPenguinos | 0:3ff58b093415 | 10 | Ron Burkley and Contributers of "Virtual AGC — AGS — LVDC — Gemini" - Providing Technical documentations, Source Code, explanations, |
VivaPenguinos | 0:3ff58b093415 | 11 | and refrences on other sites to make this project successful |
VivaPenguinos | 0:3ff58b093415 | 12 | |
VivaPenguinos | 0:3ff58b093415 | 13 | Warning: This may contain author crude language, random memes, and random thoughts. |
VivaPenguinos | 0:3ff58b093415 | 14 | */ |
VivaPenguinos | 0:3ff58b093415 | 15 | using namespace std; |
VivaPenguinos | 0:3ff58b093415 | 16 | #include "mbed.h" |
VivaPenguinos | 0:3ff58b093415 | 17 | |
VivaPenguinos | 0:3ff58b093415 | 18 | //Declare Variables |
VivaPenguinos | 0:3ff58b093415 | 19 | int shift = 0; // Shift Data |
VivaPenguinos | 0:3ff58b093415 | 20 | // In the Arduino Version it uses a String. Will use an Int instead to see if this works on Mbed |
VivaPenguinos | 0:3ff58b093415 | 21 | int Verb; |
VivaPenguinos | 0:3ff58b093415 | 22 | int Noun; |
VivaPenguinos | 0:3ff58b093415 | 23 | int Enter; |
VivaPenguinos | 0:3ff58b093415 | 24 | int Set_GET_Seconds = 30; // Configure the Set Get in seconds. 1/100th of a second |
VivaPenguinos | 0:3ff58b093415 | 25 | char Set_get_miliseconds = 10; |
VivaPenguinos | 0:3ff58b093415 | 26 | char Set_Get_Seconds_Byte = 0; |
VivaPenguinos | 0:3ff58b093415 | 27 | char Set_Get_Seconds_Byte2 = 0; |
VivaPenguinos | 0:3ff58b093415 | 28 | char data = 0; |
VivaPenguinos | 0:3ff58b093415 | 29 | char data2 = 0; |
VivaPenguinos | 0:3ff58b093415 | 30 | char data3 = 0; |
VivaPenguinos | 0:3ff58b093415 | 31 | char nibble[10] = // Holds variables for nibbles for number 0-9 in hexes. nibble ALL the things! |
VivaPenguinos | 0:3ff58b093415 | 32 | {0x00, 0x01, 0x02, 0x03, 0x04, |
VivaPenguinos | 0:3ff58b093415 | 33 | 0x05, 0x06, 0x07, 0x08, 0x09}; |
VivaPenguinos | 0:3ff58b093415 | 34 | |
VivaPenguinos | 0:3ff58b093415 | 35 | // Function Declaration |
VivaPenguinos | 0:3ff58b093415 | 36 | void blinkAll(int amount, int delay);// Function that Blinks all LED |
VivaPenguinos | 0:3ff58b093415 | 37 | //void ShiftingOut(char myDataOut); |
VivaPenguinos | 0:3ff58b093415 | 38 | |
VivaPenguinos | 0:3ff58b093415 | 39 | // Pin modes for each pins |
VivaPenguinos | 0:3ff58b093415 | 40 | DigitalOut LatchPin(PTD4); //Pin for ST_CP of 74HC595 Pin # 12 |
VivaPenguinos | 0:3ff58b093415 | 41 | DigitalOut ClockPin(PTA12); //Pin for SH_CP of 74HC595 Pin # 11 |
VivaPenguinos | 0:3ff58b093415 | 42 | DigitalOut DataPin(PTA4); //Pin for to DS of 74HC595 Pin # 14 |
VivaPenguinos | 0:3ff58b093415 | 43 | |
VivaPenguinos | 0:3ff58b093415 | 44 | DigitalOut myled(LED1); |
VivaPenguinos | 0:3ff58b093415 | 45 | Serial pc(USBTX, USBRX); // tx, rx Serial Output to PC Enabling this WILL consume resources. Use only for debug |
VivaPenguinos | 0:3ff58b093415 | 46 | int main() |
VivaPenguinos | 0:3ff58b093415 | 47 | { |
VivaPenguinos | 0:3ff58b093415 | 48 | wait(1); |
VivaPenguinos | 0:3ff58b093415 | 49 | pc.printf("Shifting"); |
VivaPenguinos | 0:3ff58b093415 | 50 | blinkAll(4,1); |
VivaPenguinos | 0:3ff58b093415 | 51 | pc.printf("Done"); |
VivaPenguinos | 0:3ff58b093415 | 52 | wait(1); |
VivaPenguinos | 0:3ff58b093415 | 53 | /* |
VivaPenguinos | 0:3ff58b093415 | 54 | //Serial pc(USBTX, USBRX); // tx, rx Serial Output to PC Enabling this WILL consume resources. Use only for debug |
VivaPenguinos | 0:3ff58b093415 | 55 | while(1) { |
VivaPenguinos | 0:3ff58b093415 | 56 | //pc.printf("on"); |
VivaPenguinos | 0:3ff58b093415 | 57 | myled = 1; |
VivaPenguinos | 0:3ff58b093415 | 58 | wait(1); |
VivaPenguinos | 0:3ff58b093415 | 59 | //pc.printf("off"); |
VivaPenguinos | 0:3ff58b093415 | 60 | myled = 0; |
VivaPenguinos | 0:3ff58b093415 | 61 | wait(1); |
VivaPenguinos | 0:3ff58b093415 | 62 | } |
VivaPenguinos | 0:3ff58b093415 | 63 | */ |
VivaPenguinos | 0:3ff58b093415 | 64 | return 0; |
VivaPenguinos | 0:3ff58b093415 | 65 | } |
VivaPenguinos | 0:3ff58b093415 | 66 | void compare(int Verb,int Noun, int Enter){ |
VivaPenguinos | 0:3ff58b093415 | 67 | if (Verb == 16 && Noun == 36) { |
VivaPenguinos | 0:3ff58b093415 | 68 | //Configure GET |
VivaPenguinos | 0:3ff58b093415 | 69 | } |
VivaPenguinos | 0:3ff58b093415 | 70 | else if (Verb == 35 && Noun == 100) { |
VivaPenguinos | 0:3ff58b093415 | 71 | // Test Light |
VivaPenguinos | 0:3ff58b093415 | 72 | } |
VivaPenguinos | 0:3ff58b093415 | 73 | else if (Verb == 25 && Noun == 36) { |
VivaPenguinos | 0:3ff58b093415 | 74 | // Configure GET |
VivaPenguinos | 0:3ff58b093415 | 75 | } |
VivaPenguinos | 0:3ff58b093415 | 76 | else if (Verb == 37 && Enter == 00) { |
VivaPenguinos | 0:3ff58b093415 | 77 | // Idle Program |
VivaPenguinos | 0:3ff58b093415 | 78 | } |
VivaPenguinos | 0:3ff58b093415 | 79 | } |
VivaPenguinos | 0:3ff58b093415 | 80 | |
VivaPenguinos | 0:3ff58b093415 | 81 | void ShiftingOut(int myDataOut) { |
VivaPenguinos | 0:3ff58b093415 | 82 | // This shifts 8 bits out to the MSB first, The the rising edge of the clock, while clock idles low. |
VivaPenguinos | 0:3ff58b093415 | 83 | // Internal Fucntions |
VivaPenguinos | 0:3ff58b093415 | 84 | DataPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 85 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 86 | int i= 0; |
VivaPenguinos | 0:3ff58b093415 | 87 | int pinState; |
VivaPenguinos | 0:3ff58b093415 | 88 | // Clears Everything within shift registers |
VivaPenguinos | 0:3ff58b093415 | 89 | DataPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 90 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 91 | |
VivaPenguinos | 0:3ff58b093415 | 92 | for (i=7; i>= 0; i--) { |
VivaPenguinos | 0:3ff58b093415 | 93 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 94 | |
VivaPenguinos | 0:3ff58b093415 | 95 | // Value passed to my data out |
VivaPenguinos | 0:3ff58b093415 | 96 | if ( myDataOut & (1<<i)) { |
VivaPenguinos | 0:3ff58b093415 | 97 | pinState = 1; |
VivaPenguinos | 0:3ff58b093415 | 98 | myled = 1; |
VivaPenguinos | 0:3ff58b093415 | 99 | pc.printf("1"); |
VivaPenguinos | 0:3ff58b093415 | 100 | } |
VivaPenguinos | 0:3ff58b093415 | 101 | else { |
VivaPenguinos | 0:3ff58b093415 | 102 | pinState = 0; |
VivaPenguinos | 0:3ff58b093415 | 103 | myled = 0; |
VivaPenguinos | 0:3ff58b093415 | 104 | pc.printf("0"); |
VivaPenguinos | 0:3ff58b093415 | 105 | } |
VivaPenguinos | 0:3ff58b093415 | 106 | DataPin = pinState; |
VivaPenguinos | 0:3ff58b093415 | 107 | ClockPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 108 | DataPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 109 | } |
VivaPenguinos | 0:3ff58b093415 | 110 | ClockPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 111 | DataPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 112 | } |
VivaPenguinos | 0:3ff58b093415 | 113 | |
VivaPenguinos | 0:3ff58b093415 | 114 | //blinks the whole registered based on the number of times you want to blink with a certain delay |
VivaPenguinos | 0:3ff58b093415 | 115 | void blinkAll(int amount, int delay){ |
VivaPenguinos | 0:3ff58b093415 | 116 | LatchPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 117 | ShiftingOut(0); |
VivaPenguinos | 0:3ff58b093415 | 118 | ShiftingOut(0); |
VivaPenguinos | 0:3ff58b093415 | 119 | LatchPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 120 | wait(0.2); |
VivaPenguinos | 0:3ff58b093415 | 121 | for (int x = 0; x < amount; x++) { |
VivaPenguinos | 0:3ff58b093415 | 122 | LatchPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 123 | pc.printf("sending"); |
VivaPenguinos | 0:3ff58b093415 | 124 | ShiftingOut(255); |
VivaPenguinos | 0:3ff58b093415 | 125 | ShiftingOut(255); |
VivaPenguinos | 0:3ff58b093415 | 126 | ShiftingOut(255); |
VivaPenguinos | 0:3ff58b093415 | 127 | LatchPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 128 | wait(delay); |
VivaPenguinos | 0:3ff58b093415 | 129 | LatchPin = 0; |
VivaPenguinos | 0:3ff58b093415 | 130 | ShiftingOut(0); |
VivaPenguinos | 0:3ff58b093415 | 131 | ShiftingOut(0); |
VivaPenguinos | 0:3ff58b093415 | 132 | ShiftingOut(0); |
VivaPenguinos | 0:3ff58b093415 | 133 | LatchPin = 1; |
VivaPenguinos | 0:3ff58b093415 | 134 | wait(delay); |
VivaPenguinos | 0:3ff58b093415 | 135 | } |
VivaPenguinos | 0:3ff58b093415 | 136 | } |