Skip to content

Commit a29547c

Browse files
authored
Merge pull request #2725 from adafruit/sushi
adding sushi conveyor belt project
2 parents 3a28acd + 46924af commit a29547c

File tree

5 files changed

+45819
-0
lines changed

5 files changed

+45819
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
; PlatformIO Project Configuration File
5+
;
6+
; Build options: build flags, source filter
7+
; Upload options: custom upload port, speed and extra flags
8+
; Library options: dependencies, extra library storages
9+
; Advanced options: extra scripting
10+
;
11+
; Please visit documentation for the other options and examples
12+
; https://docs.platformio.org/page/projectconf.html
13+
14+
[env:adafruit_qualia_s3_rgb666]
15+
platform = espressif32
16+
board = adafruit_qualia_s3_rgb666
17+
framework = arduino
18+
upload_port = COM70
19+
monitor_port = COM71
20+
upload_speed = 921600
21+
board_build.arduino.upstream_packages = no
22+
#board_upload.before_reset = default_reset
23+
#-DDEBUG_SERIAL=Serial
24+
build_flags = -DCORE_DEBUG_LEVEL=5 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DARDUINO_LOOP_STACK_SIZE=8092
25+
lib_deps = Wire
26+
SPI
27+
adafruit/Adafruit BusIO

Qualia/Qualia_S3_Sushi_Conveyor_Belt/src/.none.test.only

Whitespace-only changes.
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
// SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
2+
//
3+
// SPDX-License-Identifier: MIT
4+
5+
#include <Arduino.h>
6+
#include <Arduino_GFX.h>
7+
#include "databus/Arduino_XCA9554SWSPI.h"
8+
#include "databus/Arduino_ESP32RGBPanel.h"
9+
#include "display/Arduino_RGB_Display.h"
10+
11+
#define IMG_WIDTH 146
12+
#define IMG_HEIGHT 135
13+
14+
// uncomment for 240x960 bar display
15+
//#define long_display
16+
17+
// otherwise comment out for 320x820 bar display
18+
19+
Arduino_XCA9554SWSPI *expander = new Arduino_XCA9554SWSPI(
20+
PCA_TFT_RESET, PCA_TFT_CS, PCA_TFT_SCK, PCA_TFT_MOSI,
21+
&Wire, 0x3F);
22+
23+
#ifdef long_display
24+
#include "sushi_960x240.h"
25+
Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel(
26+
TFT_DE, TFT_VSYNC, TFT_HSYNC, TFT_PCLK,
27+
TFT_R1, TFT_R2, TFT_R3, TFT_R4, TFT_R5,
28+
TFT_G0, TFT_G1, TFT_G2, TFT_G3, TFT_G4, TFT_G5,
29+
TFT_B1, TFT_B2, TFT_B3, TFT_B4, TFT_B5,
30+
1 /* hync_polarity */, 20 /* hsync_front_porch */, 8 /* hsync_pulse_width */, 20 /* hsync_back_porch */,
31+
1 /* vsync_polarity */, 20 /* vsync_front_porch */, 8 /* vsync_pulse_width */, 20 /* vsync_back_porch, */,
32+
0 /* pclk_active_neg */, GFX_NOT_DEFINED /* prefer_speed */, false /* useBigEndian */, 0 /* de_idle_high */,
33+
0 /* pclk_idle_high */ );
34+
35+
Arduino_RGB_Display *gfx = new Arduino_RGB_Display(
36+
// 3.2" 320x820 rectangle bar display
37+
240 /* width */, 960 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
38+
expander, GFX_NOT_DEFINED /* RST */, HD371001C40_init_operations, sizeof(HD371001C40_init_operations), 120 /* col_offset1 */);
39+
40+
const int numberOfBitmaps = 8;
41+
int display_w = 240;
42+
int display_h = 960;
43+
int sushi_h = 15;
44+
int sushi_offset = 62;
45+
46+
#else
47+
#include "sushi_320x820.h"
48+
Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel(
49+
TFT_DE, TFT_VSYNC, TFT_HSYNC, TFT_PCLK,
50+
TFT_R1, TFT_R2, TFT_R3, TFT_R4, TFT_R5,
51+
TFT_G0, TFT_G1, TFT_G2, TFT_G3, TFT_G4, TFT_G5,
52+
TFT_B1, TFT_B2, TFT_B3, TFT_B4, TFT_B5,
53+
1 /* hsync_polarity */, 50 /* hsync_front_porch */, 2 /* hsync_pulse_width */, 44 /* hsync_back_porch */,
54+
1 /* vsync_polarity */, 16 /* vsync_front_porch */, 2 /* vsync_pulse_width */, 18 /* vsync_back_porch */
55+
);
56+
57+
Arduino_RGB_Display *gfx = new Arduino_RGB_Display(
58+
// 3.2" 320x820 rectangle bar display
59+
320 /* width */, 820 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
60+
expander, GFX_NOT_DEFINED /* RST */, tl032fwv01_init_operations, sizeof(tl032fwv01_init_operations));
61+
62+
const int numberOfBitmaps = 7;
63+
int display_w = 320;
64+
int display_h = 820;
65+
int sushi_h = 29;
66+
int sushi_offset = 55;
67+
68+
#endif
69+
70+
struct BitmapInfo {
71+
int yPosition;
72+
int bitmapIndex;
73+
};
74+
75+
BitmapInfo bitmaps[numberOfBitmaps];
76+
77+
void setup(void)
78+
{
79+
Serial.begin(115200);
80+
//while (!Serial) delay(100);
81+
82+
#ifdef GFX_EXTRA_PRE_INIT
83+
GFX_EXTRA_PRE_INIT();
84+
#endif
85+
86+
Serial.println("Beginning");
87+
88+
Wire.setClock(400000);
89+
if (!gfx->begin()) {
90+
Serial.println("gfx->begin() failed!");
91+
}
92+
93+
Serial.println("Initialized!");
94+
95+
gfx->fillScreen(BLACK);
96+
97+
expander->pinMode(PCA_TFT_BACKLIGHT, OUTPUT);
98+
expander->digitalWrite(PCA_TFT_BACKLIGHT, HIGH);
99+
100+
Serial.println("Adafruit Sushi Conveyer Belt!");
101+
102+
#ifdef GFX_EXTRA_PRE_INIT
103+
GFX_EXTRA_PRE_INIT();
104+
#endif
105+
106+
#ifdef GFX_BL
107+
pinMode(GFX_BL, OUTPUT);
108+
digitalWrite(GFX_BL, HIGH);
109+
#endif
110+
111+
for (int i = 0; i < numberOfBitmaps; i++) {
112+
bitmaps[i].yPosition = (-IMG_WIDTH) * i;
113+
bitmaps[i].bitmapIndex = random(0, myBitmapallArray_LEN - 1);
114+
}
115+
116+
gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)myBitmapallArray[6], display_w, display_h);
117+
118+
}
119+
120+
void loop()
121+
{
122+
123+
for (int i = 0; i < numberOfBitmaps; i++) {
124+
bitmaps[i].yPosition++;
125+
if (bitmaps[i].yPosition > gfx->height()) {
126+
127+
bitmaps[i].yPosition = -IMG_WIDTH - sushi_offset;
128+
bitmaps[i].bitmapIndex = random(0, myBitmapallArray_LEN - 1);
129+
}
130+
gfx->draw16bitRGBBitmap(sushi_h, bitmaps[i].yPosition, (uint16_t *)myBitmapallArray[bitmaps[i].bitmapIndex], IMG_HEIGHT, IMG_WIDTH);
131+
}
132+
delay(1);
133+
134+
}

0 commit comments

Comments
 (0)