]> git.tnoah.ca Git - clock.git/commitdiff
Added Control of individual special chars, and build file master
authorNoah Tomkins <noah@tnoah.ca>
Tue, 7 Jul 2026 03:45:18 +0000 (23:45 -0400)
committerNoah Tomkins <noah@tnoah.ca>
Tue, 7 Jul 2026 03:45:18 +0000 (23:45 -0400)
build.sh [new file with mode: 0755]
src/display.c

diff --git a/build.sh b/build.sh
new file mode 100755 (executable)
index 0000000..3719497
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+gcc -o clock ./src/clock.cpp -l wiringPi
+./clock
\ No newline at end of file
index 05ec5b4ddb7946b152ce048b5e1550ee21ad7e46..6d9adc06ed4caebffe1d55de4170245f10b1d4e5 100644 (file)
@@ -2,10 +2,55 @@
 #include <stdint.h>
 #include <wiringPi.h>
 
-static int digits   [3] = { 17, 27, 22 };
-static int segments [3] = { 23, 24, 25 };
+int binWriteDisplay (uint8_t digit, uint8_t segment);
 
-static int binWriteDisplay(uint8_t digit, uint8_t segment) 
+const int digits   [3] = { 17, 27, 22 };
+const int segments [3] = { 23, 24, 25 };
+
+const int segmentDigits [] =
+{
+// a  b  c  d  e  f  g     Segments
+// 6  5  4  3  2  1  0,        // wiringPi pin No.
+
+   1, 1, 1, 1, 1, 1, 0,        // 0
+   0, 1, 1, 0, 0, 0, 0,        // 1
+   1, 1, 0, 1, 1, 0, 1,        // 2
+   1, 1, 1, 1, 0, 0, 1,        // 3
+   0, 1, 1, 0, 0, 1, 1,        // 4
+   1, 0, 1, 1, 0, 1, 1,        // 5
+   1, 0, 1, 1, 1, 1, 1,        // 6
+   1, 1, 1, 0, 0, 0, 0,        // 7
+   1, 1, 1, 1, 1, 1, 1,        // 8
+   1, 1, 1, 1, 0, 1, 1,        // 9
+   1, 1, 1, 0, 1, 1, 1,        // A
+   0, 0, 1, 1, 1, 1, 1,        // b
+   1, 0, 0, 1, 1, 1, 0,        // C
+   0, 1, 1, 1, 1, 0, 1,        // d
+   1, 0, 0, 1, 1, 1, 1,        // E
+   1, 0, 0, 0, 1, 1, 1,        // F
+   0, 0, 0, 0, 0, 0, 0,        // blank
+};
+
+enum Symbol 
+{
+    V       = 0b0000,
+    COL1    = 0b0001,
+    COL2    = 0b0010,
+    ONE     = 0b0011,
+    VCR     = 0b0100,
+    DVD     = 0b0101,
+    VHS     = 0b0110,
+
+    ANT     = 0b1000,
+    CLK     = 0b1001,
+    P       = 0b1010,
+    NEG     = 0b1011,
+    S       = 0b1100,
+    PLAY    = 0b1101,
+    REC     = 0b1110
+};
+
+int binWriteDisplay (uint8_t digit, uint8_t segment) 
 {
     if (digit > 0b111 || segment > 0b111) 
     {
@@ -24,13 +69,35 @@ static int binWriteDisplay(uint8_t digit, uint8_t segment)
     return 0;
 }
 
-static void displayOff (void) 
+void writeSymbol (enum Symbol symbol)
 {
-    binWriteDisplay(0b111, 0b111);
+    binWriteDisplay(symbol >> 3, symbol & 0b0111);
+}
+
+int writeDigit (uint8_t digit, uint8_t value)
+{
+    if (digit > 4)
+    {
+        printf("Digit must be between 0 and 4");
+        return 1;
+    }
+
+    for (uint8_t i = 0; i < 7; i++) 
+    {
+        
+    }
+
+    //binWriteDisplay(digit + 2, )
+
+    return 0;
 }
 
+void displayOff (void) 
+{
+    binWriteDisplay(0b111, 0b111);
+}
 
-static void printBinary (int num) 
+void printBinary (int num) 
 {
     for (int i = 3; i >= 0; i--) 
     {
@@ -39,9 +106,9 @@ static void printBinary (int num)
     printf("\n");
 }
 
-static void testDisplay (void)
+void testDisplay (void)
 {
-    for (int i = 0; i < 0b111; i++)
+    /*for (int i = 0; i < 0b111; i++)
     {
         for (int j = 0; j < 0b111; j++)
         {
@@ -49,12 +116,14 @@ static void testDisplay (void)
             printBinary(j);
             printf("\n");
             binWriteDisplay(i, j);
-            delay(1000);
+            delayMicroseconds(100000);
         }
-    }
+    }*/
+    writeSymbol(ANT);
+    writeSymbol(REC);
 }
 
-static void setupDisplay (void)
+void setupDisplay (void)
 {
     for (int i = 0; i < 3; i++)
     {
@@ -66,4 +135,5 @@ static void setupDisplay (void)
     }
 
     displayOff();
-}
\ No newline at end of file
+}
+