Isoraqathedh

Arduino timer final

Jun 20th, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. char* digitPinsOff[4] = {"l", "i", "h", "f"};
  2. char* digitPinsOn[4]  = {"L", "I", "H", "F"};
  3. char* digits[10] = {
  4.   "KGDBAJkgdbaj", "GDgd", "KGEABkgeab", "KGEDBkgedb", "JEGDjegd",
  5.   "KJEDBkjedb", "KJABDEkjabdeH", "KGDkgd", "ABDEJGKabdejgk", "BDEJGEKbdejgk"
  6. };
  7. int displayed[4] = {6, 1, 9, 7};
  8. int received[4] = {0, 0, 0, 0};
  9.  
  10. void setup() {
  11.   for (int i = 2; i < 14; i++) {
  12.     pinMode(i, OUTPUT);
  13.     digitalWrite(i, LOW);
  14.   }
  15.   Serial.begin(9600);
  16. }
  17.  
  18. void loop() {
  19.   // displays the number 2169.
  20.   // Uh.
  21.   displayDigitAt(1, displayed[0]);
  22.   displayDigitAt(2, displayed[1]);
  23.   displayDigitAt(3, displayed[2]);
  24.   displayDigitAt(4, displayed[3]);
  25.   if (Serial.available() > 0) {
  26.     int i = 0;
  27.     int j = 0;
  28.     while (i < 4 && j < 1000) {
  29.       char unsafe = Serial.read();
  30.       if ('0' <= unsafe && unsafe <= '9') {
  31.         received[i] = unsafe - '0';
  32.         i++;
  33.       } else {
  34.         received[i] = displayed[i];
  35.       }
  36.       j++;
  37.       displayDigitAt(1, displayed[0]);
  38.       displayDigitAt(2, displayed[1]);
  39.       displayDigitAt(3, displayed[2]);
  40.       displayDigitAt(4, displayed[3]);
  41.       //Serial.write(unsafe);
  42.     }
  43.     for (int i = 0; i < 4; i++) {
  44.       displayed[i] = received[i];
  45.     }
  46.     //Serial.write("\n");
  47.   }
  48. }
  49.  
  50. void displayDigitAt(int pos, int digitToDisplay) {
  51.   parseLetter(digitPinsOff[pos - 1]);
  52.   parseLetter(digits[digitToDisplay]);
  53.   parseLetter(digitPinsOn[pos - 1]);
  54. }
  55.  
  56.  
  57. void parseLetter(char* str) {
  58.   int len = strlen(str);
  59.   for (int i = 0; i < len; i++) {
  60.     char pinCode = str[i];
  61.     if (65 <= pinCode && pinCode <= 76) {
  62.       digitalWrite(pinCode - 63, HIGH);
  63.     }
  64.     else {
  65.       digitalWrite(pinCode - 95, LOW);
  66.     }
  67.   }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment