Skip to content

Commit 0d4ee60

Browse files
authored
feat: Add arduino modulino extension (#46)
* feat: add arduino_modulino extension with initial setup and test files * fix: update tags for Arduino Basics and Arduino Modulino extensions * feat: add socket.io-client dependency and implement connection logic in Arduino Modulino extension * refactor: reorganize code structure and improve type annotations in Arduino Modulino extension * feat: implement button press handling in Arduino Modulino extension * refactor: enhance connection logging and improve button press handling in Arduino Modulino extension * feat: add ButtonArgument component and integrate button press handling in ModulinoButtons class * refactor: simplify button text handling in ButtonArgument and index files * refactor: streamline ModulinoButtons class initialization and add icon image * refactor: update insetIconURL placeholder in ModulinoButtons class * Add modulinos.png image for Arduino Modulino extension * refactor: improve formatting and structure in Modulino extension files
1 parent e96b6c0 commit 0d4ee60

File tree

14 files changed

+3335
-27
lines changed

14 files changed

+3335
-27
lines changed

Taskfile.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ tasks:
2727
# copy the extension to the rigth place
2828
- ln -s $PWD/scratch-prg-extensions/extensions/src/arduino_basics $PWD/prg-raise-playground/extensions/src/arduino_basics
2929
- cd scratch-prg-extensions/extensions/src/arduino_basics && pnpm install
30+
- ln -s $PWD/scratch-prg-extensions/extensions/src/arduino_modulino $PWD/prg-raise-playground/extensions/src/arduino_modulino
31+
- cd scratch-prg-extensions/extensions/src/arduino_modulino && pnpm install
3032

3133
scratch:watch:
3234
cmds:
33-
- cd prg-raise-playground && pnpm dev -i arduino_basics
35+
- cd prg-raise-playground && pnpm dev -i arduino_basics arduino_modulino
3436

3537
app:build:
3638
desc: "Copy app files (python, assets, app.yaml) to a build directory"

python/main.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,11 @@ def on_matrix_draw(_, data):
1313

1414
ui.on_message("matrix_draw", on_matrix_draw)
1515

16+
17+
def on_modulino_button_pressed(btn):
18+
ui.send_message("modulino_buttons_pressed", {"btn": btn})
19+
20+
21+
Bridge.provide("modulino_button_pressed", on_modulino_button_pressed)
22+
1623
App.run()

scratch-prg-extensions/extensions/src/arduino_basics/MatrixArgument.svelte

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@
7171
<style>
7272
.matrix {
7373
display: inline-block;
74-
border: 1px solid #333;
75-
background-color: #000;
74+
background-color: #00878F;
7675
border-radius: 4px;
7776
padding: 2px;
7877
}
@@ -88,19 +87,17 @@
8887
}
8988
9089
.led {
91-
width: 15px;
92-
height: 15px;
93-
border: 1px solid #444;
94-
border-radius: 2px;
90+
width: 20px;
91+
height: 20px;
92+
margin: 1px;
93+
border-radius: 30%;
9594
cursor: pointer;
9695
transition: all 0.1s ease;
9796
user-select: none;
98-
background-color: #222;
9997
}
10098
10199
.led:hover {
102-
border-color: #666;
103-
transform: scale(1.1);
100+
border-color: #E5AD24;
104101
}
105102
106103
.controls {
@@ -111,30 +108,54 @@
111108
}
112109
113110
.btn {
114-
padding: 4px 8px;
111+
padding: 6px;
115112
border: none;
116-
border-radius: 3px;
113+
border-radius: 4px;
117114
cursor: pointer;
118-
font-size: 12px;
119115
transition: background-color 0.2s ease;
116+
display: flex;
117+
align-items: center;
118+
justify-content: center;
120119
}
121120
122121
.btn-clear {
123-
background-color: #dc3545;
122+
background-color: #62AEB2;
124123
color: white;
125124
}
126125
127126
.btn-clear:hover {
128-
background-color: #c82333;
127+
background-color: #5a9ea2;
129128
}
130129
131130
.btn-fill {
132-
background-color: #28a745;
131+
background-color: #62AEB2;
133132
color: white;
134133
}
135134
136135
.btn-fill:hover {
137-
background-color: #218838;
136+
background-color: #5a9ea2;
137+
}
138+
139+
.btn-icon {
140+
display: grid;
141+
grid-template-columns: 1fr 1fr 1fr;
142+
gap: 1px;
143+
width: 20px;
144+
height: 20px;
145+
}
146+
147+
.mini-led {
148+
width: 6px;
149+
height: 6px;
150+
border-radius: 30%;
151+
}
152+
153+
.mini-led.clear {
154+
background-color: #00878F;
155+
}
156+
157+
.mini-led.fill {
158+
background-color: #FFFFFF;
138159
}
139160
</style>
140161

