kopia lustrzana https://github.com/pimoroni/pimoroni-pico
Porównaj commity
12 Commity
9d54548726
...
fc0e6d66d2
Autor | SHA1 | Data |
---|---|---|
Philip Howard | fc0e6d66d2 | |
Phil Howard | 8123f64bb8 | |
Phil Howard | c9869252d7 | |
Connor Linfoot | 32c10482d9 | |
Philip Howard | 4c44b77193 | |
Phil Howard | 5510c82564 | |
Philip Howard | 3a10b29f54 | |
Phil Howard | 8cf276b992 | |
Philip Howard | f1ea35fbbf | |
Philip Howard | c066325ca0 | |
Phil Howard | 964cf5eedf | |
Phil Howard | 5dd76ed31b |
|
@ -47,8 +47,9 @@ namespace pimoroni {
|
||||||
return !(sr.read() & 128);
|
return !(sr.read() & 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Inky73::busy_wait() {
|
void Inky73::busy_wait(uint timeout_ms) {
|
||||||
while(is_busy()) {
|
absolute_time_t timeout = make_timeout_time_ms(timeout_ms);
|
||||||
|
while(is_busy() && !time_reached(timeout)) {
|
||||||
tight_loop_contents();
|
tight_loop_contents();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace pimoroni {
|
||||||
// Methods
|
// Methods
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
public:
|
public:
|
||||||
void busy_wait();
|
void busy_wait(uint timeout_ms=45000);
|
||||||
void reset();
|
void reset();
|
||||||
void power_off();
|
void power_off();
|
||||||
|
|
||||||
|
|
|
@ -133,8 +133,6 @@ namespace pimoroni {
|
||||||
|
|
||||||
void ST7789::configure_display(Rotation rotate) {
|
void ST7789::configure_display(Rotation rotate) {
|
||||||
|
|
||||||
bool rotate180 = rotate == ROTATE_180 || rotate == ROTATE_90;
|
|
||||||
|
|
||||||
if(rotate == ROTATE_90 || rotate == ROTATE_270) {
|
if(rotate == ROTATE_90 || rotate == ROTATE_270) {
|
||||||
std::swap(width, height);
|
std::swap(width, height);
|
||||||
}
|
}
|
||||||
|
@ -185,20 +183,30 @@ namespace pimoroni {
|
||||||
// Pico Display
|
// Pico Display
|
||||||
if(width == 240 && height == 135) {
|
if(width == 240 && height == 135) {
|
||||||
caset[0] = 40; // 240 cols
|
caset[0] = 40; // 240 cols
|
||||||
caset[1] = 279;
|
caset[1] = 40 + width - 1;
|
||||||
raset[0] = 53; // 135 rows
|
raset[0] = 52; // 135 rows
|
||||||
raset[1] = 187;
|
raset[1] = 52 + height - 1;
|
||||||
madctl = rotate180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
|
if (rotate == ROTATE_0) {
|
||||||
|
raset[0] += 1;
|
||||||
|
raset[1] += 1;
|
||||||
|
}
|
||||||
|
madctl = rotate == ROTATE_180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
|
||||||
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
|
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pico Display at 90 degree rotation
|
// Pico Display at 90 degree rotation
|
||||||
if(width == 135 && height == 240) {
|
if(width == 135 && height == 240) {
|
||||||
caset[0] = 52; // 135 cols
|
caset[0] = 52; // 135 cols
|
||||||
caset[1] = 186;
|
caset[1] = 52 + width - 1;
|
||||||
raset[0] = 40; // 240 rows
|
raset[0] = 40; // 240 rows
|
||||||
raset[1] = 279;
|
raset[1] = 40 + height - 1;
|
||||||
madctl = rotate180 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0;
|
madctl = 0;
|
||||||
|
if (rotate == ROTATE_90) {
|
||||||
|
caset[0] += 1;
|
||||||
|
caset[1] += 1;
|
||||||
|
madctl = MADCTL::COL_ORDER | MADCTL::ROW_ORDER;
|
||||||
|
}
|
||||||
|
madctl = rotate == ROTATE_90 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pico Display 2.0
|
// Pico Display 2.0
|
||||||
|
@ -207,7 +215,7 @@ namespace pimoroni {
|
||||||
caset[1] = 319;
|
caset[1] = 319;
|
||||||
raset[0] = 0;
|
raset[0] = 0;
|
||||||
raset[1] = 239;
|
raset[1] = 239;
|
||||||
madctl = rotate180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
|
madctl = (rotate == ROTATE_180 || rotate == ROTATE_90) ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
|
||||||
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
|
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +225,7 @@ namespace pimoroni {
|
||||||
caset[1] = 239;
|
caset[1] = 239;
|
||||||
raset[0] = 0;
|
raset[0] = 0;
|
||||||
raset[1] = 319;
|
raset[1] = 319;
|
||||||
madctl = rotate180 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0;
|
madctl = (rotate == ROTATE_180 || rotate == ROTATE_90) ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Byte swap the 16bit rows/cols values
|
// Byte swap the 16bit rows/cols values
|
||||||
|
|
|
@ -494,11 +494,14 @@ namespace pimoroni {
|
||||||
void CosmicUnicorn::set_brightness(float value) {
|
void CosmicUnicorn::set_brightness(float value) {
|
||||||
value = value < 0.0f ? 0.0f : value;
|
value = value < 0.0f ? 0.0f : value;
|
||||||
value = value > 1.0f ? 1.0f : value;
|
value = value > 1.0f ? 1.0f : value;
|
||||||
|
// Max brightness is - in fact - 256 since it's applied with:
|
||||||
|
// result = (channel * brightness) >> 8
|
||||||
|
// eg: (255 * 256) >> 8 == 255
|
||||||
this->brightness = floor(value * 256.0f);
|
this->brightness = floor(value * 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
float CosmicUnicorn::get_brightness() {
|
float CosmicUnicorn::get_brightness() {
|
||||||
return this->brightness / 255.0f;
|
return this->brightness / 256.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CosmicUnicorn::adjust_brightness(float delta) {
|
void CosmicUnicorn::adjust_brightness(float delta) {
|
||||||
|
|
|
@ -488,11 +488,14 @@ namespace pimoroni {
|
||||||
void GalacticUnicorn::set_brightness(float value) {
|
void GalacticUnicorn::set_brightness(float value) {
|
||||||
value = value < 0.0f ? 0.0f : value;
|
value = value < 0.0f ? 0.0f : value;
|
||||||
value = value > 1.0f ? 1.0f : value;
|
value = value > 1.0f ? 1.0f : value;
|
||||||
|
// Max brightness is - in fact - 256 since it's applied with:
|
||||||
|
// result = (channel * brightness) >> 8
|
||||||
|
// eg: (255 * 256) >> 8 == 255
|
||||||
this->brightness = floor(value * 256.0f);
|
this->brightness = floor(value * 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
float GalacticUnicorn::get_brightness() {
|
float GalacticUnicorn::get_brightness() {
|
||||||
return this->brightness / 255.0f;
|
return this->brightness / 256.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GalacticUnicorn::adjust_brightness(float delta) {
|
void GalacticUnicorn::adjust_brightness(float delta) {
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#include "alright_fonts.hpp"
|
#include "alright_fonts.hpp"
|
||||||
#include "pico_graphics.hpp"
|
#include "pico_graphics.hpp"
|
||||||
|
|
||||||
|
pp_rect_t pp_contour_bounds(const pp_path_t *c);
|
||||||
|
|
||||||
namespace pimoroni {
|
namespace pimoroni {
|
||||||
|
|
||||||
// Integer point types cause compound error in transformations
|
// Integer point types cause compound error in transformations
|
||||||
|
|
|
@ -485,11 +485,14 @@ namespace pimoroni {
|
||||||
void StellarUnicorn::set_brightness(float value) {
|
void StellarUnicorn::set_brightness(float value) {
|
||||||
value = value < 0.0f ? 0.0f : value;
|
value = value < 0.0f ? 0.0f : value;
|
||||||
value = value > 1.0f ? 1.0f : value;
|
value = value > 1.0f ? 1.0f : value;
|
||||||
|
// Max brightness is - in fact - 256 since it's applied with:
|
||||||
|
// result = (channel * brightness) >> 8
|
||||||
|
// eg: (255 * 256) >> 8 == 255
|
||||||
this->brightness = floor(value * 256.0f);
|
this->brightness = floor(value * 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
float StellarUnicorn::get_brightness() {
|
float StellarUnicorn::get_brightness() {
|
||||||
return this->brightness / 255.0f;
|
return this->brightness / 256.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StellarUnicorn::adjust_brightness(float delta) {
|
void StellarUnicorn::adjust_brightness(float delta) {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
import time
|
||||||
|
from machine import Pin
|
||||||
|
from pimoroni_i2c import PimoroniI2C
|
||||||
|
from breakout_ltr559 import BreakoutLTR559
|
||||||
|
|
||||||
|
PINS_BREAKOUT_GARDEN = {"sda": 4, "scl": 5}
|
||||||
|
PINS_PICO_EXPLORER = {"sda": 20, "scl": 21}
|
||||||
|
PIN_INTERRUPT = 22 # 3 for Breakout Garden
|
||||||
|
|
||||||
|
i2c = PimoroniI2C(**PINS_PICO_EXPLORER)
|
||||||
|
ltr = BreakoutLTR559(i2c, interrupt=PIN_INTERRUPT)
|
||||||
|
interrupt = Pin(PIN_INTERRUPT, Pin.IN, Pin.PULL_DOWN)
|
||||||
|
|
||||||
|
ltr.light_threshold(0, 10) # COUNTS, NOT LUX!!!
|
||||||
|
ltr.proximity_threshold(0, 10)
|
||||||
|
|
||||||
|
|
||||||
|
def read(pin):
|
||||||
|
reading = ltr.get_reading()
|
||||||
|
if reading is not None:
|
||||||
|
print("T: ", time.ticks_ms(), " Lux: ", reading[BreakoutLTR559.LUX], " Prox: ", reading[BreakoutLTR559.PROXIMITY])
|
||||||
|
|
||||||
|
|
||||||
|
interrupt.irq(trigger=Pin.IRQ_RISING, handler=read)
|
||||||
|
|
||||||
|
part_id = ltr.part_id()
|
||||||
|
print("Found LTR559. Part ID: 0x", '{:02x}'.format(part_id), sep="")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
pass
|
|
@ -84,6 +84,7 @@ The available display settings are listed here:
|
||||||
* 32 x 32 Matrix - `DISPLAY_INTERSTATE75_32X32`
|
* 32 x 32 Matrix - `DISPLAY_INTERSTATE75_32X32`
|
||||||
* 64 x 32 Matrix - `DISPLAY_INTERSTATE75_64X32`
|
* 64 x 32 Matrix - `DISPLAY_INTERSTATE75_64X32`
|
||||||
* 96 x 32 Matrix - `DISPLAY_INTERSTATE75_96X32`
|
* 96 x 32 Matrix - `DISPLAY_INTERSTATE75_96X32`
|
||||||
|
* 96 x 48 Matrix - `DISPLAY_INTERSTATE75_96X48`
|
||||||
* 128 x 32 Matrix - `DISPLAY_INTERSTATE75_128X32`
|
* 128 x 32 Matrix - `DISPLAY_INTERSTATE75_128X32`
|
||||||
* 64 x 64 Matrix - `DISPLAY_INTERSTATE75_64X64`
|
* 64 x 64 Matrix - `DISPLAY_INTERSTATE75_64X64`
|
||||||
* 128 x 64 Matrix - `DISPLAY_INTERSTATE75_128X64`
|
* 128 x 64 Matrix - `DISPLAY_INTERSTATE75_128X64`
|
||||||
|
|
|
@ -145,6 +145,7 @@ STATIC const mp_map_elem_t picographics_globals_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_32X32), MP_ROM_INT(DISPLAY_INTERSTATE75_32X32) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_32X32), MP_ROM_INT(DISPLAY_INTERSTATE75_32X32) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_64X32), MP_ROM_INT(DISPLAY_INTERSTATE75_64X32) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_64X32), MP_ROM_INT(DISPLAY_INTERSTATE75_64X32) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_96X32), MP_ROM_INT(DISPLAY_INTERSTATE75_96X32) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_96X32), MP_ROM_INT(DISPLAY_INTERSTATE75_96X32) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_96X48), MP_ROM_INT(DISPLAY_INTERSTATE75_96X48) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_128X32), MP_ROM_INT(DISPLAY_INTERSTATE75_128X32) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_128X32), MP_ROM_INT(DISPLAY_INTERSTATE75_128X32) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_64X64), MP_ROM_INT(DISPLAY_INTERSTATE75_64X64) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_64X64), MP_ROM_INT(DISPLAY_INTERSTATE75_64X64) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_128X64), MP_ROM_INT(DISPLAY_INTERSTATE75_128X64) },
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_128X64), MP_ROM_INT(DISPLAY_INTERSTATE75_128X64) },
|
||||||
|
|
|
@ -155,6 +155,14 @@ bool get_display_settings(PicoGraphicsDisplay display, int &width, int &height,
|
||||||
if(rotate == -1) rotate = (int)Rotation::ROTATE_0;
|
if(rotate == -1) rotate = (int)Rotation::ROTATE_0;
|
||||||
if(pen_type == -1) pen_type = PEN_RGB888;
|
if(pen_type == -1) pen_type = PEN_RGB888;
|
||||||
break;
|
break;
|
||||||
|
case DISPLAY_INTERSTATE75_96X48:
|
||||||
|
width = 96;
|
||||||
|
height = 48;
|
||||||
|
bus_type = BUS_PIO;
|
||||||
|
// Portrait to match labelling
|
||||||
|
if(rotate == -1) rotate = (int)Rotation::ROTATE_0;
|
||||||
|
if(pen_type == -1) pen_type = PEN_RGB888;
|
||||||
|
break;
|
||||||
case DISPLAY_INTERSTATE75_128X32:
|
case DISPLAY_INTERSTATE75_128X32:
|
||||||
width = 128;
|
width = 128;
|
||||||
height = 32;
|
height = 32;
|
||||||
|
|
|
@ -19,6 +19,7 @@ enum PicoGraphicsDisplay {
|
||||||
DISPLAY_INTERSTATE75_32X32,
|
DISPLAY_INTERSTATE75_32X32,
|
||||||
DISPLAY_INTERSTATE75_64X32,
|
DISPLAY_INTERSTATE75_64X32,
|
||||||
DISPLAY_INTERSTATE75_96X32,
|
DISPLAY_INTERSTATE75_96X32,
|
||||||
|
DISPLAY_INTERSTATE75_96X48,
|
||||||
DISPLAY_INTERSTATE75_128X32,
|
DISPLAY_INTERSTATE75_128X32,
|
||||||
DISPLAY_INTERSTATE75_64X64,
|
DISPLAY_INTERSTATE75_64X64,
|
||||||
DISPLAY_INTERSTATE75_128X64,
|
DISPLAY_INTERSTATE75_128X64,
|
||||||
|
|
|
@ -20,3 +20,9 @@ target_compile_definitions(usermod_picovector INTERFACE
|
||||||
target_link_libraries(usermod_picovector INTERFACE hardware_interp)
|
target_link_libraries(usermod_picovector INTERFACE hardware_interp)
|
||||||
|
|
||||||
target_link_libraries(usermod INTERFACE usermod_picovector)
|
target_link_libraries(usermod INTERFACE usermod_picovector)
|
||||||
|
|
||||||
|
set_source_files_properties(
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/../../../libraries/pico_vector/pico_vector.cpp
|
||||||
|
PROPERTIES COMPILE_FLAGS
|
||||||
|
"-Wno-sign-compare -Wno-narrowing"
|
||||||
|
)
|
||||||
|
|
|
@ -32,6 +32,7 @@ You can choose the HUB75 matrix display size that you wish to use by defining `d
|
||||||
DISPLAY_INTERSTATE75_32X32
|
DISPLAY_INTERSTATE75_32X32
|
||||||
DISPLAY_INTERSTATE75_64X32
|
DISPLAY_INTERSTATE75_64X32
|
||||||
DISPLAY_INTERSTATE75_96X32
|
DISPLAY_INTERSTATE75_96X32
|
||||||
|
DISPLAY_INTERSTATE75_96X48
|
||||||
DISPLAY_INTERSTATE75_128X32
|
DISPLAY_INTERSTATE75_128X32
|
||||||
DISPLAY_INTERSTATE75_64X64
|
DISPLAY_INTERSTATE75_64X64
|
||||||
DISPLAY_INTERSTATE75_128X64
|
DISPLAY_INTERSTATE75_128X64
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from pimoroni import RGBLED, Button
|
from pimoroni import RGBLED, Button
|
||||||
from picographics import PicoGraphics, DISPLAY_INTERSTATE75_32X32, DISPLAY_INTERSTATE75_64X32, DISPLAY_INTERSTATE75_96X32, DISPLAY_INTERSTATE75_128X32, DISPLAY_INTERSTATE75_64X64, DISPLAY_INTERSTATE75_128X64, DISPLAY_INTERSTATE75_192X64, DISPLAY_INTERSTATE75_256X64
|
from picographics import PicoGraphics, DISPLAY_INTERSTATE75_32X32, DISPLAY_INTERSTATE75_64X32, DISPLAY_INTERSTATE75_96X32, DISPLAY_INTERSTATE75_96X48, DISPLAY_INTERSTATE75_128X32, DISPLAY_INTERSTATE75_64X64, DISPLAY_INTERSTATE75_128X64, DISPLAY_INTERSTATE75_192X64, DISPLAY_INTERSTATE75_256X64
|
||||||
from pimoroni_i2c import PimoroniI2C
|
from pimoroni_i2c import PimoroniI2C
|
||||||
import hub75
|
import hub75
|
||||||
import sys
|
import sys
|
||||||
|
@ -23,6 +23,7 @@ class Interstate75:
|
||||||
DISPLAY_INTERSTATE75_32X32 = DISPLAY_INTERSTATE75_32X32
|
DISPLAY_INTERSTATE75_32X32 = DISPLAY_INTERSTATE75_32X32
|
||||||
DISPLAY_INTERSTATE75_64X32 = DISPLAY_INTERSTATE75_64X32
|
DISPLAY_INTERSTATE75_64X32 = DISPLAY_INTERSTATE75_64X32
|
||||||
DISPLAY_INTERSTATE75_96X32 = DISPLAY_INTERSTATE75_96X32
|
DISPLAY_INTERSTATE75_96X32 = DISPLAY_INTERSTATE75_96X32
|
||||||
|
DISPLAY_INTERSTATE75_96X48 = DISPLAY_INTERSTATE75_96X48
|
||||||
DISPLAY_INTERSTATE75_128X32 = DISPLAY_INTERSTATE75_128X32
|
DISPLAY_INTERSTATE75_128X32 = DISPLAY_INTERSTATE75_128X32
|
||||||
DISPLAY_INTERSTATE75_64X64 = DISPLAY_INTERSTATE75_64X64
|
DISPLAY_INTERSTATE75_64X64 = DISPLAY_INTERSTATE75_64X64
|
||||||
DISPLAY_INTERSTATE75_128X64 = DISPLAY_INTERSTATE75_128X64
|
DISPLAY_INTERSTATE75_128X64 = DISPLAY_INTERSTATE75_128X64
|
||||||
|
|
Ładowanie…
Reference in New Issue