Skip to content

Commit 213b3dc

Browse files
devkyatocursoragent
andcommitted
Publish Zenodo presentation overhaul for Arduino Programs Guide v1.0.2
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent f6a3315 commit 213b3dc

9 files changed

Lines changed: 202 additions & 47 deletions

File tree

.zenodo.json

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
{
2-
"creators": [{"name": "devkyato", "affiliation": "MATA Company"}],
2+
"creators": [{"name": "@dev.mako (devkyato)", "affiliation": "MATA Company"}],
33
"contributors": [{"name": "Cursor Agent", "type": "Other"}],
44
"title": "Arduino Programs Guide: safety-first compile-checked Arduino Uno course",
5-
"description": "Arduino Programs Guide is a progressive, safety-first Arduino Uno course covering serial commands, LED patterns, PWM motor control, state machines, and emergency-stop behaviour. Each lesson pairs a compile-checked sketch with wiring, safety, test, and extension guidance. Usage: follow the lessons in order, build the documented circuits safely, compile and upload the sketches, and complete each verification checklist. Applications include classroom instruction, introductory embedded systems labs, supervised motor-control exercises, and independent Arduino study.",
6-
"version": "1.0.1",
7-
"keywords": ["Arduino", "education", "course", "Uno", "safety", "PWM", "motor control", "embedded", "serial"],
5+
"description": "<h2>Overview</h2><p><strong>Arduino Programs Guide</strong> is a progressive, safety-first Arduino Uno course covering serial commands, LED patterns, PWM motor control, state machines, and emergency-stop behaviour. Each lesson pairs a compile-checked sketch with wiring, safety, verification, and extension guidance.</p><h2>Learning outcomes</h2><ul><li>Map serial commands to digital outputs and reusable functions.</li><li>Build non-blocking LED patterns with arrays, bit masks, and <code>millis()</code>.</li><li>Drive motors safely with PWM, transistor or H-bridge drivers, and fail-safe stops.</li><li>Integrate analog sensing, emergency override, and telemetry in a supervised capstone.</li></ul><h2>Getting started</h2><ul><li>Read the hardware-safety and getting-started guides.</li><li>Build Exercise A with power disconnected.</li><li>Upload and verify over Serial Monitor before adding Bluetooth.</li><li>Progress through Exercises A to F and complete each checklist.</li></ul><pre><code>arduino-cli compile --fqbn arduino:avr:uno exercises/exercise-a-arrow-controller</code></pre><h2>Quick start</h2><p>Exercise A accepts simple arrow commands at 9600 baud:</p><pre><code>// USB Serial or TTL Bluetooth serial at 9600 baud\n// U D L R C control four LEDs and a clear command</code></pre><h2>Applications</h2><ul><li>Introductory Arduino Uno coursework and maker-space labs.</li><li>Safety-first PWM and H-bridge motor lessons.</li><li>Compile-checked embedded systems instruction.</li><li>Independent practice with serial control and state machines.</li></ul><h2>Compatibility, safety, and limitations</h2><p>The course targets Arduino Uno and the Arduino AVR Boards core. CI compiles every sketch; that is not hardware validation. Never connect a DC motor directly to an Arduino pin. Motor lessons require a suitable driver, flyback protection, an external motor supply, and a shared ground. Other boards may differ in PWM pins, voltage levels, serial ports, or ADC ranges.</p><h2>Documentation</h2><ul><li><a href=\"https://github.com/devkyato/Arduino-Programs-Guide/blob/main/docs/README.md\">Documentation index</a></li><li><a href=\"https://github.com/devkyato/Arduino-Programs-Guide/blob/main/docs/hardware-safety.md\">Hardware safety</a></li><li><a href=\"https://github.com/devkyato/Arduino-Programs-Guide/blob/main/docs/getting-started.md\">Getting started</a></li></ul><h2>Related software</h2><p><a href=\"https://github.com/devkyato/Custom-Arduino-Libraries\">ArduinoPatterns</a> is the companion library for optional non-blocking abstractions after Exercise B.</p><h2>Citation</h2><p>@dev.mako (devkyato). (2026). <strong>Arduino Programs Guide: safety-first compile-checked Arduino Uno course</strong> (Version 1.0.2). Zenodo. <a href=\"https://doi.org/10.5281/zenodo.21853286\">https://doi.org/10.5281/zenodo.21853286</a></p>",
6+
"version": "1.0.2",
7+
"keywords": ["Arduino", "education", "course", "Uno", "safety", "PWM", "motor control", "embedded", "serial", "state machine", "curriculum"],
88
"license": "mit",
99
"upload_type": "software",
1010
"access_right": "open",
1111
"language": "eng",
1212
"related_identifiers": [
1313
{"identifier": "https://github.com/devkyato/Arduino-Programs-Guide", "relation": "isSupplementTo", "resource_type": "software"},
14-
{"identifier": "https://github.com/devkyato/Datary", "relation": "references", "resource_type": "software"},
15-
{"identifier": "https://github.com/devkyato/OpenNet", "relation": "references", "resource_type": "software"},
16-
{"identifier": "https://github.com/devkyato/TapAuth", "relation": "references", "resource_type": "software"},
17-
{"identifier": "https://github.com/devkyato/Lowpack", "relation": "references", "resource_type": "software"},
18-
{"identifier": "https://github.com/devkyato/Relay", "relation": "references", "resource_type": "software"},
14+
{"identifier": "10.5281/zenodo.21853286", "relation": "isVersionOf", "scheme": "doi"},
1915
{"identifier": "https://github.com/devkyato/Custom-Arduino-Libraries", "relation": "references", "resource_type": "software"}
2016
]
2117
}

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## [1.0.2] - 2026-08-09
4+
5+
### Changed
6+
7+
- Overhaul Zenodo HTML description, README, citation metadata, and documentation index for archival presentation.
8+
- Add instructor guidance, Bluetooth warm-up lesson notes, and an Exercise B path into ArduinoPatterns.
9+
- Package `CITATION.cff` in the offline course ZIP and align attribution on `@dev.mako (devkyato)`.
10+
- Record the Zenodo concept DOI `10.5281/zenodo.21853286`.
11+
312
## [1.0.1] - 2026-08-09
413

