1
0
Fork 0

Compare commits

...

11 Commits

Author SHA1 Message Date
radex e246a239b3
tweak config 2024-05-18 10:15:18 +02:00
radex 80dbedc119
audio switch lol 2024-05-18 10:14:56 +02:00
radex 4e877d784a
move rendering to core1 2024-05-17 23:03:24 +02:00
radex f46da1e22c
audio and video 2024-05-17 22:21:54 +02:00
radex 0a6ba79e8d
reading gfx from sd card… 2024-05-17 21:57:37 +02:00
radex db2cb2bc43
gfx to blob, gfx sd reading poc 2024-05-17 20:40:58 +02:00
radex cd49ebf186
audio from sd 2024-05-17 19:03:59 +02:00
radex 111700b0e9
better sd 2024-05-17 16:50:30 +02:00
radex 790fe673ef
pcb progress 2024-05-17 15:31:13 +02:00
radex 647c622860
sd card bullshit 2024-05-16 22:24:47 +02:00
radex cb718266d6
pwm audio poc 2024-05-16 13:47:49 +02:00
33 changed files with 59133 additions and 1121 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
badapple.webm

3
firmware/.gitignore vendored
View File

@ -4,4 +4,7 @@
.vscode/launch.json
.vscode/ipch
src/gfx_png.h
src/audio_sample.h
gfx/
gfx_output/
audio/

3
firmware/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"cmake.configureOnOpen": false
}

View File

@ -1,13 +1,27 @@
**add graphics**
convert video
```
ffmpeg -i badapple.webm -ss 00:01:00 -t 30 -vf "fps=30,scale=20:20:force_original_aspect_ratio=increase,crop=20:20,format=gray" badapple-frames/badapple_%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
```
move to `gfx` folder, then:
```
python3 scripts/gfx_convert.py
# old method
# python3 scripts/gfx_convert.py
python3 scripts/gfx_to_blob.py
```
convert audio
```
ffmpeg -i ../badapple.webm -ar 44000 audio/output.wav
```
move to `audio` folder, then:
```
python3 scripts/audio_convert.py
```
on the SD card, create a folder named `badapple` and inside, add `audio.bin` from `audio` and `gfx.bin` and `gfx_len.bin` from `gfx_output`.

View File

@ -12,4 +12,6 @@
platform = raspberrypi
board = pico
framework = arduino
lib_deps = fastled/FastLED@^3.6.0
lib_deps =
khoih-prog/RP2040_SD@^1.0.1

View File

@ -0,0 +1,64 @@
import os
import sys
import soundfile as sf
import samplerate
# Adapted from https://github.com/rgrosset/pico-pwm-audio
print("loading file...")
soundfile = 'audio/output.wav'
data_in, datasamplerate = sf.read(soundfile)
# This means stereo so extract one channel 0
if len(data_in.shape)>1:
data_in = data_in[:,0]
print("resampling...")
converter = 'sinc_best' # or 'sinc_fastest', ...
desired_sample_rate = 44000.0
ratio = desired_sample_rate/datasamplerate
data_out = samplerate.resample(data_in, ratio, converter)
print("analyzing...")
maxValue = max(data_out)
minValue = min(data_out)
print("length", len(data_out))
print("max value", max(data_out))
print("min value", min(data_out))
vrange = (maxValue - minValue)
print("value range", vrange)
print("normalizing...")
# normalize to 0-1
normalized = [int((v-minValue)/vrange*255) for v in data_out]
# print("generating header...")
# m68code = "/* File "+soundfile+ "\r\n * Sample rate "+str(int(desired_sample_rate)) +" Hz\r\n */\r\n"
# m68code += "#define WAV_DATA_LENGTH "+str(len(data_out))+" \r\n\r\n"
# m68code += "static const uint8_t WAV_DATA[] = {\r\n "
# m68code += ','.join(str(v) for v in normalized)
# # keep track of first and last values to avoid
# # blip when the loop restarts.. make the end value
# # the average of the first and last.
# end_value = int( (normalized[0] + normalized[len(normalized) - 1]) / 2)
# m68code+=","+str(end_value)+'\n};\n'
# print("writing output...")
# with open("src/audio_sample.h", "w") as f:
# f.write(m68code)
# print("done!")
print("writing blob...")
with open("audio/audio.bin", "wb") as f:
f.write(bytes(normalized))
print("done!")

View File

@ -0,0 +1,35 @@
import os
import sys
def get_all_gfx():
gfx = []
for root, dirs, files in os.walk("gfx"):
for file in files:
if file.startswith("."):
continue
# file name without extention
name = os.path.splitext(file)[0]
gfx.append((name, os.path.join(root, file)))
gfx.sort()
return gfx
blob = bytes()
lengths = bytes()
gfx_files = get_all_gfx()
for (name, path) in gfx_files:
with open(path, "rb") as f:
data = f.read()
size = len(data)
blob += data
lengths += size.to_bytes(2, byteorder="little")
# create the output directory if it doesn't exist
os.makedirs("gfx_output", exist_ok=True)
with open("gfx_output/gfx.bin", "wb") as f:
f.write(blob)
with open("gfx_output/gfx_len.bin", "wb") as f:
f.write(lengths)

84
firmware/src/audio.cpp Normal file
View File

@ -0,0 +1,84 @@
#include <Arduino.h>
#include "hardware/irq.h" // interrupts
#include "hardware/pwm.h" // pwm
#include "hardware/sync.h" // wait for interrupt
#include "hardware/gpio.h"
#include "audio.h"
// #include "audio_sample.h"
// Adapted from https://github.com/rgrosset/pico-pwm-audio
#define MAX_PWM_POS (BUFFER_LEN << 3)
uint8_t wav_buffer_0[BUFFER_LEN] = {0};
uint8_t wav_buffer_1[BUFFER_LEN] = {0};
bool wav_buffer1_active = false;
volatile bool next_buffer_requested = false; // horrible, use some interrupt-based solution or at least locks or whatever
uint32_t pwm_position = 0;
/*
* PWM Interrupt Handler which outputs PWM level and advances the
* current sample.
*
* We repeat the same value for 8 cycles this means sample rate etc
* adjust by factor of 8 (this is what bitshifting <<3 is doing)
*
*/
void pwm_interrupt_handler() {
pwm_clear_irq(pwm_gpio_to_slice_num(AUDIO_PIN));
if (pwm_position < MAX_PWM_POS - 1) {
auto wav_buffer = wav_buffer1_active ? wav_buffer_1 : wav_buffer_0;
// set pwm level
// allow the pwm value to repeat for 8 cycles this is >>3
pwm_set_gpio_level(AUDIO_PIN, wav_buffer[pwm_position>>3]);
pwm_position++;
} else {
// reset to start, flip to other buffer
pwm_position = 0;
next_buffer_requested = true;
wav_buffer1_active = !wav_buffer1_active;
}
}
// 11 KHz is fine for speech. Phone lines generally sample at 8 KHz
#define SYS_CLOCK 125000000.0f
#define AUDIO_WRAP 250.0f
#define AUDIO_CLK_DIV (SYS_CLOCK / AUDIO_WRAP / 8 / AUDIO_RATE)
void init_audio() {
gpio_set_function(AUDIO_PIN, GPIO_FUNC_PWM);
int audio_pin_slice = pwm_gpio_to_slice_num(AUDIO_PIN);
// Setup PWM interrupt to fire when PWM cycle is complete
pwm_clear_irq(audio_pin_slice);
pwm_set_irq_enabled(audio_pin_slice, true);
// set the handle function above
irq_set_exclusive_handler(PWM_IRQ_WRAP, pwm_interrupt_handler);
// irq_set_enabled(PWM_IRQ_WRAP, true);
// Setup PWM for audio output
pwm_config config = pwm_get_default_config();
pwm_config_set_clkdiv(&config, AUDIO_CLK_DIV);
pwm_config_set_wrap(&config, 250);
pwm_init(audio_pin_slice, 0, &config, true);
pwm_set_gpio_level(AUDIO_PIN, 0);
}
void audio_stop() {
Serial.println("audio_stop");
irq_set_enabled(PWM_IRQ_WRAP, false);
pwm_set_gpio_level(AUDIO_PIN, 0);
}
void audio_start() {
Serial.println("audio_start");
audio_stop();
pwm_position = 0;
wav_buffer1_active = false;
irq_set_enabled(PWM_IRQ_WRAP, true);
}

21
firmware/src/audio.h Normal file
View File

@ -0,0 +1,21 @@
#pragma once
#ifndef _audio_h
#define _audio_h
#define AUDIO_PIN 2
#define AUDIO_RATE 44000.0f
#define BUFFER_LEN 512*32
#define BUFFER_LEN_MS (BUFFER_LEN / AUDIO_RATE) * 1000.0f
extern uint8_t wav_buffer_0[BUFFER_LEN];
extern uint8_t wav_buffer_1[BUFFER_LEN];
extern bool wav_buffer1_active;
extern volatile bool next_buffer_requested;
void init_audio();
void audio_stop();
void audio_start();
#endif

View File

@ -0,0 +1,59 @@
#include "gfx_decoder.h"
#include "sd.h"
#include "lodepng.h"
#include "leds.h"
uint16_t gfxFrameLengthsBuffer[12000] = {0};
uint16_t frameCount = 0;
uint8_t gfxFrameBuffer[2048] = {0};
bool gfx_decoder_loadNextFrame() {
// load frame from SD card
auto frameSize = sd_loadNextFrame();
if (frameSize < 0) {
return false;
}
// decode PNG
unsigned error;
unsigned char *buffer = 0;
unsigned width, height;
size_t pngSize = frameSize;
error = lodepng_decode_memory(&buffer, &width, &height, gfxFrameBuffer, pngSize, LCT_GREY, 8);
// handle errors
if (error) {
Serial.print("PNG decode error ");
Serial.print(error);
Serial.print(": ");
Serial.println(lodepng_error_text(error));
free(buffer);
return false;
} else if (width != ROW_COUNT || height != COL_COUNT) {
Serial.print("Bad dimensions: ");
Serial.print(width);
Serial.print("x");
Serial.println(height);
free(buffer);
return false;
}
// copy to framebuffer
// TODO: mutex? double buffer? or something...
memcpy(framebuffer, buffer, ROW_COUNT * COL_COUNT);
free(buffer);
return true;
}
unsigned long frameLastChangedAt = 0;
bool gfx_decoder_handleLoop() {
auto now = millis();
if (now - frameLastChangedAt > MS_PER_FRAME) {
frameLastChangedAt = now;
return gfx_decoder_loadNextFrame();
}
return true;
}

View File

@ -0,0 +1,14 @@
#pragma once
#ifndef GFX_DECODER_H
#define GFX_DECODER_H
#include <Arduino.h>
extern uint16_t gfxFrameLengthsBuffer[12000];
extern uint16_t frameCount;
extern uint8_t gfxFrameBuffer[2048];
bool gfx_decoder_loadNextFrame();
bool gfx_decoder_handleLoop();
#endif

154
firmware/src/leds.cpp Normal file
View File

