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

Dependencies:   DS1302 keypad mbed

Hardware

Committer:
VivaPenguinos
Date:
Sun Feb 16 00:32:06 2014 +0000
Revision:
0:3ff58b093415
Child:
1:24446776f0d2
DSKY Version 0.1

Who changed what in which revision?

UserRevisionLine numberNew 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 }