1
0
Fork 0

firmware: poc

main
radex 2024-03-23 15:49:57 +01:00
parent ee2685e165
commit cfb1cda066
Signed by: radex
SSH Key Fingerprint: SHA256:hvqRXAGG1h89yqnS+cyFTLKQbzjWD4uXIqw7Y+0ws30
1 changed files with 152 additions and 135 deletions

View File

@ -1,174 +1,191 @@
#include <Arduino.h>
#include <FastLED.h>
// #define NUM_LEDS 1
// #define DATA_PIN 23u
// CRGB leds[NUM_LEDS];
#define Q1 5
#define Q2 29
#define Q3 28
#define Q4 27
#define Q5 26
#define Q6 22
#define Q7 21
#define Q8 20
#define Q9 8
#define Q10 19
#define Q11 18
#define Q12 17
#define Q13 16
#define Q14 9
#define Q15 10
#define Q16 11
#define Qout 12
#define SER 2
#define OE 3
#define RCLK 4
#define SRCLK 6
#define SRCLR 7
#define COL_SER 0
#define COL_OE 26
#define COL_RCLK 27
#define COL_SRCLK 28
#define COL_SRCLR 29
#define ROW_SER 8
#define ROW_OE 7
#define ROW_RCLK 6
#define ROW_SRCLK 5
#define ROW_SRCLR 4
#define ROW_COUNT 24
#define COL_COUNT 14
void printOut() {
Serial.println("------");
Serial.println("Row:");
Serial.print("SER: ");
Serial.println(digitalRead(SER));
Serial.println(digitalRead(ROW_SER));
Serial.print("OE_N: ");
Serial.println(digitalRead(OE));
Serial.println(digitalRead(ROW_OE));
Serial.print("RCLK: ");
Serial.println(digitalRead(RCLK));
Serial.println(digitalRead(ROW_RCLK));
Serial.print("SRCLK: ");
Serial.println(digitalRead(SRCLK));
Serial.println(digitalRead(ROW_SRCLK));
Serial.print("SRCLR_N: ");
Serial.println(digitalRead(SRCLR));
Serial.println(digitalRead(ROW_SRCLR));
Serial.println("------");
Serial.println("Col:");
// uint16_t q = digitalRead(Q1) << 8 |
// digitalRead(Q2) << 7 |
// digitalRead(Q3) << 6 |
// digitalRead(Q4) << 5 |
// digitalRead(Q5) << 4 |
// digitalRead(Q6) << 3 |
// digitalRead(Q7) << 2 |
// digitalRead(Q8) << 1 |
// digitalRead(Qout);
Serial.print("SER: ");
Serial.println(digitalRead(COL_SER));
// Serial.print("Q: ");
// Serial.println(q, BIN);
Serial.println();
Serial.print("OE_N: ");
Serial.println(digitalRead(COL_OE));
Serial.print(digitalRead(Q1));
Serial.print(digitalRead(Q2));
Serial.print(digitalRead(Q3));
Serial.print(digitalRead(Q4));
Serial.print(digitalRead(Q5));
Serial.print(digitalRead(Q6));
Serial.print(digitalRead(Q7));
Serial.print(digitalRead(Q8));
Serial.print(" ");
Serial.print(digitalRead(Q9));
Serial.print(digitalRead(Q10));
Serial.print(digitalRead(Q11));
Serial.print(digitalRead(Q12));
Serial.print(digitalRead(Q13));
Serial.print(digitalRead(Q14));
Serial.print(digitalRead(Q15));
Serial.print(digitalRead(Q16));
Serial.print("RCLK: ");
Serial.println(digitalRead(COL_RCLK));
Serial.print(" ");
Serial.print(digitalRead(Qout));
Serial.println();
Serial.print("SRCLK: ");
Serial.println(digitalRead(COL_SRCLK));
Serial.print("SRCLR_N: ");
Serial.println(digitalRead(COL_SRCLR));
}
void setup() {
// pinMode(LED_BUILTIN, OUTPUT);
// pinMode(24u, INPUT_PULLUP);
// Serial.begin(9600);
// FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.setBrightness(30);
Serial.begin(9600);
Serial.println("Hello");
pinMode(Q1, INPUT_PULLDOWN);
pinMode(Q2, INPUT_PULLDOWN);
pinMode(Q3, INPUT_PULLDOWN);
pinMode(Q4, INPUT_PULLDOWN);
pinMode(Q5, INPUT_PULLDOWN);
pinMode(Q6, INPUT_PULLDOWN);
pinMode(Q7, INPUT_PULLDOWN);
pinMode(Q8, INPUT_PULLDOWN);
pinMode(Q9, INPUT_PULLDOWN);
pinMode(Q10, INPUT_PULLDOWN);
pinMode(Q11, INPUT_PULLDOWN);
pinMode(Q12, INPUT_PULLDOWN);
pinMode(Q13, INPUT_PULLDOWN);
pinMode(Q14, INPUT_PULLDOWN);
pinMode(Q15, INPUT_PULLDOWN);
pinMode(Q16, INPUT_PULLDOWN);
pinMode(Qout, INPUT_PULLDOWN);
// set up col pins
pinMode(COL_SER, OUTPUT);
pinMode(COL_OE, OUTPUT);
pinMode(COL_RCLK, OUTPUT);
pinMode(COL_SRCLK, OUTPUT);
pinMode(COL_SRCLR, OUTPUT);
// 1
pinMode(SER, OUTPUT);
// 2
pinMode(OE, OUTPUT);
digitalWrite(OE, HIGH);
// 3
pinMode(RCLK, OUTPUT);
// 4
pinMode(SRCLK, OUTPUT);
// 5
pinMode(SRCLR, OUTPUT);
digitalWrite(SRCLR, HIGH);
// set up row pins
pinMode(ROW_SER, OUTPUT);
pinMode(ROW_OE, OUTPUT);
pinMode(ROW_RCLK, OUTPUT);
pinMode(ROW_SRCLK, OUTPUT);
pinMode(ROW_SRCLR, OUTPUT);
// clear output - cols
digitalWrite(COL_SER, LOW);
digitalWrite(COL_OE, HIGH);
digitalWrite(COL_SRCLR, LOW);
digitalWrite(COL_RCLK, HIGH);
digitalWrite(COL_RCLK, LOW);
digitalWrite(COL_SRCLR, HIGH);
digitalWrite(COL_OE, LOW);
// clear output - rows
digitalWrite(ROW_SER, LOW);
digitalWrite(ROW_OE, HIGH);
digitalWrite(ROW_SRCLR, LOW);
digitalWrite(ROW_RCLK, HIGH);
digitalWrite(ROW_RCLK, LOW);
digitalWrite(ROW_SRCLR, HIGH);
digitalWrite(ROW_OE, LOW);
printOut();
digitalWrite(ROW_SER, HIGH);
digitalWrite(ROW_SRCLK, HIGH);
digitalWrite(ROW_SRCLK, LOW);
digitalWrite(ROW_SER, LOW);
digitalWrite(ROW_RCLK, HIGH);
digitalWrite(ROW_RCLK, LOW);
digitalWrite(COL_SER, HIGH);
digitalWrite(COL_SRCLK, HIGH);
digitalWrite(COL_SRCLK, LOW);
digitalWrite(COL_SER, LOW);
digitalWrite(COL_SRCLK, HIGH);
digitalWrite(COL_SRCLK, LOW);
digitalWrite(COL_RCLK, HIGH);
digitalWrite(COL_RCLK, LOW);
}
// uint8_t r, g, b;
uint16_t prevQ = 255;
void loop() {
// r += 3;
// g += 5;
// b += 7;
// leds[0] = CRGB(r, g, b);
// FastLED.show();
// delay(100);
// if (digitalRead(24u) == LOW) {
// Serial.println("Button pressed");
// }
char c = Serial.read();
if (c == 'o') {
printOut();
}
if (c == '1') {
digitalWrite(SER, !digitalRead(SER));
printOut();
} else if (c == '2') {
digitalWrite(OE, !digitalRead(OE));
printOut();
} else if (c == '3') {
digitalWrite(RCLK, HIGH);
digitalWrite(RCLK, LOW);
printOut();
} else if (c == '4') {
digitalWrite(SRCLK, HIGH);
digitalWrite(SRCLK, LOW);
printOut();
} else if (c == '5') {
digitalWrite(SRCLR, !digitalRead(SRCLR));
printOut();
// clear columns
digitalWrite(COL_SRCLR, LOW);
digitalWrite(COL_SRCLK, HIGH);
digitalWrite(COL_SRCLK, LOW);
digitalWrite(COL_SRCLR, HIGH);
// start selecting columns
digitalWrite(COL_SER, HIGH);
for (int y = 0; y < COL_COUNT; y++) {
// next column
digitalWrite(COL_SRCLK, HIGH);
digitalWrite(COL_SRCLK, LOW);
// only one column
digitalWrite(COL_SER, LOW);
// we use 7/8 stages on shift registers for columns
if (y % 7 == 0) {
digitalWrite(COL_SRCLK, HIGH);
digitalWrite(COL_SRCLK, LOW);
}
// clear rows
digitalWrite(ROW_SRCLR, LOW);
digitalWrite(ROW_SRCLK, HIGH);
digitalWrite(ROW_SRCLK, LOW);
digitalWrite(ROW_SRCLR, HIGH);
// latch cleared row
digitalWrite(ROW_RCLK, HIGH);
digitalWrite(ROW_RCLK, LOW);
// latch column
digitalWrite(COL_RCLK, HIGH);
digitalWrite(COL_RCLK, LOW);
// start selecting rows
digitalWrite(ROW_SER, HIGH);
for (int x = 0; x < ROW_COUNT; x++) {
// next row
digitalWrite(ROW_SRCLK, HIGH);
digitalWrite(ROW_SRCLK, LOW);
// only one row
digitalWrite(ROW_SER, LOW);
// latch
digitalWrite(ROW_RCLK, HIGH);
digitalWrite(ROW_RCLK, LOW);
// delay
// delay(1);
}
}
// if (c == '1') {
// digitalWrite(SER, !digitalRead(SER));
// printOut();
// } else if (c == '2') {
// digitalWrite(OE, !digitalRead(OE));
// printOut();
// } else if (c == '3') {
// digitalWrite(RCLK, HIGH);
// digitalWrite(RCLK, LOW);
// printOut();
// } else if (c == '4') {
// digitalWrite(SRCLK, HIGH);
// digitalWrite(SRCLK, LOW);
// printOut();
// } else if (c == '5') {
// digitalWrite(SRCLR, !digitalRead(SRCLR));
// printOut();
// }
}