@ -0,0 +1,154 @@
#include <Arduino.h>
#include "hardware/gpio.h"
#include "mbed_wait_api.h"
#include "pico/multicore.h"
#include "leds.h"
inline void pulsePin(uint8_t pin) {
gpio_put(pin, HIGH);
gpio_put(pin, LOW);
}
void clearShiftReg(uint8_t srclk, uint8_t srclr) {
gpio_put(srclr, LOW);
pulsePin(srclk);
gpio_put(srclr, HIGH);
}
inline void outputEnable(uint8_t pin, bool enable) {
gpio_put(pin, !enable);
}
// we have 4-bit color depth, so 16 levels of brightness
// we go from phase 0 to phase 3
uint8_t brightnessPhase = 0;
uint8_t brightnessPhaseDelays[] = {1, 10, 30, 100};
uint8_t framebuffer[ROW_COUNT * COL_COUNT] = {0};
void leds_init() {
memset(framebuffer, 0, sizeof(framebuffer));
// disable output
outputEnable(COL_OE, false);
outputEnable(ROW_OE, false);
// set up col pins
pinMode(COL_SER, OUTPUT);
pinMode(COL_OE, OUTPUT);
pinMode(COL_RCLK, OUTPUT);
pinMode(COL_SRCLK, OUTPUT);
pinMode(COL_SRCLR, OUTPUT);
// 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
clearShiftReg(COL_SRCLK, COL_SRCLR);
pulsePin(COL_RCLK);
outputEnable(COL_OE, true);
// clear output - rows
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
pulsePin(ROW_RCLK);
}
void leds_disable() {
outputEnable(ROW_OE, false);
}
void main2() {
// where we're going, we don't need no interrupts
noInterrupts();
while (true) {
leds_render();
}
}
void leds_initRenderer() {
// launch core1
// NOTE: For some reason, without delay, core1 doesn't start?
// delay(500);
multicore_reset_core1();
multicore_launch_core1(main2);
}
void leds_render() {
// hide output
outputEnable(ROW_OE, false);
// clear rows
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
// start selecting rows
digitalWrite(ROW_SER, HIGH);
for (int yCount = 0; yCount < ROW_COUNT; yCount++) {
int y = ROW_COUNT - 1 - yCount;
// brigthness - pushing data takes 40us, so to maximize brightness (at high 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
bool brightPhase = brightnessPhase >= 2;
// digitalWrite(ROW_OE, !brightPhase);
// next row
pulsePin(ROW_SRCLK);
// only one row
digitalWrite(ROW_SER, LOW);
// we use 7/8 stages on shift registers + 1 is unused
int moduleY = yCount % 20;
if (moduleY == 0) {
pulsePin(ROW_SRCLK);
}
if (moduleY == 7 || moduleY == 14 || (moduleY == 0 && yCount != 0)) {
pulsePin(ROW_SRCLK);
}
// clear columns
clearShiftReg(COL_SRCLK, COL_SRCLR);
// set row data
for (int x = 0; x < COL_COUNT; x++) {
// get value
// NOTE: values are loaded right-left
uint8_t pxValue = framebuffer[y * ROW_COUNT + x];
// apply brightness
bool gotLight = (pxValue >> (4 + brightnessPhase)) & 1;
// set value (note: inverted logic)
gpio_put(COL_SER, !gotLight);
// push value
pulsePin(COL_SRCLK);
// we use 7/8 stages on shift registers + 1 is unused
int moduleX = x % 20;
if (moduleX == 0) {
pulsePin(COL_SRCLK);
}
if (moduleX == 6 || moduleX == 13 || moduleX == 19) {
pulsePin(COL_SRCLK);
}
}
// disable columns before latch
outputEnable(ROW_OE, false);
// latch rows and columns
pulsePin(ROW_RCLK);
pulsePin(COL_RCLK);
// show for a certain period
outputEnable(ROW_OE, true);
busy_wait_us_32(brightnessPhaseDelays[brightnessPhase]);
outputEnable(ROW_OE, false);
}
// next brightness phase
brightnessPhase = (brightnessPhase + 1) % 4;
}

33
firmware/src/leds.h Normal file
View File

@ -0,0 +1,33 @@
#pragma once
#ifndef LEDS_H
#define LEDS_H
#include <Arduino.h>
#define COL_SER 20
#define COL_OE 21
#define COL_RCLK 22
#define COL_SRCLK 26
#define COL_SRCLR 27
#define ROW_SER 14
#define ROW_OE 13
#define ROW_RCLK 12
#define ROW_SRCLK 11
#define ROW_SRCLR 10
#define ROW_COUNT 40
#define COL_COUNT 40
#define FPS 30
#define MS_PER_FRAME 1000 / FPS
void leds_init();
void leds_initRenderer();
void leds_disable();
void leds_loop();
void leds_render();
extern uint8_t framebuffer[ROW_COUNT * COL_COUNT];
#endif

View File