@@ -147,8 +168,8 @@
147168
<!-- svelte-ignore a11y-no-static-element-interactions -->
148169
<div
149170
class="led"
150-
style:background-color={ledValue > 0 ? `rgba(0, 123, 255)` : '#222'}
151-
style:box-shadow={ledValue > 0 ? `0 0 ${ledValue * 2}px rgba(0, 123, 255, 0.8)` : 'none'}
171+
style:background-color={ledValue > 0 ? `#FFFFFF` : '#62AEB2'}
172+
style:box-shadow={ledValue > 0 ? `0 0 ${ledValue}px rgba(255, 255, 255, 0.7)` : 'none'}
152173
on:mousedown={(e) => handleMouseDown(e, rowIndex, colIndex)}
153174
on:mouseenter={() => handleMouseEnter(rowIndex, colIndex)}
154175
on:contextmenu={handleContextMenu}
@@ -162,7 +183,31 @@
162183
</div>
163184

164185
<div class="controls">
165-
<button class="btn btn-clear" on:click={clearMatrix}>Clear</button>
166-
<button class="btn btn-fill" on:click={fillMatrix}>Fill</button>
186+
<button class="btn btn-clear" on:click={clearMatrix} title="Clear all LEDs">
187+
<div class="btn-icon">
188+
<div class="mini-led clear"></div>
189+
<div class="mini-led clear"></div>
190+
<div class="mini-led clear"></div>
191+
<div class="mini-led clear"></div>
192+
<div class="mini-led clear"></div>
193+
<div class="mini-led clear"></div>
194+
<div class="mini-led clear"></div>
195+
<div class="mini-led clear"></div>
196+
<div class="mini-led clear"></div>
197+
</div>
198+
</button>
199+
<button class="btn btn-fill" on:click={fillMatrix} title="Fill all LEDs">
200+
<div class="btn-icon">
201+
<div class="mini-led fill"></div>
202+
<div class="mini-led fill"></div>
203+
<div class="mini-led fill"></div>
204+
<div class="mini-led fill"></div>
205+
<div class="mini-led fill"></div>
206+
<div class="mini-led fill"></div>
207+
<div class="mini-led fill"></div>
208+
<div class="mini-led fill"></div>
209+
<div class="mini-led fill"></div>
210+
</div>
211+
</button>
167212
</div>
168213
</div>

scratch-prg-extensions/extensions/src/arduino_basics/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import { io, Socket } from "socket.io-client";
33
import MatrixArgument from "./MatrixArgument.svelte";
44

55
const details: ExtensionMenuDisplayDetails = {
6-
name: "Arduino Basics",
7-
description: "Arduino Basics for Uno Q",
8-
iconURL: "ArduinoLogo_Blue.png",
9-
insetIconURL: "ArduinoLogo_Blue.jpg",
10-
tags: ["Arduino"],
6+
name: "Basic",
7+
description: "Play with UNO Q matrix, leds and pins",
8+
iconURL: "matrix.png",
9+
insetIconURL: "unoq.svg",
10+
tags: ["Arduino UNO Q"],
1111
blockColor: "#00878F",
12-
menuColor: "#62AEB2",
12+
menuColor: "#8C7965",
1313
menuSelectColor: "#62AEB2",
1414
};
1515

126 KB
Loading

0 commit comments

Comments
 (0)