514
- Add Zenodo and Citation File Format metadata for archival citation.
@@ -14,3 +23,4 @@
1423

1524
[1.0.0]: https://github.com/devkyato/Arduino-Programs-Guide/releases/tag/v1.0.0
1625
[1.0.1]: https://github.com/devkyato/Arduino-Programs-Guide/compare/v1.0.0...v1.0.1
26+
[1.0.2]: https://github.com/devkyato/Arduino-Programs-Guide/compare/v1.0.1...v1.0.2

CITATION.cff

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,43 @@ cff-version: 1.2.0
22
message: "If you use this software, please cite it using the metadata from this file."
33
title: "Arduino Programs Guide: safety-first compile-checked Arduino Uno course"
44
authors:
5-
- family-names: devkyato
5+
- name: "@dev.mako (devkyato)"
66
affiliation: "MATA Company"
7-
version: 1.0.1
7+
version: 1.0.2
8+
date-released: 2026-08-09
89
license: MIT
910
repository-code: "https://github.com/devkyato/Arduino-Programs-Guide"
1011
url: "https://github.com/devkyato/Arduino-Programs-Guide"
11-
abstract: "A safety-first compile-checked Arduino Uno course."
12-
keywords: [Arduino, education, course, Uno, safety, PWM, motor control, embedded, serial]
12+
doi: 10.5281/zenodo.21853286
13+
identifiers:
14+
- type: doi
15+
value: 10.5281/zenodo.21853286
16+
abstract: >-
17+
Arduino Programs Guide is a progressive, safety-first Arduino Uno course covering
18+
serial commands, LED patterns, PWM motor control, state machines, and emergency-stop
19+
behaviour. Each lesson pairs a compile-checked sketch with wiring contracts, hardware
20+
safety guidance, verification checklists, and extension ideas for classroom and
21+
independent study.
22+
keywords:
23+
- Arduino
24+
- education
25+
- course
26+
- Uno
27+
- safety
28+
- PWM
29+
- motor control
30+
- embedded systems
31+
- serial
32+
- state machine
33+
- curriculum
1334
preferred-citation:
1435
type: software
1536
title: "Arduino Programs Guide: safety-first compile-checked Arduino Uno course"
1637
authors:
17-
- family-names: devkyato
38+
- name: "@dev.mako (devkyato)"
1839
affiliation: "MATA Company"
19-
version: 1.0.1
40+
version: 1.0.2
41+
date-released: 2026-08-09
42+
repository-code: "https://github.com/devkyato/Arduino-Programs-Guide"
43+
doi: 10.5281/zenodo.21853286
44+
license: MIT

README.md

Lines changed: 65 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
# Arduino Programs Guide
22