@ -1,275 +1,63 @@
#include <Arduino.h>
#include "gfx_png.h"
#include "lodepng.h"
#include "pico/multicore.h"
#include "hardware/gpio.h"
#include "mbed_wait_api.h"
#define Serial Serial1
#define COL_SER 20
#define COL_OE 21
#define COL_RCLK 22
#define COL_SRCLK 26
#define COL_SRCLR 27
#define ROW_SER 14
#define ROW_OE 13
#define ROW_RCLK 12
#define ROW_SRCLK 11
#define ROW_SRCLR 10
inline void pulsePin(uint8_t pin) {
gpio_put(pin, HIGH);
gpio_put(pin, LOW);
}
void clearShiftReg(uint8_t srclk, uint8_t srclr) {
gpio_put(srclr, LOW);
pulsePin(srclk);
gpio_put(srclr, HIGH);
}
inline void outputEnable(uint8_t pin, bool enable) {
gpio_put(pin, !enable);
}
#define ROW_COUNT 40
#define COL_COUNT 40
#define FPS 30
#define MS_PER_FRAME 1000 / FPS
uint16_t frameIndex = 0;
uint16_t lastRenderedFrameIndex = 0;
unsigned long frameLastChangedAt;
// we have 4-bit color depth, so 16 levels of brightness
// we go from phase 0 to phase 3
uint8_t brightnessPhase = 0;
uint8_t brightnessPhaseDelays[] = {1, 10, 30, 100};
uint8_t framebuffer[ROW_COUNT * COL_COUNT] = {0};
void main2();
void life_setup();
void life_step();
extern bool cells[ROW_COUNT * COL_COUNT];
#include "audio.h"
#include "sd.h"
#include "leds.h"
#include "gfx_decoder.h"
void setup() {
leds_init();
setupSDPins();
pinMode(6, INPUT_PULLUP);
delay(2000);
Serial.begin(115200);
Serial.println("Hello worldd!");
memset(framebuffer, 0, sizeof(framebuffer));
init_audio();
// disable output
outputEnable(COL_OE, false);
outputEnable(ROW_OE, false);
// while (!isSDCardInserted()) {
// Serial.println("SD card not connected, waiting...");
// delay(1000);
// }
// delay(100);
// set up col pins
pinMode(COL_SER, OUTPUT);
pinMode(COL_OE, OUTPUT);
pinMode(COL_RCLK, OUTPUT);
pinMode(COL_SRCLK, OUTPUT);
pinMode(COL_SRCLR, OUTPUT);
setupSD();
// set up row pins
pinMode(ROW_SER, OUTPUT);
pinMode(ROW_OE, OUTPUT);
pinMode(ROW_RCLK, OUTPUT);
pinMode(ROW_SRCLK, OUTPUT);
pinMode(ROW_SRCLR, OUTPUT);
sd_loadAudio();
// clear output - cols
clearShiftReg(COL_SRCLK, COL_SRCLR);
pulsePin(COL_RCLK);
outputEnable(COL_OE, true);
// clear output - rows
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
pulsePin(ROW_RCLK);
// clear frames
frameIndex = 0;
frameLastChangedAt = millis();
// launch core1
// NOTE: For some reason, without delay, core1 doesn't start?
// delay(500);
// multicore_reset_core1();
// multicore_launch_core1(main2);
// setup_audio();
life_setup();
// copy cells to framebuffer
for (int y = 0; y < ROW_COUNT; y++) {
for (int x = 0; x < COL_COUNT; x++) {
framebuffer[y * ROW_COUNT + x] = cells[y * ROW_COUNT + x] ? 255 : 0;
}
if (!sd_loadGfxFrameLengths()) {
Serial.println("Failed to load gfx frame lengths");
while (true) {}
}
}
void loop2();
void main2() {
while (true) {
loop2();
if (!sd_loadGfxBlob()) {
Serial.println("Failed to load gfx blob");
while (true) {}
}
leds_initRenderer();
}
void loop() {
if (Serial.available() > 0) {
char c = Serial.read();
if (c == 'p') {
Serial.println("Paused. Press any key to continue.");
outputEnable(ROW_OE, false);
while (Serial.available() == 0) {
Serial.read();
delay(50);
}
} else if (c == 'r') {
Serial.println("Restarting...");
}
if (digitalRead(6) == LOW) {
sd_loadNextAudio();
}
if (multicore_fifo_rvalid()) {
uint32_t value = multicore_fifo_pop_blocking();
if (value == 21372137) {
Serial.println("Invalid frame size");
} else {
Serial.print("PNG decode error ");
Serial.print(value);
Serial.print(": ");
Serial.println(lodepng_error_text(value));
}
// if (Serial.available() > 0) {
// char c = Serial.read();
// if (c == 'p') {
// Serial.println("Paused. Press any key to continue.");
// leds_disable();
// while (Serial.available() == 0) {
// Serial.read();
// delay(50);
// }
// Serial.println("Continuing...");
// }
// }
if (!gfx_decoder_handleLoop()) {
Serial.println("Failed to load frame...");
}
if (frameIndex != lastRenderedFrameIndex) {
Serial.print("Going to frame ");
Serial.println(frameIndex);
lastRenderedFrameIndex = frameIndex;
}
// game of life step
auto now = millis();
if (now - frameLastChangedAt > 100) {
frameLastChangedAt = now;
life_step();
for (int y = 0; y < ROW_COUNT; y++) {
for (int x = 0; x < COL_COUNT; x++) {
framebuffer[y * ROW_COUNT + x] = cells[y * ROW_COUNT + x] ? 255 : 0;
}
}
}
// hide output
outputEnable(ROW_OE, false);
// clear rows
clearShiftReg(ROW_SRCLK, ROW_SRCLR);
// start selecting rows
digitalWrite(ROW_SER, HIGH);
for (int yCount = 0; yCount < ROW_COUNT; yCount++) {
int y = ROW_COUNT - 1 - yCount;
// brigthness - pushing data takes 40us, so to maximize brightness (at high 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
bool brightPhase = brightnessPhase >= 2;
// digitalWrite(ROW_OE, !brightPhase);
// next row
pulsePin(ROW_SRCLK);
// only one row
digitalWrite(ROW_SER, LOW);
// we use 7/8 stages on shift registers + 1 is unused
int moduleY = yCount % 20;
if (moduleY == 0) {
pulsePin(ROW_SRCLK);
}
if (moduleY == 7 || moduleY == 14 || (moduleY == 0 && yCount != 0)) {
pulsePin(ROW_SRCLK);
}
// clear columns
clearShiftReg(COL_SRCLK, COL_SRCLR);
// set row data
for (int x = 0; x < COL_COUNT; x++) {
// get value
// NOTE: values are loaded right-left
uint8_t pxValue = framebuffer[y * ROW_COUNT + x];
// apply brightness
bool gotLight = (pxValue >> (4 + brightnessPhase)) & 1;
// set value (note: inverted logic)
gpio_put(COL_SER, !gotLight);
// push value
pulsePin(COL_SRCLK);
// we use 7/8 stages on shift registers + 1 is unused
int moduleX = x % 20;
if (moduleX == 0) {
pulsePin(COL_SRCLK);
}
if (moduleX == 6 || moduleX == 13 || moduleX == 19) {
pulsePin(COL_SRCLK);
}
}
// disable columns before latch
outputEnable(ROW_OE, false);
// latch rows and columns
pulsePin(ROW_RCLK);
pulsePin(COL_RCLK);
// show for a certain period
outputEnable(ROW_OE, true);
delayMicroseconds(brightnessPhaseDelays[brightnessPhase]);
outputEnable(ROW_OE, false);
}
// next brightness phase
brightnessPhase = (brightnessPhase + 1) % 4;
}
void loop2() {
unsigned error;
unsigned char *buffer = 0;
unsigned width, height;
// decode png
const uint8_t *png = png_frames[frameIndex];
size_t pngSize = png_frame_sizes[frameIndex];
error = lodepng_decode_memory(&buffer, &width, &height, png, pngSize, LCT_GREY, 8);
// push errors onto queue to be reported on core0, can't use serial here
if (error) {
free(buffer);
multicore_fifo_push_blocking(error);
return;
} else if (width != ROW_COUNT || height != COL_COUNT) {
free(buffer);
multicore_fifo_push_blocking(21372137);
return;
}
// copy to framebuffer
// TODO: mutex? double buffer? or something...
// TODO: learn to use memcpy lmao
memcpy(framebuffer, buffer, ROW_COUNT * COL_COUNT);
free(buffer);
// wait until next frame
// TODO: measure time to decode png
busy_wait_ms(MS_PER_FRAME);
frameIndex = (frameIndex + 1) % PNG_COUNT;
}

294
firmware/src/sd.cpp Normal file
View File

@ -0,0 +1,294 @@
#include <Arduino.h>
#include <SPI.h>
#include <RP2040_SD.h>
#include "sd.h"
#include "audio.h"
#include "gfx_decoder.h"
#define SD_DET_PIN 28
#if PIN_SPI_SS != 17
#error "PIN_SPI_SS must be 17"
#endif
#if PIN_SPI_SCK != 18
#error "PIN_SPI_SCK must be 18"
#endif
#if PIN_SPI_MOSI != 19
#error "PIN_SPI_MOSI must be 19"
#endif
#if PIN_SPI_MISO != 16
#error "PIN_SPI_MISO must be 16"
#endif
void setupSDPins() {
// TODO: Is that even needed if we use built-in SPI?
pinMode(PIN_SPI_MISO, INPUT);
pinMode(PIN_SPI_SS, OUTPUT);
digitalWrite(PIN_SPI_SS, HIGH);
pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(SD_DET_PIN, INPUT_PULLUP);
}
bool isSDCardInserted() {
return digitalRead(SD_DET_PIN) == LOW;
}
void printSDConfig();
void testSDCard();
void printSDStats();
void printDirectory(File dir, int numTabs);
void setupSD() {
SPI.begin();
// printSDConfig();
if (!SD.begin(5000000, PIN_SPI_SS)) {
Serial.println("SD Initialization failed!");
// Serial.print("Error code: ");
// Serial.println(SD.card.errorCode(), HEX);
while (true) {}
return;
}
Serial.println("SD Initialization done");
// testSDCard();
// printSDStats(SD.volume);
// File root = SD.open("/");
// printDirectory(root, 0);
}
void printSDConfig() {
Serial.println(BOARD_NAME);
Serial.println(RP2040_SD_VERSION);
Serial.print("Initializing SD card with SS = ");
Serial.println(PIN_SPI_SS);
Serial.print("SCK = ");
Serial.println(PIN_SPI_SCK);
Serial.print("MOSI = ");
Serial.println(PIN_SPI_MOSI);
Serial.print("MISO = ");
Serial.println(PIN_SPI_MISO);
}
void testSDCard() {
File myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.close();
Serial.println("done.");
} else {
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("error opening test.txt");
}
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (!entry) {
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs + 1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
void printSDStats(RP2040_SdVolume volume) {
Serial.print("Clusters: ");
Serial.println(volume.clusterCount());
Serial.print("Blocks x Cluster: ");
Serial.println(volume.blocksPerCluster());
Serial.print("Total Blocks: ");
Serial.println(volume.blocksPerCluster() * volume.clusterCount());
Serial.println();
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("Volume type is: FAT");
Serial.println(volume.fatType(), DEC);
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize /= 2; // SD card blocks are always 512 bytes (2 blocks are 1 KB)
Serial.print("Volume size (KB): ");
Serial.println(volumesize);
Serial.print("Volume size (MB): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (GB): ");
Serial.println((float)volumesize / 1024.0);
}
File audioFile;
void sd_loadAudio() {
if (!SD.exists("/badapple/audio.bin")) {
Serial.println("Audio not found :(");
return;
}
if (audioFile) {
audioFile.close();
}
audioFile = SD.open("/badapple/audio.bin", FILE_READ);
Serial.println("Audio file opened");
audio_stop();
// load two buffers' worth of audio
if (audioFile.read(&wav_buffer_0, BUFFER_LEN) < BUFFER_LEN) {
Serial.println("Could not read first sample");
return;
}
if (audioFile.read(&wav_buffer_1, BUFFER_LEN) < BUFFER_LEN) {
Serial.println("Could not read second sample");
return;
}
audio_start();
}
void sd_loadNextAudio() {
if (!next_buffer_requested) {
return;
}
next_buffer_requested = false;
auto b4 = millis();
auto next_buffer = wav_buffer1_active ? &wav_buffer_0 : &wav_buffer_1;
auto bytesRead = audioFile.read(next_buffer, BUFFER_LEN);
if (bytesRead < BUFFER_LEN) {
Serial.println("End of audio file, rewinding...");
audioFile.seek(0);
} else {
Serial.print("Read ");
Serial.print(bytesRead);
Serial.print(" bytes from audio file in ");
Serial.print(millis() - b4);
Serial.println("ms");
}
}
bool sd_loadGfxFrameLengths() {
auto path = "badapple/gfx_len.bin";
if (!SD.exists(path)) {
Serial.println("Frame lengths file not found :(");
return false;
}
auto lengthsFile = SD.open(path, FILE_READ);
auto fileSize = lengthsFile.size();
if (fileSize > sizeof(gfxFrameLengthsBuffer)) {
Serial.println("Frame lengths file too large");
return false;
}
frameCount = fileSize / sizeof(uint16_t);
while (lengthsFile.available()) {
lengthsFile.read(&gfxFrameLengthsBuffer, sizeof(gfxFrameLengthsBuffer));
}
lengthsFile.close();
Serial.println("Done reading frame lengths");
return true;
}
File gfxFile;
uint16_t frameIdx = 0;
bool sd_loadGfxBlob() {
auto path = "badapple/gfx.bin";
if (!SD.exists(path)) {
Serial.println("Gfx blob file not found :(");
return false;
}
gfxFile = SD.open(path, FILE_READ);
Serial.println("Opened video frames");
return true;
}
// Returns size of frame read or -1 if error
int32_t sd_loadNextFrame() {
if (!gfxFile || !gfxFile.available()) {
Serial.println("Gfx file not available");
return -1;
}
if (frameIdx >= frameCount) {
Serial.println("Frame out of range");
return -1;
}
// get size of frame png
auto frameSize = gfxFrameLengthsBuffer[frameIdx];
if (frameSize > sizeof(gfxFrameBuffer)) {
Serial.println("Frame too large");
return -1;
}
// read data
auto bytesRead = gfxFile.read(&gfxFrameBuffer, frameSize);
if (bytesRead < frameSize) {
Serial.println("Could not read the entire frame");
return -1;
}
// increment
if (frameIdx == frameCount - 1) {
Serial.println("Last frame, rewinding...");
gfxFile.seek(0);
frameIdx = 0;
} else {
frameIdx++;
}
return frameSize;
}

12
firmware/src/sd.h Normal file
View File

@ -0,0 +1,12 @@
#pragma once
void setupSDPins();
void setupSD();
bool isSDCardInserted();
void sd_loadAudio();
void sd_loadNextAudio();
bool sd_loadGfxFrameLengths();
bool sd_loadGfxBlob();
int32_t sd_loadNextFrame();

View File

@ -0,0 +1,10 @@
17
DAT1 GND +3V3 CS SHLD
2 4 6 8 10
1 3 5 7 9
DET MISO CLK MOSI DAT2
28 16 18 19

File diff suppressed because it is too large Load Diff

View File

@ -2,12 +2,221 @@
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {},
"diff_pair_dimensions": [],
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.09999999999999999,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.09999999999999999,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"rules": {},
"track_widths": [],
"via_dimensions": []
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.15
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.3,
"drill": 0.6
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
@ -334,11 +543,41 @@
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "JLCPCB Position Offset",
"name": "JLCPCB Position Offset",
"show": false
},
{
"group_by": false,
"label": "JLCPCB Rotation Offset",
"name": "JLCPCB Rotation Offset",
"show": false
},
{
"group_by": false,
"label": "LCSC",
"name": "LCSC",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},

View File

@ -3114,7 +3114,7 @@
(on_board yes)
(dnp no)
(uuid "0ddb2a0e-e019-4526-bf84-023fab3d70a4")
(property "Reference" "R?"
(property "Reference" "R103"
(at 166.878 138.43 90)
(effects
(font
@ -3175,7 +3175,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "R?")
(reference "R103")
(unit 1)
)
)
@ -3191,7 +3191,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "0dff9781-a65e-48be-993c-2747f7537ede")
(property "Reference" "SW?"
(property "Reference" "SW102"
(at 77.47 113.03 0)
(effects
(font
@ -3253,7 +3253,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "SW?")
(reference "SW102")
(unit 1)
)
)
@ -3269,7 +3269,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "1159c2ed-16c8-4ddf-afa7-1aa9ad05106b")
(property "Reference" "SW?"
(property "Reference" "SW101"
(at 72.39 77.47 0)
(effects
(font
@ -3331,7 +3331,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "SW?")
(reference "SW101")
(unit 1)
)
)
@ -3347,7 +3347,7 @@
(dnp yes)
(fields_autoplaced yes)
(uuid "4f4d944b-7ee5-4f77-ab1c-a19c876e3b25")
(property "Reference" "C?"
(property "Reference" "C104"
(at 204.47 153.6699 0)
(effects
(font
@ -3401,7 +3401,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "C?")
(reference "C104")
(unit 1)
)
)
@ -3417,7 +3417,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "5c35570a-65be-4c56-beaf-cb06c285aa70")
(property "Reference" "#PWR050"
(property "Reference" "#PWR0102"
(at 184.15 31.75 0)
(effects
(font
@ -3467,7 +3467,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR050")
(reference "#PWR0102")
(unit 1)
)
)
@ -3483,7 +3483,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "6103710e-1888-4c9a-8d09-737825cfefe7")
(property "Reference" "#PWR055"
(property "Reference" "#PWR0103"
(at 191.77 31.75 0)
(effects
(font
@ -3533,7 +3533,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR055")
(reference "#PWR0103")
(unit 1)
)
)
@ -3548,7 +3548,7 @@
(on_board yes)
(dnp no)
(uuid "6fcfbd12-0f92-49c7-bfd7-8aefcad74a12")
(property "Reference" "R?"
(property "Reference" "R104"
(at 166.878 140.97 90)
(effects
(font
@ -3609,7 +3609,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "R?")
(reference "R104")
(unit 1)
)
)
@ -3625,7 +3625,7 @@
(dnp yes)
(fields_autoplaced yes)
(uuid "7d8bbef6-7add-4440-a9d0-ac56aa861061")
(property "Reference" "C?"
(property "Reference" "C101"
(at 177.8 153.6699 0)
(effects
(font
@ -3679,7 +3679,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "C?")
(reference "C101")
(unit 1)
)
)
@ -3694,7 +3694,7 @@
(on_board yes)
(dnp no)
(uuid "83514e53-7e92-4f9e-a154-d132f2de9182")
(property "Reference" "#PWR062"
(property "Reference" "#PWR0107"
(at 257.81 81.28 0)
(effects
(font
@ -3745,7 +3745,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR062")
(reference "#PWR0107")
(unit 1)
)
)
@ -3760,7 +3760,7 @@
(on_board yes)
(dnp no)
(uuid "8f92df9f-32ae-4ec4-81af-7648be21a863")
(property "Reference" "R?"
(property "Reference" "R102"
(at 88.9 120.65 90)
(effects
(font
@ -3821,7 +3821,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "R?")
(reference "R102")
(unit 1)
)
)
@ -3837,7 +3837,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "a078f474-117f-4512-bb60-3dbcaad85b66")
(property "Reference" "#PWR061"
(property "Reference" "#PWR0104"
(at 262.89 60.96 0)
(effects
(font
@ -3887,7 +3887,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR061")
(reference "#PWR0104")
(unit 1)
)
)
@ -3902,7 +3902,7 @@
(on_board yes)
(dnp no)
(uuid "a1f7cdc1-9595-40dd-a086-53a492b6af6c")
(property "Reference" "#PWR048"
(property "Reference" "#PWR0108"
(at 67.31 90.17 0)
(effects
(font
@ -3953,7 +3953,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR048")
(reference "#PWR0108")
(unit 1)
)
)
@ -3968,7 +3968,7 @@
(on_board yes)
(dnp no)
(uuid "a9b4f16d-0566-47db-aa59-d76ad3b8731c")
(property "Reference" "#PWR059"
(property "Reference" "#PWR0109"
(at 72.39 125.73 0)
(effects
(font
@ -4019,7 +4019,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR059")
(reference "#PWR0109")
(unit 1)
)
)
@ -4035,7 +4035,7 @@
(dnp yes)
(fields_autoplaced yes)
(uuid "ac120195-35bc-4f7e-a694-34c56f091573")
(property "Reference" "C?"
(property "Reference" "C102"
(at 186.69 153.6699 0)
(effects
(font
@ -4089,7 +4089,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "C?")
(reference "C102")
(unit 1)
)
)
@ -4105,7 +4105,7 @@
(dnp yes)
(fields_autoplaced yes)
(uuid "af77026b-50de-4c53-878c-bbbe877ab478")
(property "Reference" "C?"
(property "Reference" "C103"
(at 195.58 153.6699 0)
(effects
(font
@ -4159,7 +4159,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "C?")
(reference "C103")
(unit 1)
)
)
@ -4175,7 +4175,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "b1747201-6fa0-4b31-b42e-69d6a363fe36")
(property "Reference" "#PWR060"
(property "Reference" "#PWR0105"
(at 269.24 60.96 0)
(effects
(font
@ -4225,7 +4225,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR060")
(reference "#PWR0105")
(unit 1)
)
)
@ -4241,7 +4241,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "b8f05c68-cb38-4763-a1f8-900508e3ac59")
(property "Reference" "#PWR056"
(property "Reference" "#PWR0106"
(at 128.27 68.58 0)
(effects
(font
@ -4291,7 +4291,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR056")
(reference "#PWR0106")
(unit 1)
)
)
@ -4307,7 +4307,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "c2178403-44c7-4b40-9ef3-f1d55c698a17")
(property "Reference" "J?"
(property "Reference" "J101"
(at 248.92 54.61 0)
(effects
(font
@ -4383,7 +4383,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "J?")
(reference "J101")
(unit 1)
)
)
@ -4398,7 +4398,7 @@
(on_board yes)
(dnp no)
(uuid "cb0022db-86d7-4427-ba0d-b17c40cffb2d")
(property "Reference" "R?"
(property "Reference" "R101"
(at 83.82 85.09 90)
(effects
(font
@ -4459,7 +4459,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "R?")
(reference "R101")
(unit 1)
)
)
@ -4475,7 +4475,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "db39e49b-694f-4090-b9eb-bd429a849cee")
(property "Reference" "#PWR054"
(property "Reference" "#PWR0101"
(at 176.53 31.75 0)
(effects
(font
@ -4525,7 +4525,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR054")
(reference "#PWR0101")
(unit 1)
)
)
@ -4540,7 +4540,7 @@
(on_board yes)
(dnp no)
(uuid "dc693be4-574d-4600-925a-4427829d1855")
(property "Reference" "#PWR047"
(property "Reference" "#PWR0110"
(at 187.96 168.91 0)
(effects
(font
@ -4591,7 +4591,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3"
(reference "#PWR047")
(reference "#PWR0110")
(unit 1)
)
)

View File

@ -787,6 +787,16 @@
)
(uuid "e5922f6b-454e-4ae4-8eea-d9bb45efbb04")
)
(text "220R is VERY loud"
(exclude_from_sim no)
(at 60.96 35.814 0)
(effects
(font
(size 1.27 1.27)
)
)
(uuid "3a8e57bf-0b15-44ce-b0e8-e3c71fc72ce9")
)
(text "Taken from \"Hardware design with RP2040\""
(exclude_from_sim no)
(at 89.916 30.48 0)
@ -841,7 +851,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "218541cd-266b-4288-b1cf-8c2c5a2a76f3")
(property "Reference" "C?"
(property "Reference" "C801"
(at 93.98 39.37 90)
(effects
(font
@ -902,7 +912,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "C?")
(reference "C801")
(unit 1)
)
)
@ -917,7 +927,7 @@
(on_board yes)
(dnp no)
(uuid "21ebb72f-9bad-4d6e-b046-8bb788495541")
(property "Reference" "J?"
(property "Reference" "J801"
(at 148.59 47.6249 0)
(effects
(font
@ -974,7 +984,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "J?")
(reference "J801")
(unit 1)
)
)
@ -990,7 +1000,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "591414c1-f0c6-474d-8cf2-1f77c911a949")
(property "Reference" "#PWR057"
(property "Reference" "#PWR0802"
(at 77.47 72.39 0)
(effects
(font
@ -1040,7 +1050,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "#PWR057")
(reference "#PWR0802")
(unit 1)
)
)
@ -1055,7 +1065,7 @@
(on_board yes)
(dnp no)
(uuid "69000ac8-44f8-43d8-ac2d-381fc14dbb48")
(property "Reference" "R?"
(property "Reference" "R802"
(at 86.36 53.3399 0)
(effects
(font
@ -1118,7 +1128,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "R?")
(reference "R802")
(unit 1)
)
)
@ -1133,7 +1143,7 @@
(on_board yes)
(dnp no)
(uuid "71589ecf-30c4-42bc-8654-cfbb67c3ae5f")
(property "Reference" "R?"
(property "Reference" "R803"
(at 106.68 53.3399 0)
(effects
(font
@ -1196,7 +1206,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "R?")
(reference "R803")
(unit 1)
)
)
@ -1212,7 +1222,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "96e25386-133e-4ec9-b746-ce0c1297d539")
(property "Reference" "C?"
(property "Reference" "C802"
(at 73.66 53.3399 0)
(effects
(font
@ -1275,7 +1285,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "C?")
(reference "C802")
(unit 1)
)
)
@ -1292,7 +1302,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "ebdfd6b2-781f-4704-91eb-fef71c4d16c2")
(property "Reference" "R?"
(property "Reference" "R801"
(at 62.23 40.64 90)
(effects
(font
@ -1300,7 +1310,7 @@
)
)
)
(property "Value" "220R"
(property "Value" "470R"
(at 62.23 43.18 90)
(effects
(font
@ -1308,7 +1318,7 @@
)
)
)
(property "Footprint" "Resistor_SMD:R_0402_1005Metric"
(property "Footprint" "Resistor_SMD:R_0603_1608Metric"
(at 62.23 45.212 90)
(effects
(font
@ -1335,7 +1345,7 @@
(hide yes)
)
)
(property "LCSC" "C25091"
(property "LCSC" "C23179"
(at 62.23 46.99 0)
(effects
(font
@ -1353,7 +1363,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "R?")
(reference "R801")
(unit 1)
)
)
@ -1369,7 +1379,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "fa0e0f28-b727-4818-8775-911f24748898")
(property "Reference" "#PWR058"
(property "Reference" "#PWR0801"
(at 130.81 62.23 0)
(effects
(font
@ -1419,7 +1429,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/904908f8-cc64-4489-8602-62e4a247065b"
(reference "#PWR058")
(reference "#PWR0801")
(unit 1)
)
)

View File

@ -1224,7 +1224,7 @@
(on_board yes)
(dnp no)
(uuid "28277689-0237-45a7-a971-a1a8fc01d642")
(property "Reference" "R?"
(property "Reference" "R601"
(at 110.49 62.2299 0)
(effects
(font
@ -1287,7 +1287,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "R?")
(reference "R601")
(unit 1)
)
)
@ -1303,7 +1303,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "2c4b556f-3ca8-4341-a2e3-31ca78a0f6ae")
(property "Reference" "#PWR049"
(property "Reference" "#PWR0601"
(at 130.81 57.15 0)
(effects
(font
@ -1353,7 +1353,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "#PWR049")
(reference "#PWR0601")
(unit 1)
)
)
@ -1369,7 +1369,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "661c70b7-ffee-49c5-8f2c-8041b8cfce7f")
(property "Reference" "C?"
(property "Reference" "C601"
(at 152.4 57.1499 0)
(effects
(font
@ -1432,7 +1432,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "C?")
(reference "C601")
(unit 1)
)
)
@ -1448,7 +1448,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "784bf6b4-29d9-45f6-b3d7-7ed18458e358")
(property "Reference" "#PWR053"
(property "Reference" "#PWR0603"
(at 213.36 80.01 0)
(effects
(font
@ -1498,7 +1498,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "#PWR053")
(reference "#PWR0603")
(unit 1)
)
)
@ -1514,7 +1514,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "9367dd95-57dd-405e-8448-e012f5e2e585")
(property "Reference" "U?"
(property "Reference" "U601"
(at 133.0041 64.77 0)
(effects
(font
@ -1596,7 +1596,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "U?")
(reference "U601")
(unit 1)
)
)
@ -1611,7 +1611,7 @@
(on_board yes)
(dnp no)
(uuid "99b5a895-a336-4cd5-87ab-4b98e36b2f14")
(property "Reference" "D?"
(property "Reference" "D601"
(at 208.026 63.246 0)
(effects
(font
@ -1629,7 +1629,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 203.2 64.77 0)
(effects
(font
@ -1674,7 +1674,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "D?")
(reference "D601")
(unit 1)
)
)
@ -1690,7 +1690,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "d3be4ed4-d3e1-4c14-ad0b-d21f34debbc8")
(property "Reference" "#PWR052"
(property "Reference" "#PWR0604"
(at 130.81 97.79 0)
(effects
(font
@ -1740,7 +1740,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "#PWR052")
(reference "#PWR0604")
(unit 1)
)
)
@ -1756,7 +1756,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "d982d335-ace9-4e63-95a4-6c1f5f42c6c1")
(property "Reference" "#PWR051"
(property "Reference" "#PWR0602"
(at 148.59 68.58 0)
(effects
(font
@ -1806,7 +1806,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "#PWR051")
(reference "#PWR0602")
(unit 1)
)
)
@ -1821,7 +1821,7 @@
(on_board yes)
(dnp no)
(uuid "fc7c75d2-5657-43aa-9e06-cc826da2c90c")
(property "Reference" "D?"
(property "Reference" "D602"
(at 208.026 67.056 0)
(effects
(font
@ -1839,7 +1839,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 203.2 68.58 0)
(effects
(font
@ -1884,7 +1884,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/085d11a9-fbb6-4cf1-879a-d3aa30071fa1"
(reference "D?")
(reference "D602")
(unit 1)
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2384,7 +2384,7 @@
(on_board yes)
(dnp no)
(uuid "00c20118-7aaf-403b-840c-6d7fe37361e3")
(property "Reference" "C?"
(property "Reference" "C703"
(at 196.85 42.672 0)
(effects
(font
@ -2447,7 +2447,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C703")
(unit 1)
)
)
@ -2462,7 +2462,7 @@
(on_board yes)
(dnp no)
(uuid "171189d3-c5c1-49a4-8211-050baa7cb8c6")
(property "Reference" "U?"
(property "Reference" "U702"
(at 79.248 103.378 0)
(effects
(font
@ -2532,7 +2532,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "U?")
(reference "U702")
(unit 1)
)
)
@ -2548,7 +2548,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "1779df42-22a9-4d7d-b098-e4a77233afb7")
(property "Reference" "#PWR043"
(property "Reference" "#PWR0708"
(at 45.72 157.48 0)
(effects
(font
@ -2599,7 +2599,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR043")
(reference "#PWR0708")
(unit 1)
)
)
@ -2614,7 +2614,7 @@
(on_board yes)
(dnp no)
(uuid "3caf8ffb-c094-40f2-adb0-e10c8c220e61")
(property "Reference" "TP?"
(property "Reference" "TP701"
(at 196.088 24.638 0)
(effects
(font
@ -2666,7 +2666,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "TP?")
(reference "TP701")
(unit 1)
)
)
@ -2682,7 +2682,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "464d39c6-d480-4cd8-92e3-bb1636d1c187")
(property "Reference" "#PWR066"
(property "Reference" "#PWR0707"
(at 72.39 127 0)
(effects
(font
@ -2733,7 +2733,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR066")
(reference "#PWR0707")
(unit 1)
)
)
@ -2748,7 +2748,7 @@
(on_board yes)
(dnp no)
(uuid "49f67082-1f90-4ec5-bf86-4689269194c5")
(property "Reference" "TP?"
(property "Reference" "TP703"
(at 89.408 28.448 0)
(effects
(font
@ -2800,7 +2800,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "TP?")
(reference "TP703")
(unit 1)
)
)
@ -2817,7 +2817,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "6f0c503f-7c50-4985-bb0b-fb820e671707")
(property "Reference" "R?"
(property "Reference" "R703"
(at 35.56 111.76 90)
(effects
(font
@ -2880,7 +2880,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "R?")
(reference "R703")
(unit 1)
)
)
@ -2896,7 +2896,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "7412fbcc-a447-4e6b-a925-f17754a300e9")
(property "Reference" "R?"
(property "Reference" "R701"
(at 128.27 88.8999 0)
(effects
(font
@ -2959,7 +2959,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "R?")
(reference "R701")
(unit 1)
)
)
@ -2974,7 +2974,7 @@
(on_board yes)
(dnp no)
(uuid "774c75a6-8287-400f-ba02-eadb6c749874")
(property "Reference" "TP?"
(property "Reference" "TP702"
(at 69.088 28.448 0)
(effects
(font
@ -3026,7 +3026,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "TP?")
(reference "TP702")
(unit 1)
)
)
@ -3042,7 +3042,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "7d22c48d-8e96-48ec-a0b9-1e110355b449")
(property "Reference" "C?"
(property "Reference" "C708"
(at 49.53 143.5099 0)
(effects
(font
@ -3105,7 +3105,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C708")
(unit 1)
)
)
@ -3121,7 +3121,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "84e0e7b8-78f8-497b-9c7b-67c5c5434b9b")
(property "Reference" "#PWR046"
(property "Reference" "#PWR0703"
(at 184.15 54.61 0)
(effects
(font
@ -3172,7 +3172,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR046")
(reference "#PWR0703")
(unit 1)
)
)
@ -3187,7 +3187,7 @@
(on_board yes)
(dnp no)
(uuid "887a75f5-f687-46c9-a14c-6a9121127e69")
(property "Reference" "C?"
(property "Reference" "C702"
(at 186.69 42.672 0)
(effects
(font
@ -3250,7 +3250,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C702")
(unit 1)
)
)
@ -3265,7 +3265,7 @@
(on_board yes)
(dnp no)
(uuid "8c87a53a-1bf6-43de-9e7a-6d27e3e56aaf")
(property "Reference" "U?"
(property "Reference" "U701"
(at 174.244 26.924 0)
(effects
(font
@ -3329,7 +3329,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "U?")
(reference "U701")
(unit 1)
)
)
@ -3344,7 +3344,7 @@
(on_board yes)
(dnp no)
(uuid "98b100f9-13b3-483b-a9f4-2691303331cc")
(property "Reference" "C?"
(property "Reference" "C701"
(at 153.924 42.672 0)
(effects
(font
@ -3407,7 +3407,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C701")
(unit 1)
)
)
@ -3423,7 +3423,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "9a65b0f7-2385-408b-9f4e-b4af3ce8dff5")
(property "Reference" "C?"
(property "Reference" "C706"
(at 67.31 44.4499 0)
(effects
(font
@ -3486,7 +3486,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C706")
(unit 1)
)
)
@ -3501,7 +3501,7 @@
(on_board yes)
(dnp no)
(uuid "aabaff18-d230-4b17-bc3f-1ae99c927296")
(property "Reference" "TP?"
(property "Reference" "TP705"
(at 50.8 117.3479 0)
(effects
(font
@ -3552,7 +3552,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "TP?")
(reference "TP705")
(unit 1)
)
)
@ -3568,7 +3568,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "af0872b6-973e-4841-b930-33b5047cb21c")
(property "Reference" "#PWR068"
(property "Reference" "#PWR0706"
(at 125.73 106.68 0)
(effects
(font
@ -3619,7 +3619,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR068")
(reference "#PWR0706")
(unit 1)
)
)
@ -3635,7 +3635,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "bf3ffeff-32af-4f5d-a190-c6c6d7cc6b8f")
(property "Reference" "#PWR042"
(property "Reference" "#PWR0704"
(at 38.1 64.77 0)
(effects
(font
@ -3686,7 +3686,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR042")
(reference "#PWR0704")
(unit 1)
)
)
@ -3701,7 +3701,7 @@
(on_board yes)
(dnp no)
(uuid "bfd296df-cc2c-41f1-9f96-cba32a58a1fe")
(property "Reference" "C?"
(property "Reference" "C707"
(at 85.09 93.9799 0)
(effects
(font
@ -3764,7 +3764,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C707")
(unit 1)
)
)
@ -3780,7 +3780,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "c83893a3-0f3f-40cc-ac5b-4c2ab9d9b1bd")
(property "Reference" "C?"
(property "Reference" "C705"
(at 54.61 44.4499 0)
(effects
(font
@ -3843,7 +3843,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C705")
(unit 1)
)
)
@ -3859,7 +3859,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "c96a9ae7-ca7b-4188-a75b-1adc8db85d40")
(property "Reference" "#PWR044"
(property "Reference" "#PWR0701"
(at 161.29 54.61 0)
(effects
(font
@ -3910,7 +3910,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR044")
(reference "#PWR0701")
(unit 1)
)
)
@ -3926,7 +3926,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "d6685ea6-8f33-46e2-9a6e-7232299752ab")
(property "Reference" "#PWR067"
(property "Reference" "#PWR0705"
(at 83.82 106.68 0)
(effects
(font
@ -3977,7 +3977,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR067")
(reference "#PWR0705")
(unit 1)
)
)
@ -3992,7 +3992,7 @@
(on_board yes)
(dnp no)
(uuid "e64a90c5-838e-417e-91c8-d4e02890aa9c")
(property "Reference" "F?"
(property "Reference" "F701"
(at 77.47 30.226 90)
(effects
(font
@ -4008,7 +4008,7 @@
)
)
)
(property "Footprint" ""
(property "Footprint" "Fuse:Fuse_1210_3225Metric_Pad1.42x2.65mm_HandSolder"
(at 72.39 38.1 0)
(effects
(font
@ -4054,7 +4054,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "F?")
(reference "F701")
(unit 1)
)
)
@ -4069,7 +4069,7 @@
(on_board yes)
(dnp no)
(uuid "e6f71306-1ab3-4004-969d-b4df74612724")
(property "Reference" "#PWR045"
(property "Reference" "#PWR0702"
(at 173.99 54.61 0)
(effects
(font
@ -4120,7 +4120,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "#PWR045")
(reference "#PWR0702")
(unit 1)
)
)
@ -4137,7 +4137,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "ef4ef63f-7f32-4db4-ace3-08dd396fbfb3")
(property "Reference" "R?"
(property "Reference" "R702"
(at 31.75 111.76 90)
(effects
(font
@ -4200,7 +4200,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "R?")
(reference "R702")
(unit 1)
)
)
@ -4216,7 +4216,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "fb3d7eca-cd5b-4ef4-8fd3-4ce5fcc4f27c")
(property "Reference" "C?"
(property "Reference" "C704"
(at 41.91 43.5609 0)
(effects
(font
@ -4279,7 +4279,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "C?")
(reference "C704")
(unit 1)
)
)
@ -4296,7 +4296,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "fe484920-fc79-4ad4-a7bf-512f087b23c4")
(property "Reference" "R?"
(property "Reference" "R704"
(at 39.37 111.76 90)
(effects
(font
@ -4359,7 +4359,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "R?")
(reference "R704")
(unit 1)
)
)
@ -4374,7 +4374,7 @@
(on_board yes)
(dnp no)
(uuid "ff5dca85-955b-4676-b448-d60b96b1b673")
(property "Reference" "TP?"
(property "Reference" "TP704"
(at 50.8 97.0279 0)
(effects
(font
@ -4425,7 +4425,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/dd417ba1-23df-493d-8bf9-742d6a12b9ca"
(reference "TP?")
(reference "TP704")
(unit 1)
)
)

View File

@ -2525,6 +2525,16 @@
)
(uuid "1c36a5cc-8df7-46d5-9715-01ab72579d16")
)
(wire
(pts
(xy 39.37 88.9) (xy 49.53 88.9)
)
(stroke
(width 0)
(type default)
)
(uuid "1c586a2c-493a-43d1-9ebb-7813fc5d6f05")
)
(wire
(pts
(xy 54.61 109.22) (xy 60.96 109.22)
@ -3015,16 +3025,6 @@
)
(uuid "70d02162-c94d-4346-9c23-bca7ccc611b0")
)
(wire
(pts
(xy 39.37 88.9) (xy 49.53 88.9)
)
(stroke
(width 0)
(type default)
)
(uuid "710b3288-64c4-472e-a6a5-76d823997ff7")
)
(wire
(pts
(xy 102.87 40.64) (xy 105.41 40.64)
@ -4083,6 +4083,28 @@
)
(uuid "202b8762-4b28-4e12-9f4c-7e26e26b4786")
)
(label "XTAL_OUT"
(at 55.88 88.9 0)
(fields_autoplaced yes)
(effects
(font
(size 0.65 0.65)
)
(justify left bottom)
)
(uuid "536b7ed6-4870-491a-bac1-79137851bdc7")
)
(label "XTAL_OUT_B"
(at 43.18 88.9 0)
(fields_autoplaced yes)
(effects
(font
(size 0.65 0.65)
)
(justify left bottom)
)
(uuid "76fbe1cb-5605-493b-b996-70ab21959f71")
)
(label "QSPI_CLK"
(at 49.53 111.76 0)
(fields_autoplaced yes)
@ -4127,6 +4149,17 @@
)
(uuid "bf2d99b3-2cef-4e78-8f6e-6d805b3f983e")
)
(label "XTAL_IN"
(at 55.88 82.55 0)
(fields_autoplaced yes)
(effects
(font
(size 0.65 0.65)
)
(justify left bottom)
)
(uuid "c226fa91-711b-47b9-b8a4-8ee154372c45")
)
(label "USB_DT-"
(at 49.53 72.39 0)
(fields_autoplaced yes)
@ -4679,7 +4712,7 @@
(on_board yes)
(dnp no)
(uuid "05da1c31-d80a-4b1a-8f1d-3a5a054d5a3f")
(property "Reference" "C?"
(property "Reference" "C406"
(at 68.58 22.8599 0)
(effects
(font
@ -4742,7 +4775,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C406")
(unit 1)
)
)
@ -4759,7 +4792,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "05e926ac-5680-4c82-b25d-ef45bb74115a")
(property "Reference" "#PWR027"
(property "Reference" "#PWR0403"
(at 134.62 40.64 0)
(effects
(font
@ -4810,7 +4843,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR027")
(reference "#PWR0403")
(unit 1)
)
)
@ -4826,7 +4859,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "1f2c0671-a34f-4874-a133-fab93744416a")
(property "Reference" "#PWR032"
(property "Reference" "#PWR0409"
(at 39.37 97.79 0)
(effects
(font
@ -4877,7 +4910,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR032")
(reference "#PWR0409")
(unit 1)
)
)
@ -4894,7 +4927,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "2a7fe22f-1257-4898-bfea-2d37f29601f1")
(property "Reference" "#PWR031"
(property "Reference" "#PWR0408"
(at 43.18 67.31 0)
(effects
(font
@ -4945,7 +4978,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR031")
(reference "#PWR0408")
(unit 1)
)
)
@ -4961,7 +4994,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "309d68ed-390a-4c6e-9013-3b5f9580a24e")
(property "Reference" "#PWR037"
(property "Reference" "#PWR0412"
(at 40.64 160.02 0)
(effects
(font
@ -5011,7 +5044,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR037")
(reference "#PWR0412")
(unit 1)
)
)
@ -5026,7 +5059,7 @@
(on_board yes)
(dnp no)
(uuid "31e9e0d0-3b3c-481a-ba2a-5468d82a72e3")
(property "Reference" "C?"
(property "Reference" "C403"
(at 41.91 22.8599 0)
(effects
(font
@ -5089,7 +5122,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C403")
(unit 1)
)
)
@ -5106,7 +5139,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "35de48ff-d809-4471-8f73-98c0d9cee2a5")
(property "Reference" "#PWR028"
(property "Reference" "#PWR0406"
(at 123.19 46.99 0)
(effects
(font
@ -5157,7 +5190,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR028")
(reference "#PWR0406")
(unit 1)
)
)
@ -5173,7 +5206,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "36d992d0-f695-4745-9678-090a3b9a0258")
(property "Reference" "C?"
(property "Reference" "C416"
(at 67.31 160.0135 0)
(effects
(font
@ -5236,7 +5269,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C416")
(unit 1)
)
)
@ -5252,7 +5285,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "3757613b-8e6a-42f8-a0c8-81db4b8e3314")
(property "Reference" "#PWR029"
(property "Reference" "#PWR0405"
(at 66.04 44.45 0)
(effects
(font
@ -5303,7 +5336,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR029")
(reference "#PWR0405")
(unit 1)
)
)
@ -5319,7 +5352,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "4314de70-d399-4393-b3cc-1ec5d7b31e2e")
(property "Reference" "#PWR039"
(property "Reference" "#PWR0407"
(at 43.18 46.99 0)
(effects
(font
@ -5369,7 +5402,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR039")
(reference "#PWR0407")
(unit 1)
)
)
@ -5385,7 +5418,7 @@
(on_board yes)
(dnp no)
(uuid "518af46f-e468-45d0-9ba9-4e09afd4ff61")
(property "Reference" "R?"
(property "Reference" "R405"
(at 38.1 160.0199 0)
(effects
(font
@ -5448,7 +5481,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "R?")
(reference "R405")
(unit 1)
)
)
@ -5463,7 +5496,7 @@
(on_board yes)
(dnp no)
(uuid "52ef0789-6597-48b4-b7af-d7c1769baf01")
(property "Reference" "C?"
(property "Reference" "C414"
(at 26.67 81.28 90)
(effects
(font
@ -5524,7 +5557,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C414")
(unit 1)
)
)
@ -5539,7 +5572,7 @@
(on_board yes)
(dnp no)
(uuid "5540c508-f7a9-4bde-8006-c4a83419068c")
(property "Reference" "C?"
(property "Reference" "C411"
(at 68.834 34.036 0)
(effects
(font
@ -5602,7 +5635,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C411")
(unit 1)
)
)
@ -5617,7 +5650,7 @@
(on_board yes)
(dnp no)
(uuid "5596df5d-0e7e-48ed-9b78-f73f1126f79e")
(property "Reference" "C?"
(property "Reference" "C404"
(at 50.8 22.8599 0)
(effects
(font
@ -5680,7 +5713,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C404")
(unit 1)
)
)
@ -5695,7 +5728,7 @@
(on_board yes)
(dnp no)
(uuid "5642f4da-1e63-465f-af80-0ccff38868d7")
(property "Reference" "C?"
(property "Reference" "C405"
(at 59.69 22.8599 0)
(effects
(font
@ -5758,7 +5791,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C405")
(unit 1)
)
)
@ -5773,7 +5806,7 @@
(on_board yes)
(dnp no)
(uuid "5be3e4d7-906b-4b09-ac25-5acb7552cad5")
(property "Reference" "U?"
(property "Reference" "U401"
(at 112.268 131.826 0)
(effects
(font
@ -5789,7 +5822,7 @@
)
)
)
(property "Footprint" "RadPie2040:RP2040-QFN-56"
(property "Footprint" "led-matrix:RP2040-QFN-56"
(at 67.31 31.75 0)
(effects
(font
@ -6001,7 +6034,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "U?")
(reference "U401")
(unit 1)
)
)
@ -6016,7 +6049,7 @@
(on_board yes)
(dnp no)
(uuid "5cbaae38-820b-44ed-9d56-a0c4ff62d9cb")
(property "Reference" "R?"
(property "Reference" "R404"
(at 52.07 86.36 90)
(effects
(font
@ -6077,7 +6110,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "R?")
(reference "R404")
(unit 1)
)
)
@ -6092,7 +6125,7 @@
(on_board yes)
(dnp no)
(uuid "7891a076-b364-469f-89cf-fdc6e07a67b7")
(property "Reference" "#PWR036"
(property "Reference" "#PWR0415"
(at 52.07 196.85 0)
(effects
(font
@ -6143,7 +6176,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR036")
(reference "#PWR0415")
(unit 1)
)
)
@ -6159,7 +6192,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "795e0f69-378d-47f4-b492-b79a5dc033a3")
(property "Reference" "#PWR034"
(property "Reference" "#PWR0411"
(at 92.71 143.51 0)
(effects
(font
@ -6210,7 +6243,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR034")
(reference "#PWR0411")
(unit 1)
)
)
@ -6225,7 +6258,7 @@
(on_board yes)
(dnp no)
(uuid "7cd2980e-050c-4da5-a04b-cff725605981")
(property "Reference" "#PWR035"
(property "Reference" "#PWR0414"
(at 64.77 171.45 0)
(effects
(font
@ -6276,7 +6309,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR035")
(reference "#PWR0414")
(unit 1)
)
)
@ -6292,7 +6325,7 @@
(on_board yes)
(dnp no)
(uuid "84451c67-1e83-47ff-a2bd-e8ad6718b8f4")
(property "Reference" "C?"
(property "Reference" "C413"
(at 39.878 57.912 0)
(effects
(font
@ -6355,7 +6388,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C413")
(unit 1)
)
)
@ -6371,7 +6404,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "88198038-3db6-4dca-b6cb-7f6e6f4feebb")
(property "Reference" "#PWR030"
(property "Reference" "#PWR0404"
(at 22.86 41.91 0)
(effects
(font
@ -6422,7 +6455,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR030")
(reference "#PWR0404")
(unit 1)
)
)
@ -6437,7 +6470,7 @@
(on_board yes)
(dnp no)
(uuid "9d35043b-d6ce-42e9-a3c7-0c5723605c27")
(property "Reference" "X?"
(property "Reference" "X401"
(at 43.18 91.44 90)
(effects
(font
@ -6506,7 +6539,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "X?")
(reference "X401")
(unit 1)
)
)
@ -6522,7 +6555,7 @@
(on_board yes)
(dnp no)
(uuid "abe48a81-867c-4d86-94e5-b8d7a0d3c04b")
(property "Reference" "R?"
(property "Reference" "R401"
(at 40.64 46.9899 0)
(effects
(font
@ -6585,7 +6618,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "R?")
(reference "R401")
(unit 1)
)
)
@ -6601,7 +6634,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "b8e53b04-4b8c-4317-8f51-fb8914e89997")
(property "Reference" "#PWR038"
(property "Reference" "#PWR0413"
(at 52.07 160.02 0)
(effects
(font
@ -6651,7 +6684,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR038")
(reference "#PWR0413")
(unit 1)
)
)
@ -6666,7 +6699,7 @@
(on_board yes)
(dnp no)
(uuid "bf5b3e75-e30d-4468-bdff-7b0ce6a81680")
(property "Reference" "C?"
(property "Reference" "C415"
(at 26.67 87.63 90)
(effects
(font
@ -6727,7 +6760,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C415")
(unit 1)
)
)
@ -6743,7 +6776,7 @@
(on_board yes)
(dnp no)
(uuid "c6f43259-3e1d-4c0c-a260-15470cba9a55")
(property "Reference" "C?"
(property "Reference" "C412"
(at 124.46 40.6401 0)
(effects
(font
@ -6806,7 +6839,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C412")
(unit 1)
)
)
@ -6822,7 +6855,7 @@
(on_board yes)
(dnp no)
(uuid "c7f748e6-2c08-4b18-a1d9-96896867595f")
(property "Reference" "C?"
(property "Reference" "C410"
(at 133.35 25.3999 0)
(effects
(font
@ -6885,7 +6918,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C410")
(unit 1)
)
)
@ -6900,7 +6933,7 @@
(on_board yes)
(dnp no)
(uuid "d6f0171a-276d-417f-96de-c06f0d766f90")
(property "Reference" "R?"
(property "Reference" "R403"
(at 39.37 71.12 90)
(effects
(font
@ -6961,7 +6994,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "R?")
(reference "R403")
(unit 1)
)
)
@ -6976,7 +7009,7 @@
(on_board yes)
(dnp no)
(uuid "de01277b-1aa1-4088-839b-d039dd65fac4")
(property "Reference" "R?"
(property "Reference" "R402"
(at 39.37 68.58 90)
(effects
(font
@ -7037,7 +7070,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "R?")
(reference "R402")
(unit 1)
)
)
@ -7052,7 +7085,7 @@
(on_board yes)
(dnp no)
(uuid "e14a5bfa-e629-440a-8275-f548832d6f47")
(property "Reference" "C?"
(property "Reference" "C402"
(at 33.02 22.8599 0)
(effects
(font
@ -7115,7 +7148,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C402")
(unit 1)
)
)
@ -7130,7 +7163,7 @@
(on_board yes)
(dnp no)
(uuid "e53d4170-589c-491c-bd3c-4cad1bed935d")
(property "Reference" "#PWR040"
(property "Reference" "#PWR0401"
(at 87.63 24.13 0)
(effects
(font
@ -7180,7 +7213,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR040")
(reference "#PWR0401")
(unit 1)
)
)
@ -7196,7 +7229,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "e8996aa6-31c2-4e33-a3e3-f41c00f0df7b")
(property "Reference" "#PWR033"
(property "Reference" "#PWR0410"
(at 24.13 100.33 0)
(effects
(font
@ -7247,7 +7280,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR033")
(reference "#PWR0410")
(unit 1)
)
)
@ -7262,7 +7295,7 @@
(on_board yes)
(dnp no)
(uuid "eebe54e5-4e1a-479b-af0c-6870c4aeffbc")
(property "Reference" "U?"
(property "Reference" "U402"
(at 63.5 187.706 0)
(effects
(font
@ -7341,7 +7374,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "U?")
(reference "U402")
(unit 1)
)
)
@ -7356,7 +7389,7 @@
(on_board yes)
(dnp no)
(uuid "f1dd6698-cda5-4311-915e-30a24d73a3ad")
(property "Reference" "C?"
(property "Reference" "C401"
(at 24.13 22.8599 0)
(effects
(font
@ -7419,7 +7452,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C401")
(unit 1)
)
)
@ -7434,7 +7467,7 @@
(on_board yes)
(dnp no)
(uuid "f4c17bab-0a69-4a14-b491-99ffd6dcb004")
(property "Reference" "C?"
(property "Reference" "C407"
(at 77.47 22.8599 0)
(effects
(font
@ -7497,7 +7530,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C407")
(unit 1)
)
)
@ -7512,7 +7545,7 @@
(on_board yes)
(dnp no)
(uuid "f4c38063-c7be-4b26-9208-3423029a0e47")
(property "Reference" "C?"
(property "Reference" "C408"
(at 102.87 22.8599 0)
(effects
(font
@ -7575,7 +7608,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C408")
(unit 1)
)
)
@ -7592,7 +7625,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "f7157eab-62fb-44d9-968d-0a67e1c01e36")
(property "Reference" "#PWR041"
(property "Reference" "#PWR0402"
(at 101.6 36.83 0)
(effects
(font
@ -7643,7 +7676,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "#PWR041")
(reference "#PWR0402")
(unit 1)
)
)
@ -7659,7 +7692,7 @@
(on_board yes)
(dnp no)
(uuid "f846450d-337b-49fe-92a0-68a392c855b8")
(property "Reference" "C?"
(property "Reference" "C409"
(at 124.46 25.3999 0)
(effects
(font
@ -7722,7 +7755,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/94f24be7-e4f5-4d4a-8789-064f4a08d889"
(reference "C?")
(reference "C409")
(unit 1)
)
)

View File

@ -1910,7 +1910,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "0b4b11fe-d869-4547-8bd9-6722532103b9")
(property "Reference" "R?"
(property "Reference" "R303"
(at 22.86 74.9299 0)
(effects
(font
@ -1973,7 +1973,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "R?")
(reference "R303")
(unit 1)
)
)
@ -1989,7 +1989,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "18a83b2d-8aec-4a0c-ac94-daeef818e6e8")
(property "Reference" "#PWR07"
(property "Reference" "#PWR0301"
(at 74.93 58.42 0)
(effects
(font
@ -2040,7 +2040,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#PWR07")
(reference "#PWR0301")
(unit 1)
)
)
@ -2056,7 +2056,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "45a74c33-b733-43ae-a196-b3c2bcbb198f")
(property "Reference" "D?"
(property "Reference" "D304"
(at 123.19 41.275 0)
(effects
(font
@ -2074,7 +2074,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 123.19 44.45 0)
(effects
(font
@ -2119,7 +2119,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "D?")
(reference "D304")
(unit 1)
)
)
@ -2134,7 +2134,7 @@
(on_board yes)
(dnp no)
(uuid "63e09765-1daf-4b3d-9b73-b05d09450a1f")
(property "Reference" "J?"
(property "Reference" "J301"
(at 30.4165 22.86 0)
(effects
(font
@ -2150,7 +2150,7 @@
)
)
)
(property "Footprint" "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12"
(property "Footprint" "led-matrix:USB_C_Receptacle_HRO_TYPE-C-31-M-12"
(at 31.75 45.72 0)
(effects
(font
@ -2249,7 +2249,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "J?")
(reference "J301")
(unit 1)
)
)
@ -2264,7 +2264,7 @@
(on_board yes)
(dnp no)
(uuid "6898b218-d10f-40ae-b638-700f24f7ea61")
(property "Reference" "#FLG02"
(property "Reference" "#FLG0302"
(at 31.115 68.58 0)
(effects
(font
@ -2315,7 +2315,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#FLG02")
(reference "#FLG0302")
(unit 1)
)
)
@ -2331,7 +2331,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "803bf89e-93bd-41cf-92a2-5eb06a953bc1")
(property "Reference" "#FLG01"
(property "Reference" "#FLG0301"
(at 49.53 24.765 0)
(effects
(font
@ -2381,7 +2381,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#FLG01")
(reference "#FLG0301")
(unit 1)
)
)
@ -2397,7 +2397,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "8256b6f8-9921-4218-8c9a-ac674219c18a")
(property "Reference" "#PWR013"
(property "Reference" "#PWR0302"
(at 129.54 62.23 0)
(effects
(font
@ -2448,7 +2448,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#PWR013")
(reference "#PWR0302")
(unit 1)
)
)
@ -2464,7 +2464,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "9235c1ca-d1aa-4e43-9a16-cb7a4a100192")
(property "Reference" "R?"
(property "Reference" "R301"
(at 71.12 43.1799 0)
(effects
(font
@ -2527,7 +2527,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "R?")
(reference "R301")
(unit 1)
)
)
@ -2543,7 +2543,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "9dbaf0a8-cfbd-4fca-84eb-236a49d906d7")
(property "Reference" "D?"
(property "Reference" "D301"
(at 123.19 22.225 0)
(effects
(font
@ -2561,7 +2561,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 123.19 25.4 0)
(effects
(font
@ -2606,7 +2606,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "D?")
(reference "D301")
(unit 1)
)
)
@ -2622,7 +2622,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "a4f2cf41-761f-4cc9-bf3a-71ca936e760c")
(property "Reference" "R?"
(property "Reference" "R302"
(at 78.74 43.1799 0)
(effects
(font
@ -2685,7 +2685,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "R?")
(reference "R302")
(unit 1)
)
)
@ -2701,7 +2701,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "ad65afcd-69cb-4f7e-9325-8677542b3238")
(property "Reference" "D?"
(property "Reference" "D303"
(at 123.19 34.925 0)
(effects
(font
@ -2719,7 +2719,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 123.19 38.1 0)
(effects
(font
@ -2764,7 +2764,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "D?")
(reference "D303")
(unit 1)
)
)
@ -2780,7 +2780,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "b36d08cd-2c9a-4767-b1e9-ec091ec1143a")
(property "Reference" "#PWR010"
(property "Reference" "#PWR0304"
(at 20.32 88.9 0)
(effects
(font
@ -2831,7 +2831,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#PWR010")
(reference "#PWR0304")
(unit 1)
)
)
@ -2847,7 +2847,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "d12db568-086a-4e2c-a5bf-c55f24254cd5")
(property "Reference" "D?"
(property "Reference" "D302"
(at 123.19 28.575 0)
(effects
(font
@ -2865,7 +2865,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 123.19 31.75 0)
(effects
(font
@ -2910,7 +2910,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "D?")
(reference "D302")
(unit 1)
)
)
@ -2926,7 +2926,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "db691f9d-c6bc-43f7-9dfb-a2e863b58792")
(property "Reference" "D?"
(property "Reference" "D305"
(at 123.19 47.625 0)
(effects
(font
@ -2944,7 +2944,7 @@
(hide yes)
)
)
(property "Footprint" "can:DFN1006_TVS"
(property "Footprint" "led-matrix:DFN1006_TVS"
(at 123.19 50.8 0)
(effects
(font
@ -2989,7 +2989,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "D?")
(reference "D305")
(unit 1)
)
)
@ -3005,7 +3005,7 @@
(dnp no)
(fields_autoplaced yes)
(uuid "e323f511-2f7b-410d-829d-be4f37e82d06")
(property "Reference" "#PWR011"
(property "Reference" "#PWR0303"
(at 27.94 78.74 0)
(effects
(font
@ -3056,7 +3056,7 @@
(instances
(project "MainBoard"
(path "/ac576ee3-ac6f-4244-babf-9af36c7a7db3/5232c3be-bd03-4015-929e-0effd1f09850"
(reference "#PWR011")
(reference "#PWR0303")
(unit 1)
)
)

View File

@ -0,0 +1,135 @@
(footprint "DFN1006_TVS"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 4 0)
(layer "F.SilkS")
(hide yes)
(uuid "fe552ba1-7546-4b55-ad42-e01ce0efcb02")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "DFN1006_TVS"
(at 0 -4 0)
(layer "F.Fab")
(uuid "58a7e677-32b2-4be5-9b8a-cf848579d90e")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "56d67383-f7d2-4741-a90e-00dee93b3ef8")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "dc8e3bd9-e779-4aec-b9a5-97d1850514d3")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "72ee8fbc-73a1-41af-afa4-e830937adfba")
(effects
(font
(size 1.27 1.27)
)
)
)
(attr smd)
(fp_line
(start -0.1 -0.45)
(end 0.1 -0.45)
(stroke
(width 0.12)
(type default)
)
(layer "F.SilkS")
(uuid "886a448d-8064-4d13-a1ae-93029f219c76")
)
(fp_line
(start -0.1 0.45)
(end 0.1 0.45)
(stroke
(width 0.12)
(type default)
)
(layer "F.SilkS")
(uuid "73c0d038-01a9-4021-ac52-4f8fc335a787")
)
(fp_rect
(start -0.95 -0.6)
(end 0.95 0.6)
(stroke
(width 0.05)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "e2857144-57fd-4690-8de3-202c88e836fe")
)
(fp_rect
(start -0.5 -0.3)
(end 0.5 0.3)
(stroke
(width 0.05)
(type default)
)
(fill none)
(layer "F.Fab")
(uuid "7583889d-88fd-4f65-9b45-f811132afb54")
)
(pad "1" smd roundrect
(at -0.45 0)
(size 0.6 0.8)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "6e2b6e33-b2a0-4f52-9494-1c4591edc500")
)
(pad "2" smd roundrect
(at 0.45 0)
(size 0.6 0.8)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "c569fe2c-4b40-4bbd-9a66-87e76a4b616c")
)
(model "${KICAD8_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-882.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View File

@ -0,0 +1,748 @@
(footprint "RP2040-QFN-56"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "QFN, 56 Pin (http://www.cypress.com/file/416486/download#page=40), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py")
(tags "QFN DFN_QFN")
(property "Reference" "REF**"
(at 0 -4.82 0)
(layer "F.SilkS")
(uuid "94ec11cf-5c3f-4978-bba0-0d274b9e5842")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "Pico2040-QFN-56"
(at 0 4.82 0)
(layer "F.Fab")
(uuid "f812e9be-04d5-4eb4-9be7-b7193c3c3fcf")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "493946aa-f2cd-4c96-b99c-4e89e7e720d4")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "f4d3727d-8632-4a04-b6e8-6d0f926103d5")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "af03adc0-4a44-49f5-88a4-4bb8a405d124")
(effects
(font
(size 1.27 1.27)
)
)
)
(attr smd)
(fp_line
(start -3.61 3.61)
(end -3.61 2.96)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "87ccece7-e444-4a57-9ab1-0500cdde9c5a")
)
(fp_line
(start -2.96 -3.61)
(end -3.61 -3.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "79f8822a-d38e-422d-9516-3d4ca05762ce")
)
(fp_line
(start -2.96 3.61)
(end -3.61 3.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "e3f9d875-edd3-4d51-b7a8-ae3a4bbebb6f")
)
(fp_line
(start 2.96 -3.61)
(end 3.61 -3.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "29f51482-bc4e-4f72-83f4-a7a934cb17e3")
)
(fp_line
(start 2.96 3.61)
(end 3.61 3.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "caf8a340-a953-4b51-ab56-ca793c38cdab")
)
(fp_line
(start 3.61 -3.61)
(end 3.61 -2.96)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "a70a6450-c1ae-49d5-8916-85503da6e8d2")
)
(fp_line
(start 3.61 3.61)
(end 3.61 2.96)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "13d90c02-0979-4194-91db-9ca5c313c477")
)
(fp_line
(start -4.12 -4.12)
(end -4.12 4.12)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "429b444b-9837-4aef-a851-4631ad176ec3")
)
(fp_line
(start -4.12 4.12)
(end 4.12 4.12)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "7ed4a499-b8e5-4d9e-9b0f-bb636141f130")
)
(fp_line
(start 4.12 -4.12)
(end -4.12 -4.12)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "7ba9035e-d3cb-4c53-8541-4b9ed4d5db7d")
)
(fp_line
(start 4.12 4.12)
(end 4.12 -4.12)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "bc5ba383-e992-492d-9a6b-71bf89d42723")
)
(fp_line
(start -3.5 -2.5)
(end -2.5 -3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "dcfef913-9815-4343-bfb0-336465982c8f")
)
(fp_line
(start -3.5 3.5)
(end -3.5 -2.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "68950f97-f397-4891-8791-a66f69be4f1c")
)
(fp_line
(start -2.5 -3.5)
(end 3.5 -3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "0c438463-e482-4670-83b6-e8e0dfd97845")
)
(fp_line
(start 3.5 -3.5)
(end 3.5 3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "723f884d-157e-427b-990b-9dcddb2eca93")
)
(fp_line
(start 3.5 3.5)
(end -3.5 3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "ca668808-3e27-4fe4-ab59-23ee3ffb586f")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "671b3324-51ec-4d97-b5e9-ffce67fca928")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "" smd roundrect
(at -0.6375 -0.6375)
(size 1.084435 1.084435)
(layers "F.Paste")
(roundrect_rratio 0.230535)
(uuid "a6ab6992-6165-4224-a885-60bcf08e0044")
)
(pad "" smd roundrect
(at -0.6375 0.6375)
(size 1.084435 1.084435)
(layers "F.Paste")
(roundrect_rratio 0.230535)
(uuid "f677169f-f73e-4a24-b130-be34d402776a")
)
(pad "" smd roundrect
(at 0.6375 -0.6375)
(size 1.084435 1.084435)
(layers "F.Paste")
(roundrect_rratio 0.230535)
(uuid "69adb160-87f9-467c-bfbb-d996ca850208")
)
(pad "" smd roundrect
(at 0.6375 0.6375)
(size 1.084435 1.084435)
(layers "F.Paste")
(roundrect_rratio 0.230535)
(uuid "446859f1-7b89-4a59-98bb-150ec3eb243a")
)
(pad "1" smd roundrect
(at -3.4375 -2.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "b3d2b4d3-2b01-4693-af2b-417d3727b357")
)
(pad "2" smd roundrect
(at -3.4375 -2.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "171e57a4-06a9-4403-83a3-1b17de018585")
)
(pad "3" smd roundrect
(at -3.4375 -1.8)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "7425aedd-1487-43a6-bc2b-ae1ad95861ef")
)
(pad "4" smd roundrect
(at -3.4375 -1.4)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "b3825ddf-317f-46db-b753-a6d4e9c8fc65")
)
(pad "5" smd roundrect
(at -3.4375 -1)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "685a40d6-2673-4d4f-929b-368263d17188")
)
(pad "6" smd roundrect
(at -3.4375 -0.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "a70b8d46-e505-4099-98cf-961a76cf4fe7")
)
(pad "7" smd roundrect
(at -3.4375 -0.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "5e6c2e08-65d8-4147-8d0a-2b67ee693a9c")
)
(pad "8" smd roundrect
(at -3.4375 0.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "9744a668-55b2-4c74-bc5a-6d52b0d98155")
)
(pad "9" smd roundrect
(at -3.4375 0.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "19f55147-b6d8-4185-9800-f97f8073b922")
)
(pad "10" smd roundrect
(at -3.4375 1)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "7be68ac1-344b-49fc-bc24-5768b27f7848")
)
(pad "11" smd roundrect
(at -3.4375 1.4)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "004418a7-bd89-4792-9cad-7497fd975bb6")
)
(pad "12" smd roundrect
(at -3.4375 1.8)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "34c17049-6cfc-4fb1-ac6d-210dce55dcac")
)
(pad "13" smd roundrect
(at -3.4375 2.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "5e5532e9-6b81-4516-bb36-1fee969f42ae")
)
(pad "14" smd roundrect
(at -3.4375 2.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "b050887d-acdf-4c1a-ab68-a569c2e7da93")
)
(pad "15" smd roundrect
(at -2.6 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "fab799ef-0ea9-4aac-81d6-632b77c7550a")
)
(pad "16" smd roundrect
(at -2.2 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "b81e9dfa-eac9-412b-bada-18f148a03f38")
)
(pad "17" smd roundrect
(at -1.8 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "df1c2e15-8650-46a1-8381-b7df15521755")
)
(pad "18" smd roundrect
(at -1.4 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "1dbc3843-4d6b-4fc8-971f-7349e21d79a8")
)
(pad "19" smd roundrect
(at -1 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "26acd3e7-16af-4f07-bad0-21e0aa63b4c2")
)
(pad "20" smd roundrect
(at -0.6 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "063fb44d-3d5d-44db-8875-6a2706ece7c2")
)
(pad "21" smd roundrect
(at -0.2 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "4a06aef5-87a4-41bc-a6f9-656ad2fd929e")
)
(pad "22" smd roundrect
(at 0.2 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "2f6730ff-0b79-4d0c-aed3-b1eebb6860dc")
)
(pad "23" smd roundrect
(at 0.6 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "d159c08d-d506-4a23-ad2d-b67e2a3c7f48")
)
(pad "24" smd roundrect
(at 1 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "51ca153e-59b4-405a-8eef-fd0b5505546a")
)
(pad "25" smd roundrect
(at 1.4 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "0c007cb4-c975-4bf6-a454-3ca05cdb5a8a")
)
(pad "26" smd roundrect
(at 1.8 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "72436c38-9132-4583-9391-f89ebefd0f1b")
)
(pad "27" smd roundrect
(at 2.2 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "6158f631-5e98-45b8-a07d-83ddfb242ef1")
)
(pad "28" smd roundrect
(at 2.6 3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "29b994c0-3b69-40fd-984d-8614f48afabd")
)
(pad "29" smd roundrect
(at 3.4375 2.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "bfb71042-c5fb-4883-bbb0-78eb46da5320")
)
(pad "30" smd roundrect
(at 3.4375 2.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "66816118-cd31-4357-88f8-593ea2bf5386")
)
(pad "31" smd roundrect
(at 3.4375 1.8)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "f75c5f55-2d43-459d-bf12-fa36d6a79f2d")
)
(pad "32" smd roundrect
(at 3.4375 1.4)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "ba81e1d2-5c52-41a8-8908-5dd97a7f1ee1")
)
(pad "33" smd roundrect
(at 3.4375 1)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "6cccd078-c404-4f3e-ad0e-ac590922dde3")
)
(pad "34" smd roundrect
(at 3.4375 0.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "ad74ebdc-cb66-4284-bcb6-3509df8a60fb")
)
(pad "35" smd roundrect
(at 3.4375 0.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "59f5d70d-acd0-441f-b0d1-07d3c6e53071")
)
(pad "36" smd roundrect
(at 3.4375 -0.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "40b4b56d-330c-478d-8fc7-b2577dab6f71")
)
(pad "37" smd roundrect
(at 3.4375 -0.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "0666fda0-83e1-4774-aac6-a92fbd862f65")
)
(pad "38" smd roundrect
(at 3.4375 -1)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "6200193b-0cb6-45f1-9d92-f8055de23933")
)
(pad "39" smd roundrect
(at 3.4375 -1.4)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "9663723c-8c5f-456c-beda-1de7c8ebec58")
)
(pad "40" smd roundrect
(at 3.4375 -1.8)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "42888177-dbe9-4226-a5af-8f4907ed23b3")
)
(pad "41" smd roundrect
(at 3.4375 -2.2)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "5c38cb07-8ce8-4de2-bc1c-556499df4e66")
)
(pad "42" smd roundrect
(at 3.4375 -2.6)
(size 0.875 0.2)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "5bfd7fbf-edbf-4856-9fd2-51c80ea4f30a")
)
(pad "43" smd roundrect
(at 2.6 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "0dff0ee0-7ee1-42ce-81e9-a99bf1d2e9de")
)
(pad "44" smd roundrect
(at 2.2 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "606d6119-ed5e-4089-b05e-55d682a811c4")
)
(pad "45" smd roundrect
(at 1.8 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "e90e9e91-d41c-4d53-8b72-763608bd8438")
)
(pad "46" smd roundrect
(at 1.4 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "449e2bc0-d78c-46ea-8e0d-2d12751cb8d8")
)
(pad "47" smd roundrect
(at 1 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "45185d5d-306f-46a8-afbd-ac5f14e012a0")
)
(pad "48" smd roundrect
(at 0.6 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "39b53b5e-2125-499c-80e4-8ec1265c818a")
)
(pad "49" smd roundrect
(at 0.2 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "c65bde64-5c5d-4e4f-a605-b9b4f551c23e")
)
(pad "50" smd roundrect
(at -0.2 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "2787e441-b846-4ec1-b5c8-55e11b148225")
)
(pad "51" smd roundrect
(at -0.6 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "d75d68cc-262f-4bbb-a19d-c4474c38f9aa")
)
(pad "52" smd roundrect
(at -1 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "0cbba4b8-0d4b-4e6d-b66c-615f65b38f6b")
)
(pad "53" smd roundrect
(at -1.4 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "bf5e0f88-5596-4d99-ab5e-26becfa71a88")
)
(pad "54" smd roundrect
(at -1.8 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "d0b63eb8-f128-4943-9a95-de5866a7213d")
)
(pad "55" smd roundrect
(at -2.2 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "f1cc50c6-304d-4330-be01-929a8fa6d5be")
)
(pad "56" smd roundrect
(at -2.6 -3.4375)
(size 0.2 0.875)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(uuid "0276951b-e7e8-402f-b6fc-925de1e4cc76")
)
(pad "57" thru_hole circle
(at -1.275 -1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "05a12fc4-dcea-4df1-800b-44923ff72709")
)
(pad "57" thru_hole circle
(at -1.275 0)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "a0e181d5-9dbc-4ad7-a6c1-e15319412e36")
)
(pad "57" thru_hole circle
(at -1.275 1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "adfa17fb-ecf3-4fc9-894b-0249683327ae")
)
(pad "57" thru_hole circle
(at 0 -1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "2590cc37-b5b5-4a03-a8f8-015ade801f28")
)
(pad "57" thru_hole circle
(at 0 0)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "7ef582e4-bc20-4fd7-8ade-85c68ecd8976")
)
(pad "57" smd roundrect
(at 0 0)
(size 3.2 3.2)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.045)
(uuid "6d4c1bd7-fce8-473c-ad02-d4a0a5414180")
)
(pad "57" thru_hole circle
(at 0 1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "ab7c768e-0733-4c73-994e-c0ff1ee9adfe")
)
(pad "57" thru_hole circle
(at 1.275 -1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "50175e31-6587-4376-9f96-6542d3964a0b")
)
(pad "57" thru_hole circle
(at 1.275 0)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "f28683ad-132c-41e2-8b69-45cf73d1c3f1")
)
(pad "57" thru_hole circle
(at 1.275 1.275)
(size 0.6 0.6)
(drill 0.35)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "c279ce41-85f8-48f6-8196-24f9b38cbf28")
)
(model "${KIPRJMOD}/Libraries/RadPie2040/RP2040_QFN_PACKAGE.STEP"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,134 @@
(footprint "SolderJumper-2_Open_RoundedPad_Smol"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "SMD Solder Jumper, 1x1.5mm, rounded Pads, 0.3mm gap, open")
(tags "solder jumper open")
(property "Reference" "REF**"
(at 0 -1.8 0)
(layer "F.SilkS")
(hide yes)
(uuid "2d856dc9-d208-4833-9630-aba95b597ba1")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "SolderJumper-2_Open_RoundedPad_Smol"
(at 0 1.9 0)
(layer "F.Fab")
(uuid "656a70db-01ef-42a7-91d8-cc57681f457d")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0.05 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "17ae3d13-3548-4f30-8a40-b971c302a3de")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Datasheet" ""
(at 0.05 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "e0e7dfd6-8cc1-4c55-bda5-695978b3c026")
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Description" ""
(at 0.05 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "de824fa2-69ad-4520-91b5-f846e8ea5eeb")
(effects
(font
(size 1.27 1.27)
)
)
)
(zone_connect 1)
(attr exclude_from_pos_files exclude_from_bom)
(fp_rect
(start -1.4 -0.8)
(end 1.4 0.8)
(stroke
(width 0.05)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "621bf60e-a126-4da7-923d-a96e0522b419")
)
(pad "1" smd custom
(at -0.55 0)
(size 0.9 0.5)
(layers "F.Cu" "F.Mask")
(zone_connect 2)
(thermal_bridge_angle 45)
(options
(clearance outline)
(anchor rect)
)
(primitives
(gr_poly
(pts
(xy 0.45 0.5) (xy -0.05 0.5) (xy -0.05 -0.5) (xy 0.45 -0.5)
)
(width 0)
(fill yes)
)
(gr_circle
(center -0.05 0)
(end 0.45 0)
(width 0)
(fill yes)
)
)
(uuid "e063a5e6-7590-4ed9-b874-fcdfe4e3ced2")
)
(pad "2" smd custom
(at 0.55 0)
(size 0.9 0.5)
(layers "F.Cu" "F.Mask")
(zone_connect 2)
(thermal_bridge_angle 45)
(options
(clearance outline)
(anchor rect)
)
(primitives
(gr_poly
(pts
(xy 0.05 0.5) (xy -0.45 0.5) (xy -0.45 -0.5) (xy 0.05 -0.5)
)
(width 0)
(fill yes)
)
(gr_circle
(center 0.05 0)
(end 0.55 0)
(width 0)
(fill yes)
)
)
(uuid "37bcfcab-e649-4b60-823e-fae5254ddfe9")
)
)

File diff suppressed because it is too large Load Diff

BIN
text.pxm Normal file

Binary file not shown.