mirror of https://github.com/radex/radmatrix.git
Compare commits
10 Commits
84e0eb93e9
...
cd4aa9ba09
Author | SHA1 | Date |
---|---|---|
radex | cd4aa9ba09 | |
radex | 480068fabb | |
radex | 1fc98118de | |
radex | 43849b1a98 | |
radex | cffe7eefbf | |
radex | fe46fc625d | |
radex | 9307c59b3e | |
radex | f2a2b931f8 | |
radex | 76eef53dd0 | |
radex | 9182e57b95 |
|
@ -1 +1 @@
|
||||||
badapple.webm
|
video/
|
||||||
|
|
|
@ -6,5 +6,5 @@
|
||||||
src/gfx_png.h
|
src/gfx_png.h
|
||||||
src/audio_sample.h
|
src/audio_sample.h
|
||||||
gfx/
|
gfx/
|
||||||
gfx_output/
|
video_output/
|
||||||
audio/
|
audio/
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
convert video
|
## convert video
|
||||||
|
|
||||||
|
```sh
|
||||||
|
scripts/convert.sh ../badapple.webm
|
||||||
|
```
|
||||||
|
|
||||||
|
or manually:
|
||||||
|
|
||||||
```
|
```
|
||||||
ffmpeg -i ../badapple.webm -vf "fps=30,scale=40:40:force_original_aspect_ratio=increase,crop=40:40,format=gray" gfx/frame_%04d.png
|
ffmpeg -i ../badapple.webm -vf "fps=30,scale=40:40:force_original_aspect_ratio=increase,crop=40:40,format=gray" gfx/frame_%04d.png
|
||||||
|
|
|
@ -16,7 +16,7 @@ if len(data_in.shape)>1:
|
||||||
print("resampling...")
|
print("resampling...")
|
||||||
|
|
||||||
converter = 'sinc_best' # or 'sinc_fastest', ...
|
converter = 'sinc_best' # or 'sinc_fastest', ...
|
||||||
desired_sample_rate = 44000.0
|
desired_sample_rate = 22000.0
|
||||||
ratio = desired_sample_rate/datasamplerate
|
ratio = desired_sample_rate/datasamplerate
|
||||||
data_out = samplerate.resample(data_in, ratio, converter)
|
data_out = samplerate.resample(data_in, ratio, converter)
|
||||||
|
|
||||||
|
@ -58,7 +58,9 @@ normalized = [int((v-minValue)/vrange*255) for v in data_out]
|
||||||
|
|
||||||
print("writing blob...")
|
print("writing blob...")
|
||||||
|
|
||||||
with open("audio/audio.bin", "wb") as f:
|
os.makedirs("video_output", exist_ok=True)
|
||||||
|
|
||||||
|
with open("video_output/audio.bin", "wb") as f:
|
||||||
f.write(bytes(normalized))
|
f.write(bytes(normalized))
|
||||||
|
|
||||||
print("done!")
|
print("done!")
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
echo "converting $1"
|
||||||
|
rm -fr gfx
|
||||||
|
rm -fr video_output
|
||||||
|
rm -fr audio
|
||||||
|
mkdir gfx
|
||||||
|
ffmpeg -i "$1" -vf "fps=30,scale=40:40:force_original_aspect_ratio=increase,crop=40:40,format=gray" gfx/frame_%04d.png
|
||||||
|
python3 scripts/gfx_to_blob.py
|
||||||
|
mkdir audio
|
||||||
|
ffmpeg -i "$1" -ar 44000 audio/output.wav
|
||||||
|
python3 scripts/audio_convert.py
|
||||||
|
open video_output
|
|
@ -26,10 +26,10 @@ for (name, path) in gfx_files:
|
||||||
lengths += size.to_bytes(2, byteorder="little")
|
lengths += size.to_bytes(2, byteorder="little")
|
||||||
|
|
||||||
# create the output directory if it doesn't exist
|
# create the output directory if it doesn't exist
|
||||||
os.makedirs("gfx_output", exist_ok=True)
|
os.makedirs("video_output", exist_ok=True)
|
||||||
|
|
||||||
with open("gfx_output/gfx.bin", "wb") as f:
|
with open("video_output/gfx.bin", "wb") as f:
|
||||||
f.write(blob)
|
f.write(blob)
|
||||||
|
|
||||||
with open("gfx_output/gfx_len.bin", "wb") as f:
|
with open("video_output/gfx_len.bin", "wb") as f:
|
||||||
f.write(lengths)
|
f.write(lengths)
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
#define AUDIO_PIN 2
|
#define AUDIO_PIN 2
|
||||||
|
|
||||||
#define AUDIO_RATE 44000.0f
|
#define AUDIO_RATE 22000.0f
|
||||||
#define BUFFER_LEN 512*32
|
#define BUFFER_LEN 512*2
|
||||||
#define BUFFER_LEN_MS (BUFFER_LEN / AUDIO_RATE) * 1000.0f
|
#define BUFFER_LEN_MS (BUFFER_LEN / AUDIO_RATE) * 1000.0f
|
||||||
|
|
||||||
extern uint8_t wav_buffer_0[BUFFER_LEN];
|
extern uint8_t wav_buffer_0[BUFFER_LEN];
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
#include "lodepng.h"
|
#include "lodepng.h"
|
||||||
#include "leds.h"
|
#include "leds.h"
|
||||||
|
|
||||||
uint16_t gfxFrameLengthsBuffer[12000] = {0};
|
uint16_t gfxFrameLengthsBuffer[24000] = {0};
|
||||||
uint16_t frameCount = 0;
|
uint16_t frameCount = 0;
|
||||||
|
|
||||||
uint8_t gfxFrameBuffer[2048] = {0};
|
uint8_t gfxFrameBuffer[6400] = {0};
|
||||||
|
|
||||||
bool gfx_decoder_loadNextFrame() {
|
bool gfx_decoder_loadNextFrame() {
|
||||||
// load frame from SD card
|
// load frame from SD card
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
extern uint16_t gfxFrameLengthsBuffer[12000];
|
extern uint16_t gfxFrameLengthsBuffer[24000];
|
||||||
extern uint16_t frameCount;
|
extern uint16_t frameCount;
|
||||||
extern uint8_t gfxFrameBuffer[2048];
|
extern uint8_t gfxFrameBuffer[6400];
|
||||||
|
|
||||||
bool gfx_decoder_loadNextFrame();
|
bool gfx_decoder_loadNextFrame();
|
||||||
bool gfx_decoder_handleLoop();
|
bool gfx_decoder_handleLoop();
|
||||||
|
|
|
@ -2,11 +2,22 @@
|
||||||
#include "hardware/gpio.h"
|
#include "hardware/gpio.h"
|
||||||
#include "mbed_wait_api.h"
|
#include "mbed_wait_api.h"
|
||||||
#include "pico/multicore.h"
|
#include "pico/multicore.h"
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
|
||||||
#include "leds.h"
|
#include "leds.h"
|
||||||
|
#include "leds.pio.h"
|
||||||
|
|
||||||
|
PIO pusher_pio = pio0;
|
||||||
|
uint pusher_sm = 255; // invalid
|
||||||
|
|
||||||
|
// NOTE: RCLK, SRCLK capture on *rising* edge
|
||||||
inline void pulsePin(uint8_t pin) {
|
inline void pulsePin(uint8_t pin) {
|
||||||
gpio_put(pin, HIGH);
|
gpio_put(pin, HIGH);
|
||||||
|
// there are glitches without this (maybe just due to breadboard...)
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
// busy_wait_us_32(50);
|
||||||
gpio_put(pin, LOW);
|
gpio_put(pin, LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,12 +31,13 @@ inline void outputEnable(uint8_t pin, bool enable) {
|
||||||
gpio_put(pin, !enable);
|
gpio_put(pin, !enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have 4-bit color depth, so 16 levels of brightness
|
// we have COLOR_BITS-bit color depth, so 2^COLOR_BITS levels of brightness
|
||||||
// we go from phase 0 to phase 3
|
// we go from phase 0 to phase (COLOR_BITS-1)
|
||||||
uint8_t brightnessPhase = 0;
|
uint8_t brightnessPhase = 0;
|
||||||
uint8_t brightnessPhaseDelays[] = {1, 10, 30, 100};
|
uint8_t brightnessPhaseDelays[COLOR_BITS] = {0, 1, 6, 20, 60};
|
||||||
|
|
||||||
uint8_t framebuffer[ROW_COUNT * COL_COUNT] = {0};
|
// NOTE: Alignment required to allow 4-byte reads
|
||||||
|
uint8_t framebuffer[ROW_COUNT * COL_COUNT] __attribute__((aligned(32))) = {0};
|
||||||
|
|
||||||
void leds_init() {
|
void leds_init() {
|
||||||
memset(framebuffer, 0, sizeof(framebuffer));
|
memset(framebuffer, 0, sizeof(framebuffer));
|
||||||
|
@ -37,6 +49,7 @@ void leds_init() {
|
||||||
// set up col pins
|
// set up col pins
|
||||||
pinMode(COL_SER, OUTPUT);
|
pinMode(COL_SER, OUTPUT);
|
||||||
pinMode(COL_OE, OUTPUT);
|
pinMode(COL_OE, OUTPUT);
|
||||||
|
outputEnable(ROW_OE, false);
|
||||||
pinMode(COL_RCLK, OUTPUT);
|
pinMode(COL_RCLK, OUTPUT);
|
||||||
pinMode(COL_SRCLK, OUTPUT);
|
pinMode(COL_SRCLK, OUTPUT);
|
||||||
pinMode(COL_SRCLR, OUTPUT);
|
pinMode(COL_SRCLR, OUTPUT);
|
||||||
|
@ -44,6 +57,7 @@ void leds_init() {
|
||||||
// set up row pins
|
// set up row pins
|
||||||
pinMode(ROW_SER, OUTPUT);
|
pinMode(ROW_SER, OUTPUT);
|
||||||
pinMode(ROW_OE, OUTPUT);
|
pinMode(ROW_OE, OUTPUT);
|
||||||
|
outputEnable(ROW_OE, false);
|
||||||
pinMode(ROW_RCLK, OUTPUT);
|
pinMode(ROW_RCLK, OUTPUT);
|
||||||
pinMode(ROW_SRCLK, OUTPUT);
|
pinMode(ROW_SRCLK, OUTPUT);
|
||||||
pinMode(ROW_SRCLR, OUTPUT);
|
pinMode(ROW_SRCLR, OUTPUT);
|
||||||
|
@ -70,10 +84,10 @@ void main2() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void leds_initPusher();
|
||||||
|
|
||||||
void leds_initRenderer() {
|
void leds_initRenderer() {
|
||||||
// launch core1
|
leds_initPusher();
|
||||||
// NOTE: For some reason, without delay, core1 doesn't start?
|
|
||||||
// delay(500);
|
|
||||||
multicore_reset_core1();
|
multicore_reset_core1();
|
||||||
multicore_launch_core1(main2);
|
multicore_launch_core1(main2);
|
||||||
}
|
}
|
||||||
|
@ -86,7 +100,7 @@ void leds_render() {
|
||||||
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
|
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
|
||||||
|
|
||||||
// start selecting rows
|
// start selecting rows
|
||||||
digitalWrite(ROW_SER, HIGH);
|
gpio_put(ROW_SER, HIGH);
|
||||||
|
|
||||||
for (int yCount = 0; yCount < ROW_COUNT; yCount++) {
|
for (int yCount = 0; yCount < ROW_COUNT; yCount++) {
|
||||||
int y = ROW_COUNT - 1 - yCount;
|
int y = ROW_COUNT - 1 - yCount;
|
||||||
|
@ -94,12 +108,12 @@ void leds_render() {
|
||||||
// we want to keep the matrix on during update (except during latch). At low brightness phases,
|
// we want to keep the matrix on during update (except during latch). At low brightness phases,
|
||||||
// we want it off to actually be dim
|
// we want it off to actually be dim
|
||||||
bool brightPhase = brightnessPhase >= 2;
|
bool brightPhase = brightnessPhase >= 2;
|
||||||
// digitalWrite(ROW_OE, !brightPhase);
|
outputEnable(ROW_OE, brightPhase);
|
||||||
|
|
||||||
// next row
|
// next row
|
||||||
pulsePin(ROW_SRCLK);
|
pulsePin(ROW_SRCLK);
|
||||||
// only one row
|
// only one row
|
||||||
digitalWrite(ROW_SER, LOW);
|
gpio_put(ROW_SER, LOW);
|
||||||
|
|
||||||
// we use 7/8 stages on shift registers + 1 is unused
|
// we use 7/8 stages on shift registers + 1 is unused
|
||||||
int moduleY = yCount % 20;
|
int moduleY = yCount % 20;
|
||||||
|
@ -111,31 +125,54 @@ void leds_render() {
|
||||||
pulsePin(ROW_SRCLK);
|
pulsePin(ROW_SRCLK);
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear columns
|
|
||||||
clearShiftReg(COL_SRCLK, COL_SRCLR);
|
|
||||||
|
|
||||||
// set row data
|
// set row data
|
||||||
for (int x = 0; x < COL_COUNT; x++) {
|
|
||||||
// get value
|
|
||||||
// NOTE: values are loaded right-left
|
// NOTE: values are loaded right-left
|
||||||
uint8_t pxValue = framebuffer[y * ROW_COUNT + x];
|
// Optimized implementation: use PIO, avoid division, modulo, etc...
|
||||||
// apply brightness
|
// we use 7/8 stages of each shift register + 1 is unused so we need to do
|
||||||
bool gotLight = (pxValue >> (4 + brightnessPhase)) & 1;
|
// silly shit
|
||||||
// set value (note: inverted logic)
|
// TODO: Some ideas for future optimization:
|
||||||
gpio_put(COL_SER, !gotLight);
|
// - see if we can disable px pusher delays on improved electric interface
|
||||||
// push value
|
// - use a profiler to see how the inner loop can be improved
|
||||||
pulsePin(COL_SRCLK);
|
// - do the shift register bullshit once per frame, so that data can be loaded into
|
||||||
|
// registers with aligned access, DMA, etc.
|
||||||
|
// - improve outer loop which adds 2us of processing on each loop
|
||||||
|
// - change busy wait into some kind of interrupt-based thing so that processing can continue
|
||||||
|
// - latch row and clock simultaneously, avoid disabling output
|
||||||
|
uint8_t *buffer = framebuffer + (y * COL_COUNT);
|
||||||
|
for (int xModule = 0; xModule < COL_MODULES; xModule++) {
|
||||||
|
uint32_t pxValues;
|
||||||
|
|
||||||
// we use 7/8 stages on shift registers + 1 is unused
|
// placeholder at 0; pixels 0, 1, 2
|
||||||
int moduleX = x % 20;
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer));
|
||||||
if (moduleX == 0) {
|
pxValues = pxValues << 8;
|
||||||
pulsePin(COL_SRCLK);
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
}
|
|
||||||
if (moduleX == 6 || moduleX == 13 || moduleX == 19) {
|
// pixels 3, 4, 5, placeholder at 6
|
||||||
pulsePin(COL_SRCLK);
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer + 3));
|
||||||
}
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
|
|
||||||
|
// pixels 6, 7, 8, 9
|
||||||
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer + 6));
|
||||||
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
|
|
||||||
|
// pixels 10, 11, 12, placeholder at 13
|
||||||
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer + 10));
|
||||||
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
|
|
||||||
|
// pixels 13, 14, 15, 16
|
||||||
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer + 13));
|
||||||
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
|
|
||||||
|
// pixels 17, 18, 19, placeholder
|
||||||
|
pxValues = *(reinterpret_cast<uint32_t *>(buffer + 17));
|
||||||
|
pio_sm_put_blocking(pusher_pio, pusher_sm, pxValues >> brightnessPhase);
|
||||||
|
|
||||||
|
buffer += 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wait for all data to be shifted out
|
||||||
|
pio_sm_drain_tx_fifo(pusher_pio, pusher_sm);
|
||||||
|
|
||||||
// disable columns before latch
|
// disable columns before latch
|
||||||
outputEnable(ROW_OE, false);
|
outputEnable(ROW_OE, false);
|
||||||
|
|
||||||
|
@ -150,5 +187,39 @@ void leds_render() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// next brightness phase
|
// next brightness phase
|
||||||
brightnessPhase = (brightnessPhase + 1) % 4;
|
brightnessPhase = (brightnessPhase + 1) % COLOR_BITS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void leds_initPusher() {
|
||||||
|
PIO pio = pusher_pio;
|
||||||
|
uint sm = pio_claim_unused_sm(pio, true);
|
||||||
|
pusher_sm = sm;
|
||||||
|
|
||||||
|
uint offset = pio_add_program(pio, &leds_px_pusher_program);
|
||||||
|
|
||||||
|
uint dataPin = COL_SER;
|
||||||
|
uint latchPin = COL_SRCLK;
|
||||||
|
|
||||||
|
pio_sm_config config = leds_px_pusher_program_get_default_config(offset);
|
||||||
|
sm_config_set_clkdiv_int_frac(&config, 2, 0);
|
||||||
|
|
||||||
|
// Shift OSR to the right, autopull
|
||||||
|
sm_config_set_out_shift(&config, true, true, 32);
|
||||||
|
|
||||||
|
// Set OUT (data) pin, connect to pad, set as output
|
||||||
|
sm_config_set_out_pins(&config, dataPin, 1);
|
||||||
|
pio_gpio_init(pio, dataPin);
|
||||||
|
pio_sm_set_consecutive_pindirs(pio, sm, dataPin, 1, true);
|
||||||
|
|
||||||
|
// data is inverted
|
||||||
|
gpio_set_outover(dataPin, GPIO_OVERRIDE_INVERT);
|
||||||
|
|
||||||
|
// Set SET (latch) pin, connect to pad, set as output
|
||||||
|
sm_config_set_sideset_pins(&config, latchPin);
|
||||||
|
pio_gpio_init(pio, latchPin);
|
||||||
|
pio_sm_set_consecutive_pindirs(pio, sm, latchPin, 1, true);
|
||||||
|
|
||||||
|
// Load our configuration, and jump to the start of the program
|
||||||
|
pio_sm_init(pio, sm, offset, &config);
|
||||||
|
pio_sm_set_enabled(pio, sm, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,10 @@
|
||||||
#define ROW_SRCLR 10
|
#define ROW_SRCLR 10
|
||||||
|
|
||||||
#define ROW_COUNT 40
|
#define ROW_COUNT 40
|
||||||
#define COL_COUNT 40
|
#define COL_MODULES 2
|
||||||
|
#define COL_COUNT COL_MODULES * 20
|
||||||
|
|
||||||
|
#define COLOR_BITS 5
|
||||||
#define FPS 30
|
#define FPS 30
|
||||||
#define MS_PER_FRAME 1000 / FPS
|
#define MS_PER_FRAME 1000 / FPS
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
.program leds_px_pusher
|
||||||
|
.side_set 1 opt
|
||||||
|
.wrap_target
|
||||||
|
public entry_point:
|
||||||
|
out null, 3 side 0 [0] ; ignore least significant digits
|
||||||
|
out pins, 1 ; set bit (shifted for brightness phase by C code)
|
||||||
|
out null, 4 side 1 [1] ; ignore remaining bits, latch data, allow time for latching
|
||||||
|
nop side 0 ; return to 0 (weird glitches happen otherwise)
|
||||||
|
.wrap
|
|
@ -0,0 +1,43 @@
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
// This file is autogenerated by pioasm; do not edit! //
|
||||||
|
// -------------------------------------------------- //
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// -------------- //
|
||||||
|
// leds_px_pusher //
|
||||||
|
// -------------- //
|
||||||
|
|
||||||
|
#define leds_px_pusher_wrap_target 0
|
||||||
|
#define leds_px_pusher_wrap 3
|
||||||
|
|
||||||
|
#define leds_px_pusher_offset_entry_point 0u
|
||||||
|
|
||||||
|
static const uint16_t leds_px_pusher_program_instructions[] = {
|
||||||
|
// .wrap_target
|
||||||
|
0x7063, // 0: out null, 3 side 0
|
||||||
|
0x6001, // 1: out pins, 1
|
||||||
|
0x7964, // 2: out null, 4 side 1 [1]
|
||||||
|
0xb042, // 3: nop side 0
|
||||||
|
// .wrap
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !PICO_NO_HARDWARE
|
||||||
|
static const struct pio_program leds_px_pusher_program = {
|
||||||
|
.instructions = leds_px_pusher_program_instructions,
|
||||||
|
.length = 4,
|
||||||
|
.origin = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline pio_sm_config leds_px_pusher_program_get_default_config(uint offset) {
|
||||||
|
pio_sm_config c = pio_get_default_sm_config();
|
||||||
|
sm_config_set_wrap(&c, offset + leds_px_pusher_wrap_target, offset + leds_px_pusher_wrap);
|
||||||
|
sm_config_set_sideset(&c, 2, true, false);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -5,16 +5,19 @@
|
||||||
#include "leds.h"
|
#include "leds.h"
|
||||||
#include "gfx_decoder.h"
|
#include "gfx_decoder.h"
|
||||||
|
|
||||||
|
void loadVideo(size_t index);
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
leds_init();
|
leds_init();
|
||||||
setupSDPins();
|
setupSDPins();
|
||||||
pinMode(6, INPUT_PULLUP);
|
pinMode(4, INPUT_PULLUP);
|
||||||
|
|
||||||
delay(2000);
|
delay(2000);
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("Hello worldd!");
|
Serial.println("Hello worldd!");
|
||||||
|
|
||||||
init_audio();
|
init_audio();
|
||||||
|
leds_initRenderer();
|
||||||
|
|
||||||
// while (!isSDCardInserted()) {
|
// while (!isSDCardInserted()) {
|
||||||
// Serial.println("SD card not connected, waiting...");
|
// Serial.println("SD card not connected, waiting...");
|
||||||
|
@ -23,25 +26,37 @@ void setup() {
|
||||||
// delay(100);
|
// delay(100);
|
||||||
|
|
||||||
setupSD();
|
setupSD();
|
||||||
|
sd_loadPlaylist();
|
||||||
|
|
||||||
sd_loadAudio();
|
loadVideo(0);
|
||||||
|
}
|
||||||
|
|
||||||
if (!sd_loadGfxFrameLengths()) {
|
size_t currentVideoIndex = 0;
|
||||||
|
bool isLoaded = false;
|
||||||
|
|
||||||
|
void loadVideo(size_t index) {
|
||||||
|
audio_stop();
|
||||||
|
|
||||||
|
sd_loadAudio(index);
|
||||||
|
|
||||||
|
if (!sd_loadGfxFrameLengths(index)) {
|
||||||
Serial.println("Failed to load gfx frame lengths");
|
Serial.println("Failed to load gfx frame lengths");
|
||||||
while (true) {}
|
while (true) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sd_loadGfxBlob()) {
|
if (!sd_loadGfxBlob(index)) {
|
||||||
Serial.println("Failed to load gfx blob");
|
Serial.println("Failed to load gfx blob");
|
||||||
while (true) {}
|
while (true) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
leds_initRenderer();
|
isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if (digitalRead(6) == LOW) {
|
if (digitalRead(4) == LOW) {
|
||||||
sd_loadNextAudio();
|
Serial.println("Next song!");
|
||||||
|
currentVideoIndex = (currentVideoIndex + 1) % playlistSize;
|
||||||
|
loadVideo(currentVideoIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (Serial.available() > 0) {
|
// if (Serial.available() > 0) {
|
||||||
|
@ -57,7 +72,11 @@ void loop() {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
if (isLoaded) {
|
||||||
|
sd_loadNextAudio();
|
||||||
|
|
||||||
if (!gfx_decoder_handleLoop()) {
|
if (!gfx_decoder_handleLoop()) {
|
||||||
Serial.println("Failed to load frame...");
|
Serial.println("Failed to load frame...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ void setupSD() {
|
||||||
|
|
||||||
// printSDConfig();
|
// printSDConfig();
|
||||||
|
|
||||||
if (!SD.begin(5000000, PIN_SPI_SS)) {
|
if (!SD.begin(20000000, PIN_SPI_SS)) {
|
||||||
Serial.println("SD Initialization failed!");
|
Serial.println("SD Initialization failed!");
|
||||||
// Serial.print("Error code: ");
|
// Serial.print("Error code: ");
|
||||||
// Serial.println(SD.card.errorCode(), HEX);
|
// Serial.println(SD.card.errorCode(), HEX);
|
||||||
|
@ -156,10 +156,83 @@ void printSDStats(RP2040_SdVolume volume) {
|
||||||
Serial.println((float)volumesize / 1024.0);
|
Serial.println((float)volumesize / 1024.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String playlist[128] = {};
|
||||||
|
size_t playlistSize = 0;
|
||||||
|
|
||||||
|
void sd_loadPlaylist() {
|
||||||
|
auto path = "video/playlist.txt";
|
||||||
|
|
||||||
|
if (!SD.exists(path)) {
|
||||||
|
Serial.println("Could not find playlist for videos :(");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto playlistFile = SD.open(path, FILE_READ);
|
||||||
|
Serial.println("Playlist file opened");
|
||||||
|
|
||||||
|
char playlist_buffer[512];
|
||||||
|
auto fileSize = playlistFile.size();
|
||||||
|
if (fileSize > sizeof(playlist_buffer)) {
|
||||||
|
Serial.print("Playlist file too large, max: ");
|
||||||
|
Serial.println(sizeof(playlist_buffer));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (playlistFile.read(&playlist_buffer, sizeof(playlist_buffer)) != fileSize) {
|
||||||
|
Serial.println("Could not read playlist file");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
playlistFile.close();
|
||||||
|
|
||||||
|
Serial.println("Parsing playlist...");
|
||||||
|
|
||||||
|
// parse playlist
|
||||||
|
auto playlistStr = String(playlist_buffer, fileSize);
|
||||||
|
Serial.println(playlistStr);
|
||||||
|
|
||||||
|
auto idx = 0;
|
||||||
|
while (true) {
|
||||||
|
auto nextIdx = playlistStr.indexOf('\n', idx);
|
||||||
|
if (nextIdx == -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto line = playlistStr.substring(idx, nextIdx);
|
||||||
|
if (line.length() == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (line.length() > 8) {
|
||||||
|
Serial.print("Video name too long, size: ");
|
||||||
|
Serial.print(line.length());
|
||||||
|
Serial.println(", max 8");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
playlist[playlistSize++] = line;
|
||||||
|
idx = nextIdx + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("Playlist loaded");
|
||||||
|
|
||||||
|
for (size_t i = 0; i < playlistSize; i++) {
|
||||||
|
Serial.print(i);
|
||||||
|
Serial.print(": ");
|
||||||
|
Serial.println(playlist[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
File audioFile;
|
File audioFile;
|
||||||
|
|
||||||
void sd_loadAudio() {
|
void sd_loadAudio(size_t index) {
|
||||||
if (!SD.exists("/badapple/audio.bin")) {
|
if (index >= playlistSize) {
|
||||||
|
Serial.println("Index out of range");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto path = "video/" + playlist[index] + "/audio.bin";
|
||||||
|
|
||||||
|
if (!SD.exists(path)) {
|
||||||
Serial.println("Audio not found :(");
|
Serial.println("Audio not found :(");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +241,7 @@ void sd_loadAudio() {
|
||||||
audioFile.close();
|
audioFile.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
audioFile = SD.open("/badapple/audio.bin", FILE_READ);
|
audioFile = SD.open(path, FILE_READ);
|
||||||
Serial.println("Audio file opened");
|
Serial.println("Audio file opened");
|
||||||
|
|
||||||
audio_stop();
|
audio_stop();
|
||||||
|
@ -201,16 +274,23 @@ void sd_loadNextAudio() {
|
||||||
Serial.println("End of audio file, rewinding...");
|
Serial.println("End of audio file, rewinding...");
|
||||||
audioFile.seek(0);
|
audioFile.seek(0);
|
||||||
} else {
|
} else {
|
||||||
|
/*
|
||||||
Serial.print("Read ");
|
Serial.print("Read ");
|
||||||
Serial.print(bytesRead);
|
Serial.print(bytesRead);
|
||||||
Serial.print(" bytes from audio file in ");
|
Serial.print(" bytes from audio file in ");
|
||||||
Serial.print(millis() - b4);
|
Serial.print(millis() - b4);
|
||||||
Serial.println("ms");
|
Serial.println("ms");
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sd_loadGfxFrameLengths() {
|
bool sd_loadGfxFrameLengths(size_t index) {
|
||||||
auto path = "badapple/gfx_len.bin";
|
if (index >= playlistSize) {
|
||||||
|
Serial.println("Index out of range");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto path = "video/" + playlist[index] + "/gfx_len.bin";
|
||||||
|
|
||||||
if (!SD.exists(path)) {
|
if (!SD.exists(path)) {
|
||||||
Serial.println("Frame lengths file not found :(");
|
Serial.println("Frame lengths file not found :(");
|
||||||
|
@ -241,8 +321,13 @@ File gfxFile;
|
||||||
|
|
||||||
uint16_t frameIdx = 0;
|
uint16_t frameIdx = 0;
|
||||||
|
|
||||||
bool sd_loadGfxBlob() {
|
bool sd_loadGfxBlob(size_t index) {
|
||||||
auto path = "badapple/gfx.bin";
|
if (index >= playlistSize) {
|
||||||
|
Serial.println("Index out of range");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto path = "video/" + playlist[index] + "/gfx.bin";
|
||||||
|
|
||||||
if (!SD.exists(path)) {
|
if (!SD.exists(path)) {
|
||||||
Serial.println("Gfx blob file not found :(");
|
Serial.println("Gfx blob file not found :(");
|
||||||
|
@ -252,11 +337,16 @@ bool sd_loadGfxBlob() {
|
||||||
gfxFile = SD.open(path, FILE_READ);
|
gfxFile = SD.open(path, FILE_READ);
|
||||||
Serial.println("Opened video frames");
|
Serial.println("Opened video frames");
|
||||||
|
|
||||||
|
frameIdx = 0;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns size of frame read or -1 if error
|
// Returns size of frame read or -1 if error
|
||||||
int32_t sd_loadNextFrame() {
|
int32_t sd_loadNextFrame() {
|
||||||
|
if (frameIdx > 0) {
|
||||||
|
// return -1;
|
||||||
|
}
|
||||||
if (!gfxFile || !gfxFile.available()) {
|
if (!gfxFile || !gfxFile.available()) {
|
||||||
Serial.println("Gfx file not available");
|
Serial.println("Gfx file not available");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -270,7 +360,8 @@ int32_t sd_loadNextFrame() {
|
||||||
// get size of frame png
|
// get size of frame png
|
||||||
auto frameSize = gfxFrameLengthsBuffer[frameIdx];
|
auto frameSize = gfxFrameLengthsBuffer[frameIdx];
|
||||||
if (frameSize > sizeof(gfxFrameBuffer)) {
|
if (frameSize > sizeof(gfxFrameBuffer)) {
|
||||||
Serial.println("Frame too large");
|
Serial.print("Frame too large: ");
|
||||||
|
Serial.println(frameSize);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,11 @@ void setupSD();
|
||||||
|
|
||||||
bool isSDCardInserted();
|
bool isSDCardInserted();
|
||||||
|
|
||||||
void sd_loadAudio();
|
extern size_t playlistSize;
|
||||||
|
|
||||||
|
void sd_loadPlaylist();
|
||||||
|
void sd_loadAudio(size_t index);
|
||||||
void sd_loadNextAudio();
|
void sd_loadNextAudio();
|
||||||
bool sd_loadGfxFrameLengths();
|
bool sd_loadGfxFrameLengths(size_t index);
|
||||||
bool sd_loadGfxBlob();
|
bool sd_loadGfxBlob(size_t index);
|
||||||
int32_t sd_loadNextFrame();
|
int32_t sd_loadNextFrame();
|
||||||
|
|
|
@ -8,3 +8,5 @@ DET MISO CLK MOSI DAT2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
D2 D3/CS CMD/MOSI VSS1 VDD CLK VSS2 D0/MISO D1
|
||||||
|
x 17 19 x x 18 x 16 x
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -38,8 +38,8 @@
|
||||||
"other_text_upright": false,
|
"other_text_upright": false,
|
||||||
"pads": {
|
"pads": {
|
||||||
"drill": 0.0,
|
"drill": 0.0,
|
||||||
"height": 1.0,
|
"height": 2.5,
|
||||||
"width": 1.525
|
"width": 4.4
|
||||||
},
|
},
|
||||||
"silk_line_width": 0.09999999999999999,
|
"silk_line_width": 0.09999999999999999,
|
||||||
"silk_text_italic": false,
|
"silk_text_italic": false,
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
"silk_text_thickness": 0.09999999999999999,
|
"silk_text_thickness": 0.09999999999999999,
|
||||||
"silk_text_upright": false,
|
"silk_text_upright": false,
|
||||||
"zones": {
|
"zones": {
|
||||||
"min_clearance": 0.25
|
"min_clearance": 0.3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"diff_pair_dimensions": [
|
"diff_pair_dimensions": [
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
"min_track_width": 0.125,
|
"min_track_width": 0.125,
|
||||||
"min_via_annular_width": 0.049999999999999996,
|
"min_via_annular_width": 0.049999999999999996,
|
||||||
"min_via_diameter": 0.6,
|
"min_via_diameter": 0.6,
|
||||||
"solder_mask_to_copper_clearance": 0.0,
|
"solder_mask_to_copper_clearance": 0.005,
|
||||||
"use_height_for_length_calcs": true
|
"use_height_for_length_calcs": true
|
||||||
},
|
},
|
||||||
"teardrop_options": [
|
"teardrop_options": [
|
||||||
|
@ -702,23 +702,29 @@
|
||||||
"show": false
|
"show": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group_by": false,
|
"group_by": true,
|
||||||
"label": "LCSC",
|
"label": "LCSC",
|
||||||
"name": "LCSC",
|
"name": "LCSC",
|
||||||
"show": false
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group_by": false,
|
"group_by": false,
|
||||||
"label": "Description",
|
"label": "Description",
|
||||||
"name": "Description",
|
"name": "Description",
|
||||||
"show": false
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "EXCLUDE_FROM_BOM",
|
||||||
|
"name": "${EXCLUDE_FROM_BOM}",
|
||||||
|
"show": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"filter_string": "",
|
"filter_string": "",
|
||||||
"group_symbols": true,
|
"group_symbols": true,
|
||||||
"name": "",
|
"name": "",
|
||||||
"sort_asc": true,
|
"sort_asc": true,
|
||||||
"sort_field": "Reference"
|
"sort_field": "Value"
|
||||||
},
|
},
|
||||||
"connection_grid_size": 50.0,
|
"connection_grid_size": 50.0,
|
||||||
"drawing": {
|
"drawing": {
|
||||||
|
@ -749,7 +755,7 @@
|
||||||
},
|
},
|
||||||
"net_format_name": "",
|
"net_format_name": "",
|
||||||
"page_layout_descr_file": "",
|
"page_layout_descr_file": "",
|
||||||
"plot_directory": "",
|
"plot_directory": "/Users/radex/Downloads/",
|
||||||
"spice_current_sheet_as_root": false,
|
"spice_current_sheet_as_root": false,
|
||||||
"spice_external_command": "spice \"%I\"",
|
"spice_external_command": "spice \"%I\"",
|
||||||
"spice_model_current_sheet_as_root": true,
|
"spice_model_current_sheet_as_root": true,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -923,7 +923,7 @@
|
||||||
(at 140.97 49.53 180)
|
(at 140.97 49.53 180)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "21ebb72f-9bad-4d6e-b046-8bb788495541")
|
(uuid "21ebb72f-9bad-4d6e-b046-8bb788495541")
|
||||||
|
@ -1267,7 +1267,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C307331"
|
(property "LCSC" "C1525"
|
||||||
(at 69.85 54.61 0)
|
(at 69.85 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
|
|
@ -1922,7 +1922,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C307331"
|
(property "LCSC" "C1525"
|
||||||
(at 148.59 58.42 0)
|
(at 148.59 58.42 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
|
|
@ -1129,13 +1129,13 @@
|
||||||
)
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 52.07 62.23) (xy 101.6 62.23)
|
(xy 52.07 69.85) (xy 82.55 69.85)
|
||||||
)
|
)
|
||||||
(stroke
|
(stroke
|
||||||
(width 0)
|
(width 0)
|
||||||
(type default)
|
(type default)
|
||||||
)
|
)
|
||||||
(uuid "437eac0c-7510-4dbd-bc44-8d54a0f87458")
|
(uuid "47768312-1e06-444e-a205-60ca70975c44")
|
||||||
)
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
|
@ -1167,6 +1167,16 @@
|
||||||
)
|
)
|
||||||
(uuid "56b27960-7c4c-4441-8725-b46d5b62efd2")
|
(uuid "56b27960-7c4c-4441-8725-b46d5b62efd2")
|
||||||
)
|
)
|
||||||
|
(wire
|
||||||
|
(pts
|
||||||
|
(xy 52.07 64.77) (xy 91.44 64.77)
|
||||||
|
)
|
||||||
|
(stroke
|
||||||
|
(width 0)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(uuid "58d4c71f-4f85-4b21-972d-17afca94db00")
|
||||||
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 152.4 92.71) (xy 153.67 92.71)
|
(xy 152.4 92.71) (xy 153.67 92.71)
|
||||||
|
@ -1189,13 +1199,13 @@
|
||||||
)
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 52.07 64.77) (xy 91.44 64.77)
|
(xy 52.07 62.23) (xy 101.6 62.23)
|
||||||
)
|
)
|
||||||
(stroke
|
(stroke
|
||||||
(width 0)
|
(width 0)
|
||||||
(type default)
|
(type default)
|
||||||
)
|
)
|
||||||
(uuid "5f401f97-217c-4ae4-b27a-271dcdd4ea21")
|
(uuid "60f14a36-0c94-4bb4-83b2-59f788ff8525")
|
||||||
)
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
|
@ -1277,16 +1287,6 @@
|
||||||
)
|
)
|
||||||
(uuid "857df60f-a77e-4248-87a5-094a84616c50")
|
(uuid "857df60f-a77e-4248-87a5-094a84616c50")
|
||||||
)
|
)
|
||||||
(wire
|
|
||||||
(pts
|
|
||||||
(xy 52.07 69.85) (xy 82.55 69.85)
|
|
||||||
)
|
|
||||||
(stroke
|
|
||||||
(width 0)
|
|
||||||
(type default)
|
|
||||||
)
|
|
||||||
(uuid "87dc611b-d857-4b03-a783-71eac35ab9f9")
|
|
||||||
)
|
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 44.45 74.93) (xy 43.18 74.93)
|
(xy 44.45 74.93) (xy 43.18 74.93)
|
||||||
|
@ -1655,7 +1655,7 @@
|
||||||
(uuid "1887344f-ff5e-43a1-9a9d-f5e24e43518b")
|
(uuid "1887344f-ff5e-43a1-9a9d-f5e24e43518b")
|
||||||
)
|
)
|
||||||
(label "SD_CLK"
|
(label "SD_CLK"
|
||||||
(at 59.69 69.85 0)
|
(at 60.96 69.85 0)
|
||||||
(fields_autoplaced yes)
|
(fields_autoplaced yes)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -1666,7 +1666,7 @@
|
||||||
(uuid "25487422-3555-45ec-b5ef-336143b4a444")
|
(uuid "25487422-3555-45ec-b5ef-336143b4a444")
|
||||||
)
|
)
|
||||||
(label "SD_CS_DAT3"
|
(label "SD_CS_DAT3"
|
||||||
(at 59.69 62.23 0)
|
(at 60.96 62.23 0)
|
||||||
(fields_autoplaced yes)
|
(fields_autoplaced yes)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -1688,7 +1688,7 @@
|
||||||
(uuid "88d4e665-6450-45d8-b61e-ee0ef714a380")
|
(uuid "88d4e665-6450-45d8-b61e-ee0ef714a380")
|
||||||
)
|
)
|
||||||
(label "SD_MOSI_CMD"
|
(label "SD_MOSI_CMD"
|
||||||
(at 59.69 64.77 0)
|
(at 60.96 64.77 0)
|
||||||
(fields_autoplaced yes)
|
(fields_autoplaced yes)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -1699,7 +1699,7 @@
|
||||||
(uuid "bb4d3927-b49a-42cb-b88c-8342c70f3acb")
|
(uuid "bb4d3927-b49a-42cb-b88c-8342c70f3acb")
|
||||||
)
|
)
|
||||||
(label "SD_MISO_DAT0"
|
(label "SD_MISO_DAT0"
|
||||||
(at 59.69 74.93 0)
|
(at 60.96 74.93 0)
|
||||||
(fields_autoplaced yes)
|
(fields_autoplaced yes)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -1956,7 +1956,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 91.44 101.6 0)
|
(at 91.44 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2114,7 +2114,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 110.49 54.61 0)
|
(at 110.49 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2325,7 +2325,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 73.66 54.61 0)
|
(at 73.66 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2404,7 +2404,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 73.66 101.6 0)
|
(at 73.66 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2549,7 +2549,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 110.49 101.6 0)
|
(at 110.49 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2628,7 +2628,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 64.77 54.61 0)
|
(at 64.77 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -2915,7 +2915,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 91.44 54.61 0)
|
(at 91.44 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -3086,7 +3086,7 @@
|
||||||
(at 140.97 50.8 0)
|
(at 140.97 50.8 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(fields_autoplaced yes)
|
(fields_autoplaced yes)
|
||||||
|
@ -3248,7 +3248,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 101.6 54.61 0)
|
(at 101.6 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -3393,7 +3393,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 82.55 101.6 0)
|
(at 82.55 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -3472,7 +3472,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C307331"
|
(property "LCSC" "C1525"
|
||||||
(at 124.46 40.64 0)
|
(at 124.46 40.64 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -3627,7 +3627,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 64.77 101.6 0)
|
(at 64.77 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -3772,7 +3772,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 101.6 101.6 0)
|
(at 101.6 101.6 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -4115,7 +4115,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" ""
|
(property "LCSC" "C25819"
|
||||||
(at 82.55 54.61 0)
|
(at 82.55 54.61 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
|
|
@ -4540,7 +4540,7 @@
|
||||||
(at 199.39 109.22 90)
|
(at 199.39 109.22 90)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "0f83fadf-1e51-432c-a89b-ce291955ebd0")
|
(uuid "0f83fadf-1e51-432c-a89b-ce291955ebd0")
|
||||||
|
@ -4807,7 +4807,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 91.44 96.5199 0)
|
(at 91.44 96.5199 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -4843,7 +4843,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 93.98 95.25 0)
|
(at 93.98 95.25 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -4872,7 +4872,7 @@
|
||||||
(at 194.31 26.67 0)
|
(at 194.31 26.67 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "151afb0f-6dfe-4eaf-b194-7185e00b56e0")
|
(uuid "151afb0f-6dfe-4eaf-b194-7185e00b56e0")
|
||||||
|
@ -5022,7 +5022,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "1ad26535-4c52-4c91-a735-6617cbeb855e")
|
(uuid "1ad26535-4c52-4c91-a735-6617cbeb855e")
|
||||||
|
@ -5166,7 +5166,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "1b7ea449-5e4e-44a5-bc59-da7c6c6e6adc")
|
(uuid "1b7ea449-5e4e-44a5-bc59-da7c6c6e6adc")
|
||||||
|
@ -5374,7 +5374,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "2620afc3-0c77-4853-8a77-28935611e02d")
|
(uuid "2620afc3-0c77-4853-8a77-28935611e02d")
|
||||||
|
@ -5453,7 +5453,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 161.29 88.8999 0)
|
(at 161.29 88.8999 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5489,7 +5489,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 163.83 87.63 0)
|
(at 163.83 87.63 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5963,7 +5963,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "3cd7d842-911c-4ebf-828e-8f8336e0d79e")
|
(uuid "3cd7d842-911c-4ebf-828e-8f8336e0d79e")
|
||||||
|
@ -6029,7 +6029,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "3e4542d1-2402-4a8e-ae13-06c9f2a7381f")
|
(uuid "3e4542d1-2402-4a8e-ae13-06c9f2a7381f")
|
||||||
|
@ -6617,7 +6617,7 @@
|
||||||
(at 102.87 107.95 90)
|
(at 102.87 107.95 90)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "4309b47b-37c9-48cc-9038-fb71ef7c9750")
|
(uuid "4309b47b-37c9-48cc-9038-fb71ef7c9750")
|
||||||
|
@ -6925,7 +6925,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "4ce6fc1e-dcdd-401e-8980-6b45ba729b80")
|
(uuid "4ce6fc1e-dcdd-401e-8980-6b45ba729b80")
|
||||||
|
@ -7436,7 +7436,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "61ee6ce8-de51-4d18-ad41-4ceb81f80cd6")
|
(uuid "61ee6ce8-de51-4d18-ad41-4ceb81f80cd6")
|
||||||
|
@ -7515,7 +7515,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 161.29 132.0799 0)
|
(at 161.29 132.0799 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7551,7 +7551,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 163.83 130.81 0)
|
(at 163.83 130.81 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7660,7 +7660,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "65b9f56a-6cb1-4895-b6fe-5da284540dad")
|
(uuid "65b9f56a-6cb1-4895-b6fe-5da284540dad")
|
||||||
|
@ -7791,7 +7791,7 @@
|
||||||
(at 102.87 182.88 90)
|
(at 102.87 182.88 90)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "68ec9784-9f89-4f2f-977f-ad694de9f355")
|
(uuid "68ec9784-9f89-4f2f-977f-ad694de9f355")
|
||||||
|
@ -7995,7 +7995,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "72279322-259c-4d78-99e5-35a8475cab70")
|
(uuid "72279322-259c-4d78-99e5-35a8475cab70")
|
||||||
|
@ -8061,7 +8061,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "740c4531-a711-4de7-957e-10229cc7283b")
|
(uuid "740c4531-a711-4de7-957e-10229cc7283b")
|
||||||
|
@ -8259,7 +8259,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "798258a5-3873-4feb-82a7-dbfa9088b285")
|
(uuid "798258a5-3873-4feb-82a7-dbfa9088b285")
|
||||||
|
@ -8403,7 +8403,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "7f9bb2fa-9c55-4fb7-a430-4543cac3181f")
|
(uuid "7f9bb2fa-9c55-4fb7-a430-4543cac3181f")
|
||||||
|
@ -8468,7 +8468,7 @@
|
||||||
(at 199.39 152.4 90)
|
(at 199.39 152.4 90)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "80362fd0-55e4-4895-b629-df6bc6564595")
|
(uuid "80362fd0-55e4-4895-b629-df6bc6564595")
|
||||||
|
@ -8777,7 +8777,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 180.34 109.2199 0)
|
(at 180.34 109.2199 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -8813,7 +8813,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 182.88 107.95 0)
|
(at 182.88 107.95 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -8843,7 +8843,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "92167c05-714c-40c4-8dcf-4b7c7b4fedcd")
|
(uuid "92167c05-714c-40c4-8dcf-4b7c7b4fedcd")
|
||||||
|
@ -8922,7 +8922,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 180.34 152.3999 0)
|
(at 180.34 152.3999 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -8958,7 +8958,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 182.88 151.13 0)
|
(at 182.88 151.13 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -9055,7 +9055,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "98315fca-dfd5-4db8-b52e-38c99d6cb06f")
|
(uuid "98315fca-dfd5-4db8-b52e-38c99d6cb06f")
|
||||||
|
@ -9134,7 +9134,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 91.44 171.4499 0)
|
(at 91.44 171.4499 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -9170,7 +9170,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 93.98 170.18 0)
|
(at 93.98 170.18 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -9199,7 +9199,7 @@
|
||||||
(at 199.39 143.51 0)
|
(at 199.39 143.51 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "9bcc504d-56e7-4f80-8fa0-b31d6126a24a")
|
(uuid "9bcc504d-56e7-4f80-8fa0-b31d6126a24a")
|
||||||
|
@ -9350,7 +9350,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "a0360854-89e8-470a-a0ff-828765fcfd5e")
|
(uuid "a0360854-89e8-470a-a0ff-828765fcfd5e")
|
||||||
|
@ -9664,7 +9664,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "4k7"
|
(property "Value" "5k1"
|
||||||
(at 91.44 134.6199 0)
|
(at 91.44 134.6199 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -9700,7 +9700,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C25900"
|
(property "LCSC" "C25905"
|
||||||
(at 93.98 133.35 0)
|
(at 93.98 133.35 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -9863,7 +9863,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "c2336358-357b-4d18-ba02-f5188911a579")
|
(uuid "c2336358-357b-4d18-ba02-f5188911a579")
|
||||||
|
@ -10348,7 +10348,7 @@
|
||||||
(at 58.42 49.53 0)
|
(at 58.42 49.53 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "cb9469c7-49ac-4ac3-9c9d-70a8430c8f4b")
|
(uuid "cb9469c7-49ac-4ac3-9c9d-70a8430c8f4b")
|
||||||
|
@ -10487,7 +10487,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "d1fe5164-6ef9-4d1e-a148-00c82e5f39b0")
|
(uuid "d1fe5164-6ef9-4d1e-a148-00c82e5f39b0")
|
||||||
|
@ -10912,7 +10912,7 @@
|
||||||
(mirror y)
|
(mirror y)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "dfc2795d-9380-4759-b5a0-b2efcdda606c")
|
(uuid "dfc2795d-9380-4759-b5a0-b2efcdda606c")
|
||||||
|
@ -11396,7 +11396,7 @@
|
||||||
(at 199.39 100.33 0)
|
(at 199.39 100.33 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "f014e65a-fe42-4ab5-9f00-5c9ad2827d0a")
|
(uuid "f014e65a-fe42-4ab5-9f00-5c9ad2827d0a")
|
||||||
|
@ -11810,7 +11810,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "f7fea151-c1a5-4464-837b-c27b85ace62d")
|
(uuid "f7fea151-c1a5-4464-837b-c27b85ace62d")
|
||||||
|
@ -11875,7 +11875,7 @@
|
||||||
(at 102.87 146.05 90)
|
(at 102.87 146.05 90)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "f87cb37e-4555-48f2-ae56-bc76d5fa3a11")
|
(uuid "f87cb37e-4555-48f2-ae56-bc76d5fa3a11")
|
||||||
|
@ -12025,7 +12025,7 @@
|
||||||
(mirror x)
|
(mirror x)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "fade1ce4-f6a0-4812-854f-bea36424ff1f")
|
(uuid "fade1ce4-f6a0-4812-854f-bea36424ff1f")
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -956,25 +956,23 @@
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom yes)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(property "Reference" "U"
|
(property "Reference" "U401"
|
||||||
(at 21.844 51.054 0)
|
(at 24.638 -37.846 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
(size 1.27 1.27)
|
(size 1.27 1.27)
|
||||||
)
|
)
|
||||||
(justify left bottom)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "RP2040"
|
(property "Value" "RP2040"
|
||||||
(at 21.844 48.514 0)
|
(at 24.638 -40.386 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
(size 1.27 1.27)
|
(size 1.27 1.27)
|
||||||
)
|
)
|
||||||
(justify left bottom)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Footprint" "RadPie2040:RP2040-QFN-56"
|
(property "Footprint" "led-matrix:RP2040-QFN-56"
|
||||||
(at -20.32 62.23 0)
|
(at -20.32 62.23 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -1003,6 +1001,15 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
(property "LCSC" "C2040"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
(property "ki_keywords" "raspberry pi 2040"
|
(property "ki_keywords" "raspberry pi 2040"
|
||||||
(at 0 0 0)
|
(at 0 0 0)
|
||||||
(effects
|
(effects
|
||||||
|
@ -2034,7 +2041,7 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(pin input line
|
(pin bidirectional line
|
||||||
(at 31.75 25.4 180)
|
(at 31.75 25.4 180)
|
||||||
(length 2.54)
|
(length 2.54)
|
||||||
(name "GPIO7"
|
(name "GPIO7"
|
||||||
|
@ -2581,6 +2588,16 @@
|
||||||
)
|
)
|
||||||
(uuid "134875fd-cbbf-4a93-bddf-ff91636ccab7")
|
(uuid "134875fd-cbbf-4a93-bddf-ff91636ccab7")
|
||||||
)
|
)
|
||||||
|
(wire
|
||||||
|
(pts
|
||||||
|
(xy 119.38 68.58) (xy 124.46 68.58)
|
||||||
|
)
|
||||||
|
(stroke
|
||||||
|
(width 0)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(uuid "144f2eba-d364-4da6-9a51-ead7c6ab389e")
|
||||||
|
)
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 86.36 40.64) (xy 87.63 40.64)
|
(xy 86.36 40.64) (xy 87.63 40.64)
|
||||||
|
@ -3421,16 +3438,6 @@
|
||||||
)
|
)
|
||||||
(uuid "9c790027-6407-4beb-8582-66399703cae5")
|
(uuid "9c790027-6407-4beb-8582-66399703cae5")
|
||||||
)
|
)
|
||||||
(wire
|
|
||||||
(pts
|
|
||||||
(xy 119.38 68.58) (xy 124.46 68.58)
|
|
||||||
)
|
|
||||||
(stroke
|
|
||||||
(width 0)
|
|
||||||
(type default)
|
|
||||||
)
|
|
||||||
(uuid "9d3342ef-dc9d-48c4-93ec-04efae6c26da")
|
|
||||||
)
|
|
||||||
(wire
|
(wire
|
||||||
(pts
|
(pts
|
||||||
(xy 119.38 86.36) (xy 124.46 86.36)
|
(xy 119.38 86.36) (xy 124.46 86.36)
|
||||||
|
@ -4867,7 +4874,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 68.58 27.9399 0)
|
(at 68.58 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5214,7 +5221,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 41.91 27.9399 0)
|
(at 41.91 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5361,7 +5368,7 @@
|
||||||
(justify right)
|
(justify right)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 67.31 162.5535 0)
|
(at 67.31 162.5535 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5640,7 +5647,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "22uF"
|
(property "Value" "22u"
|
||||||
(at 161.29 30.4799 0)
|
(at 161.29 30.4799 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5649,7 +5656,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Footprint" "Capacitor_SMD:C_1206_3216Metric"
|
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric"
|
||||||
(at 158.4452 33.02 0)
|
(at 158.4452 33.02 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5676,7 +5683,7 @@
|
||||||
(hide yes)
|
(hide yes)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "LCSC" "C12891"
|
(property "LCSC" "C45783"
|
||||||
(at 157.48 29.21 0)
|
(at 157.48 29.21 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5796,7 +5803,7 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "33pF"
|
(property "Value" "33p"
|
||||||
(at 33.02 81.28 90)
|
(at 33.02 81.28 90)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5873,7 +5880,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "1uF"
|
(property "Value" "1u"
|
||||||
(at 68.326 37.084 0)
|
(at 68.326 37.084 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -5951,7 +5958,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 50.8 27.9399 0)
|
(at 50.8 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -6029,7 +6036,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 59.69 27.9399 0)
|
(at 59.69 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -6094,7 +6101,7 @@
|
||||||
(at 87.63 93.98 0)
|
(at 87.63 93.98 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "5be3e4d7-906b-4b09-ac25-5acb7552cad5")
|
(uuid "5be3e4d7-906b-4b09-ac25-5acb7552cad5")
|
||||||
|
@ -6626,7 +6633,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "1uF"
|
(property "Value" "1u"
|
||||||
(at 40.132 60.452 0)
|
(at 40.132 60.452 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -6999,7 +7006,7 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "33pF"
|
(property "Value" "33p"
|
||||||
(at 33.02 87.63 90)
|
(at 33.02 87.63 90)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7077,7 +7084,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "1uF"
|
(property "Value" "1u"
|
||||||
(at 124.46 35.5601 0)
|
(at 124.46 35.5601 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7156,7 +7163,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 133.35 30.4799 0)
|
(at 133.35 30.4799 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7386,7 +7393,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 33.02 27.9399 0)
|
(at 33.02 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7755,7 +7762,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 24.13 27.9399 0)
|
(at 24.13 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7833,7 +7840,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 77.47 27.9399 0)
|
(at 77.47 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -7911,7 +7918,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 102.87 27.9399 0)
|
(at 102.87 27.9399 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
@ -8058,7 +8065,7 @@
|
||||||
(justify left)
|
(justify left)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(property "Value" "100nF"
|
(property "Value" "100n"
|
||||||
(at 124.46 30.4799 0)
|
(at 124.46 30.4799 0)
|
||||||
(effects
|
(effects
|
||||||
(font
|
(font
|
||||||
|
|
|
@ -2141,7 +2141,7 @@
|
||||||
(at 27.94 45.72 0)
|
(at 27.94 45.72 0)
|
||||||
(unit 1)
|
(unit 1)
|
||||||
(exclude_from_sim no)
|
(exclude_from_sim no)
|
||||||
(in_bom yes)
|
(in_bom no)
|
||||||
(on_board yes)
|
(on_board yes)
|
||||||
(dnp no)
|
(dnp no)
|
||||||
(uuid "63e09765-1daf-4b3d-9b73-b05d09450a1f")
|
(uuid "63e09765-1daf-4b3d-9b73-b05d09450a1f")
|
||||||
|
|
Loading…
Reference in New Issue