33
[![Sketch compilation](https://github.com/devkyato/Arduino-Programs-Guide/actions/workflows/compile.yml/badge.svg)](https://github.com/devkyato/Arduino-Programs-Guide/actions/workflows/compile.yml)
4+
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21853286.svg)](https://doi.org/10.5281/zenodo.21853286)
45
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
56

6-
A progressive, hands-on Arduino Uno course covering serial commands, LED patterns,
7-
PWM motor control, state machines, and emergency-stop behavior. Each lesson
8-
includes a compile-checked sketch, wiring contract, test procedure, and extension
9-
ideas.
7+
Arduino Programs Guide 1.0.2 is a progressive, safety-first Arduino Uno course covering
8+
serial commands, LED patterns, PWM motor control, state machines, and emergency-stop
9+
behaviour. Each lesson includes a compile-checked sketch, wiring contract, test procedure,
10+
and extension ideas.
1011

1112
> [!CAUTION]
1213
> Never connect a DC motor directly to an Arduino pin. Motor lessons require a
1314
> suitable transistor or H-bridge driver, flyback protection, an external motor
1415
> supply, and a shared ground. Read [Hardware safety](docs/hardware-safety.md)
1516
> before Exercises C–F.
1617
18+
## Learning outcomes
19+
20+
- Map serial commands to digital outputs and reusable functions.
21+
- Build non-blocking LED patterns with arrays, bit masks, and `millis()`.
22+
- Drive motors safely with PWM, drivers, and fail-safe stops.
23+
- Integrate analog sensing, emergency override, and telemetry in Exercise F.
24+
1725
## Learning path
1826

1927
| Lesson | Project | Main concepts | Hardware |
@@ -25,55 +33,82 @@ ideas.
2533
| [E](docs/lessons/exercise-e.md) | Synchronized scanner | numeric parsing, `map()`, animation | 4 LEDs, driver, motor |
2634
| [F](docs/lessons/exercise-f.md) | Integrated vehicle | analog input, emergency override, telemetry | full circuit |
2735

28-
There is also a small [Bluetooth LED warm-up](extras/basic-bluetooth-led/)
29-
for testing a serial module before starting the main exercises.
36+
There is also a [Bluetooth LED warm-up](docs/lessons/bluetooth-warmup.md) for testing a
37+
serial module before starting the main exercises.
3038

3139
## Start here
3240

33-
1. Read [Getting started](docs/getting-started.md).
41+
1. Read [Getting started](docs/getting-started.md) and [Hardware safety](docs/hardware-safety.md).
3442
2. Build Exercise A with the board disconnected from power.
3543
3. Upload the sketch and test it in Serial Monitor before adding Bluetooth.
3644
4. Complete the lesson's verification checklist.
37-
5. Commit your observations and improvements in your own fork.
45+
5. After Exercise B, optionally try the companion [ArduinoPatterns](https://github.com/devkyato/Custom-Arduino-Libraries) library.
3846

3947
All sketches use `9600` baud and accept the same characters from USB Serial or a
4048
TTL serial Bluetooth module. On an Uno, the hardware serial pins are shared with
41-
USB; disconnect the module from pins 0/1 while uploading. See
42-
[Serial control](docs/serial-control.md).
43-
44-
## Repository layout
49+
USB; disconnect the module from pins 0/1 while uploading.
4550

46-
```text
47-
exercises/ Six progressively more involved Arduino sketches
48-
extras/ Small setup and diagnostic sketches
49-
docs/lessons/ Objectives, wiring tables, tests, and challenges
50-
docs/ Setup, safety, serial, and troubleshooting guides
51-
.github/ Contribution templates and automated compile checks
51+
```bash
52+
arduino-cli compile --fqbn arduino:avr:uno exercises/exercise-a-arrow-controller
5253
```
5354

54-
## Supported environment
55+
## Instructor guidance
56+
57+
| Item | Guidance |
58+
| --- | --- |
59+
| Prerequisites | Arduino Uno or compatible board, breadboard, LEDs/resistors, and for C–F a motor driver, flyback protection, and separate motor supply |
60+
| Suggested pacing | one lesson per session for A–B; one to two sessions for each motor lesson |
61+
| Assessment | require completed wiring checklists, Serial Monitor verification, and a short reflection on safety or non-blocking behaviour |
62+
| Safety gate | do not begin Exercises C–F until students can explain why motors need drivers and shared ground |
5563

56-
The examples target the Arduino Uno and the Arduino AVR Boards core. CI compiles
57-
every sketch with the official Arduino toolchain. Other boards may use different
58-
PWM pins, voltage levels, serial ports, or ADC ranges; porting notes are welcome
64+
## Companion library progression
65+
66+
Exercise B teaches non-blocking patterns by hand. After students understand the timing model,
67+
they can optionally refactor LED banks and timed sequences with
68+
[ArduinoPatterns](https://github.com/devkyato/Custom-Arduino-Libraries). The course itself remains
69+
complete without the library.
70+
71+
## Applications
72+
73+
- Introductory Arduino Uno coursework and maker-space labs.
74+
- Safety-first PWM and H-bridge motor lessons.
75+
- Compile-checked embedded systems laboratories.
76+
- Independent practice with serial, state machines, and digital outputs.
77+
78+
## Compatibility and limitations
79+
80+
The examples target the Arduino Uno and the Arduino AVR Boards core. CI compiles every sketch
81+
with the official Arduino toolchain; that is not hardware validation. Other boards may use
82+
different PWM pins, voltage levels, serial ports, or ADC ranges. Porting notes are welcome
5983
only when verified on hardware.
6084

61-
## Citation
85+
## Documentation index
6286

63-
If you use this software in research or teaching, please cite the Zenodo archive / this repository:
87+
- [Documentation index](docs/README.md)
88+
- [Getting started](docs/getting-started.md)
89+
- [Hardware safety](docs/hardware-safety.md)
90+
- [Serial control](docs/serial-control.md)
91+
- [Troubleshooting](docs/troubleshooting.md)
92+
- [Lessons A–F](docs/lessons/)
93+
- [Bluetooth warm-up](docs/lessons/bluetooth-warmup.md)
94+
- [Changelog](CHANGELOG.md)
95+
96+
## Citation
6497

6598
```text
66-
devkyato. (2026). Arduino Programs Guide: safety-first compile-checked Arduino Uno course (Version 1.0.1).
99+
@dev.mako (devkyato). (2026). Arduino Programs Guide: safety-first compile-checked Arduino Uno course (Version 1.0.2). Zenodo. https://doi.org/10.5281/zenodo.21853286
67100
```
68101

69102
See [CITATION.cff](CITATION.cff) for machine-readable metadata.
70103

71-
## Applications
104+
## Connected projects
72105

73-
- Introductory Arduino Uno coursework.
74-
- Safety-first PWM motor-control lessons.
75-
- Compile-checked embedded systems laboratories.
76-
- Independent practice with serial, state machines, and digital outputs.
106+
| Project | Role |
107+
| --- | --- |
108+
| **[ArduinoPatterns](https://github.com/devkyato/Custom-Arduino-Libraries)** | Optional non-blocking LED and digital-output library |
109+
| **[Relay](https://github.com/devkyato/Relay)** | Timing-risk source review for control programs |
110+
| **[OpenNet](https://github.com/devkyato/OpenNet)** | Typed ONP/1 messaging for ESP32, Raspberry Pi, and backends |
111+
| **[Datary](https://github.com/devkyato/Datary)** | Local-first laboratory for reproducible program evidence |
77112

78113
## Contributing
79114

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.1
1+
1.0.2

docs/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Documentation index
2+
3+
Arduino Programs Guide 1.0.2 documentation for instructors, students, and offline archive users.
4+
5+
## Course setup
6+
7+
1. [Getting started](getting-started.md) — clone, toolchain, first upload.
8+
2. [Hardware safety](hardware-safety.md) — mandatory before motor lessons.
9+
3. [Serial control](serial-control.md) — USB and Bluetooth serial notes.
10+
4. [Troubleshooting](troubleshooting.md) — common wiring and upload failures.
11+
12+
## Lessons
13+
14+
| Lesson | Document | Sketch |
15+
| --- | --- | --- |
16+
| A | [exercise-a.md](lessons/exercise-a.md) | `exercises/exercise-a-arrow-controller` |
17+
| B | [exercise-b.md](lessons/exercise-b.md) | `exercises/exercise-b-pattern-selector` |
18+
| C | [exercise-c.md](lessons/exercise-c.md) | `exercises/exercise-c-smart-fan` |
19+
| D | [exercise-d.md](lessons/exercise-d.md) | `exercises/exercise-d-wheel-simulation` |
20+
| E | [exercise-e.md](lessons/exercise-e.md) | `exercises/exercise-e-synchronized-scanner` |
21+
| F | [exercise-f.md](lessons/exercise-f.md) | `exercises/exercise-f-integrated-vehicle` |
22+
| Warm-up | [bluetooth-warmup.md](lessons/bluetooth-warmup.md) | `extras/basic-bluetooth-led` |
23+
24+
## Instructor notes
25+
26+
- Keep Exercises A–B LED-only so students learn serial and timing before power electronics.
27+
- Gate Exercises C–F on a short safety quiz or checklist review.
28+
- After Exercise B, introduce [ArduinoPatterns](https://github.com/devkyato/Custom-Arduino-Libraries) as an optional abstraction, not a required dependency.
29+
- Prefer verification checklists over grading wiring aesthetics; unsafe motor wiring fails the lesson.
30+
31+
## Offline archive contents
32+
33+
Release ZIP `Arduino-Programs-Guide-1.0.2.zip` includes exercises, extras, docs, citation metadata, changelog, and governance files so the course can be taught without a live GitHub session.

docs/lessons/bluetooth-warmup.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Bluetooth LED warm-up
2+
3+
Use this short setup lesson before Exercise A when students will later control sketches over a TTL Bluetooth serial module.
4+
5+
## Goals
6+
7+
- Confirm the Bluetooth module pairs and exchanges characters at 9600 baud.
8+
- Prove that the same serial commands work over USB Serial and Bluetooth.
9+
- Avoid confusing upload failures caused by leaving the module on pins 0/1.
10+
11+
## Sketch
12+
13+
Use [`extras/basic-bluetooth-led`](../../extras/basic-bluetooth-led/).
14+
15+
## Wiring checklist
16+
17+
1. Power the Arduino from USB while configuring and testing.
18+
2. Wire the Bluetooth module `TX` to Arduino `RX` (pin 0) and module `RX` to Arduino `TX` (pin 1) only after upload succeeds.
19+
3. Share ground between the module and Arduino.
20+
4. Confirm the module voltage matches the board and module documentation.
21+
5. Disconnect the module from pins 0/1 before every new upload.
22+
23+
## Test procedure
24+
25+
1. Upload the warm-up sketch with the Bluetooth module disconnected from pins 0/1.
26+
2. Open Serial Monitor at 9600 baud and verify LED commands over USB.
27+
3. Power down, connect the Bluetooth module, pair from the host device, and reconnect serial.
28+
4. Send the same characters and confirm identical LED behaviour.
29+
5. Disconnect the module before returning to Exercise A uploads.
30+
31+
## Safety and limitations
32+
33+
This warm-up is serial diagnostics only. It does not authorize motor wiring. Keep motor lessons gated behind [Hardware safety](../hardware-safety.md).
34+
35+
## Next step
36+
37+
Continue with [Exercise A](exercise-a.md).

docs/lessons/exercise-b.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,12 @@ extended validation; unsigned elapsed-time arithmetic keeps it safe.
3030

3131
Add a pattern by defining a mask array and selecting it in `selectPattern()`.
3232
Avoid adding new `digitalWrite()` sequences or blocking delays.
33+
34+
## Optional progression: ArduinoPatterns
35+
36+
After this lesson works without blocking delays, students may optionally try the
37+
companion library [ArduinoPatterns](https://github.com/devkyato/Custom-Arduino-Libraries).
38+
Map the same pin bank and timed masks onto `LedBank` and `LedAnimator`, then compare
39+
the hand-written Exercise B sketch with the library examples such as
40+
`ScanningLight` and `AlternatingPatterns`. The course remains complete without the
41+
library; the goal is to recognize the abstraction, not to replace the learning exercise.

tools/build_release.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"docs",
1414
"README.md",
1515
"CHANGELOG.md",
16+
"CITATION.cff",
1617
"CONTRIBUTING.md",
1718
"CODE_OF_CONDUCT.md",
1819
"SECURITY.md",
@@ -45,9 +46,18 @@ def main() -> None:
4546
archive.writestr(info, path.read_bytes())
4647

4748
with zipfile.ZipFile(output) as archive:
48-
sketches = [name for name in archive.namelist() if name.endswith(".ino")]
49+
names = set(archive.namelist())
50+
sketches = [name for name in names if name.endswith(".ino")]
4951
if len(sketches) != 7:
5052
raise RuntimeError(f"expected 7 sketches, found {len(sketches)}")
53+
required = {
54+
"Arduino-Programs-Guide/CITATION.cff",
55+
"Arduino-Programs-Guide/docs/README.md",
56+
"Arduino-Programs-Guide/VERSION",
57+
}
58+
missing = required.difference(names)
59+
if missing:
60+
raise RuntimeError(f"release archive is missing: {sorted(missing)}")
5161

5262
print(output)
5363

0 commit comments

Comments
 (0)