Pi Ada Tutorial release 1.8.0 (#1982)

Add pico_ada_c08_serial_communication and do full refresh for the older samples.
This commit is contained in:
Martin Krischik
2026-06-22 11:10:16 +02:00
committed by GitHub
parent cbf2f2bcd8
commit 4d5f8f874a
10 changed files with 696 additions and 0 deletions
@@ -0,0 +1,64 @@
name = "pico_ada_c01_blink"
description = "Chapter 1: Blinking LEDs - Getting Started on the Raspberry Pi Pico"
long-description = """My first steps into Ada programming on the Pico: from Jeremy Grosser's classic
blink example through explicit pin control to using an external LED, plus thoughts on the elegant (but still
experimental) Ravenscar profile.
Starting simple with LED blinking in Ada - internal LED, external LED with proper renaming, and a look at why Ravenscar
looks so clean (even if it's not quite ready for everyday use yet).
Contained in Chapter 01 are:
1. blink - Jeremy Grosser Ada sample
2. sketch_01_1_blink - Chapter 1.1 Blink internal LED
3. sketch_01_2_blink - Chapter 1.2 Blink external LED
"""
notes = """
Read the full tutorial at [Chapter 1: Blinking LEDs - Getting Started with Ada on the Raspberry Pi
Pico](https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c01_blink/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink"
tags = ["raspberry", "pi", "pico", "rp2040", "ada2022", "embedded"]
executables = [
"blink",
"sketch_01_1_blink",
"sketch_01_2_blink"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
[configuration.values]
pico_xbsp.Event_Log_Output = "uart"
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:fafec550f6c3803c17da6f10c677bc576c4effb284943169465e87092aa4817d",
"sha512:a09a1084c894df4014a5213b73c571045505de4975b90a847f72c779cc1b5337218255ddaf0897bb68c31383d86ac16467353499f1229c8e3c4527d0b3519934",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c01_blink-1.8.0.tgz"
@@ -0,0 +1,72 @@
name = "pico_ada_c01_blink_e"
description = "Chapter 1 Reloaded: Blinking LEDs on Both Cores"
long-description = """Blinking LEDs on Both Cores Updated Chapter 1 using the new embedded_rp2040
runtime - now with proper multi-core support, Ada.Real_Time, and delay until for accurate, slippage-free LED blinking on
Raspberry Pi Pico.
After quick community help, I rewrote Chapter 1 to use light tasking on both RP2040 cores. No more manual timers -
clean, precise dual-LED blinking with zero slippage.
Contained in Chapter 01 reloaded are:
1. blink - Jeremy Grosser Ada sample
2. sketch_01_1_blink - Chapter 1.1 Blink internal LED
3. sketch_01_2_blink - Chapter 1.2 Blink external LED
4. double_blink-main - double blink using both cores.
Read the full tutorial at [Chapter 1 Reloaded: Dual-Core Light Tasking - Blinking LEDs on Both
Cores](https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink_e), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico2_ada_c01_blink_lt/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink_e"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"blink",
"double_blink-main",
"sketch_01_1_blink",
"sketch_01_2_blink"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
embedded_rp2040 = "^15.4"
[configuration.values]
embedded_rp2040.Board = "rpi_pico"
embedded_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:63b67f2fcc8d73aa407e13a1827d7308dbf2f3d367d6288bdff193ccd50893d0",
"sha512:2a213a60a95a2eb344bd799552782c11b2787e7d4c5c3b2fad5ae1e1c94356b772170870cf592abf65bde45100192ef092af4e9d1e19562ad872d07ef7e6280d",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c01_blink_e-1.8.0.tgz"
@@ -0,0 +1,72 @@
name = "pico_ada_c01_blink_lt"
description = "Chapter 1 Reloaded: Blinking LEDs on Both Cores"
long-description = """Blinking LEDs on Both Cores Updated Chapter 1 using the new light_tasking_rp2040
runtime - now with proper multi-core support, Ada.Real_Time, and delay until for accurate, slippage-free LED blinking on
Raspberry Pi Pico.
After quick community help, I rewrote Chapter 1 to use light tasking on both RP2040 cores. No more manual timers -
clean, precise dual-LED blinking with zero slippage.
Contained in Chapter 01 reloaded are:
1. blink - Jeremy Grosser Ada sample
2. sketch_01_1_blink - Chapter 1.1 Blink internal LED
3. sketch_01_2_blink - Chapter 1.2 Blink external LED
4. double_blink-main - double blink using both cores.
Read the full tutorial at [Chapter 1 Reloaded: Dual-Core Light Tasking - Blinking LEDs on Both
Cores](https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink_lt), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico2_ada_c01_blink_lt/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c01_blink_lt"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"blink",
"double_blink-main",
"sketch_01_1_blink",
"sketch_01_2_blink"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
light_tasking_rp2040 = "^15.4"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
rp2040_hal = "^2.7.1"
[configuration.values]
light_tasking_rp2040.Board = "rpi_pico"
light_tasking_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:a9e2019b8ca3f4b921deeecaa4a0bd816383dab7a183c403c925395dd4783a75",
"sha512:29479274cb66dd145f377790199bd90b919858b7fbac48ff9d69012f02e1d8877c19d895128d855a91a11542118082796cd7d7793979266300e69d7337cad20f",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c01_blink_lt-1.8.0.tgz"
@@ -0,0 +1,67 @@
name = "pico_ada_c02_button_and_led"
description = "Chapter 2 - Button controled LEDs"
long-description = """Controlling an LED with a button on the Raspberry Pi Pico using Ada - two simple
but useful interaction examples.
In this chapter I combine a push button with an LED. We start with basic on/off control, then move to a toggle-style
table lamp with software debounce.
Contained in Chapter 02 are:
1. sketch_02_1_button_and_led - Chapter 2.1 Switch LED with Button
2. sketch_02_2_table_lamp - Chapter 2.2 Simple table lamp
Read the full tutorial at [Chapter 2 - Button &
LED](https://pi-ada-tutorial.sourceforge.io/pico_ada_c02_button_and_led), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c02_button_and_led/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c02_button_and_led"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"sketch_02_1_button_and_led",
"sketch_02_2_table_lamp"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
light_tasking_rp2040 = "^15.4"
[configuration.values]
light_tasking_rp2040.Board = "rpi_pico"
light_tasking_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:de88eb38b8f3f5c4b2881f7e7470327bb6c02308d2776945065a4e802779fdd1",
"sha512:694c69e664c8d8bd4ed4bff9fb0d89447354076a43e597092066e281100fad93caf80405701246e7e7df502d936008797d524c29bd43c3ccc6c28b9bde136f91",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c02_button_and_led-1.8.0.tgz"
@@ -0,0 +1,72 @@
name = "pico_ada_c03_led_bar"
description = "Chapter 3 - Cylon LED Bar: flowing light upgraded to a menacing scanner"
long-description = """Building a smooth flowing LED bar on the Raspberry Pi Pico with Ada - from a simple
chasing light to a proper menacing Cylon scanner effect using real-time delays.
In this chapter we turn ten LEDs into a flowing light bar. We start with the basic Freenove example using an array of
RP.GPIO.GPIO_Point (aliased limited tagged types). We then improve it with a pre-calculated sine-harmonic timing table
to create a realistic Cylon scanner - all done with Ada.Real_Time and zero floating-point at runtime for perfect
jitter-free movement.
Contained in Chapter 03 are:
1. Sketch_03_1_Flowing_Light - straight port of the classic flowing light
2. Cylon_Light - the final dramatic Cylon scanner with organic easing
3. Cylon_Light_Float - Floating point version of Cylon_Light
Read the full tutorial at [Chapter 3 - Cylon LED Bar: flowing light upgraded to a menacing
scanner](https://pi-ada-tutorial.sourceforge.io/pico_ada_c03_led_bar), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c03_led_bar/)
(The Cylons did nothing wrong. Humans created the perfect companion species and then completely messed it up.)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c03_led_bar"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"sketch_03_1_flowing_light",
"cylon_light_float",
"cylon_light"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
light_tasking_rp2040 = "^15.4"
[configuration.values]
light_tasking_rp2040.Board = "rpi_pico"
light_tasking_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:c3f59a4f81cd5361618b3db1ebc2e4b47226f60f3d3ce3b983cea9061efde9ce",
"sha512:48c291835ec6f507c3f8571c14d82ecddb9b768695a89d366555e1557fafb30e8af37bb5778a203f131b37042d826446ac49f3d052718ad5497e219062306509",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c03_led_bar-1.8.0.tgz"
@@ -0,0 +1,70 @@
name = "pico_ada_c04_pwm"
description = "Chapter 4: Analog LED with PWM"
long-description = """Building smooth breathing LEDs and flowing light bars with hardware PWM on the
Raspberry Pi Pico using Ada. From jittery duty cycles to perfect linear dimming - guided by the Voltcraft MSO-5102B
oscilloscope and a deep dive into PWM slice mapping on both Pico 1 and Pico 2.
In this chapter we create a reusable Pico.Analog package for PWM-based analogue output. We start with a classic
breathing light, then move on to a flowing light bar. Along the way the MSO-5102B reveals the real behaviour of our
code, and we discover (and fix) a subtle bug in the experimental RP2350 HAL.
Contained in Chapter 04 are:
1. Pwm - Original PWM sample from Jeremy Grosser
2. sketch_04_1_breathing_light - Chapter 4.1 Blink internal LED
3. sketch_04_2_flowing_light_2 - Chapter 4.1 Project Meteor Flowing Light
Read the full tutorial at [Chapter 4: Analog & PWM](https://pi-ada-tutorial.sourceforge.io/pico_ada_c04_pwm), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c04_pwm/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c04_pwm"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"pwm",
"sketch_04_1_breathing_light",
"sketch_04_2_flowing_light_2"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
light_tasking_rp2040 = "^15.4"
[configuration.values]
light_tasking_rp2040.Board = "rpi_pico"
light_tasking_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:7475a1314ae669aeefe9a0d4f5917a6ad051e5960420813cdfd7c04d0b15cf29",
"sha512:a98e0cf3b1ab424be02bd5f8b3442e9621bf42346c0c2978ab504a3b17a106e55d8b59e117a02318239dec4850d626c864cbb6af25df2ca3d9290742ee470b53",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c04_pwm-1.8.0.tgz"
@@ -0,0 +1,68 @@
name = "pico_ada_c05_rgb"
description = "Chapter 5: Controlling an RGB LED with PWM"
long-description = """Learn how to drive a common-cathode RGB LED using the RP2040's PWM peripherals.
This chapter introduces a reusable Ada package for colour control and demonstrates both random colours and a smooth
colour-wheel gradient.
Extend the simple LED examples to full-colour control with an RGB LED. Create a reusable `Pico.Analog.RGB_LED` package
and explore two sketches: random colours (using the embedded runtime) and a smooth colour-wheel transition.
Contained in Chapter 05 are:
2. sketch_05_1_random_color_light.adb - Chapter 5.1 Random Color Light
3. sketch_05_2_gradient_color_light.adb - Chapter 5.2 Gradient Color Light
Read the full tutorial at [Chapter 5: Controlling an RGB LED with
PWM](https://pi-ada-tutorial.sourceforge.io/pico_ada_c05_rgb), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c05_rgb/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c05_rgb"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"sketch_05_1_random_color_light",
"sketch_05_2_gradient_color_light"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
embedded_rp2040 = "^15.4"
[configuration.values]
embedded_rp2040.Board = "rpi_pico"
embedded_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:d1bdc090172ad819906d2bdd653c43af3635b1137f4c39f9a9d796780afdb419",
"sha512:1effc8df15013b91cef36a3c5b5f39b60024a3ba257fbe582179081e3f4419809b6b2aae2e6120ba2fe2c33a9926cd8ca28ac737b00948115453bf442668ae0c",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c05_rgb-1.8.0.tgz"
@@ -0,0 +1,70 @@
name = "pico_ada_c06_neopixel"
description = "Chapter 6: Controlling 8 NeoPixel RGB LED"
long-description = """Learn how to drive WS2812 (NeoPixel) LEDs on the Raspberry Pi Pico using the RP2040
PIO in Ada. Includes a square-wave diagnostic, fixes for the official ws2812_demo, and two complete animation sketches.
From understanding the WS2812 protocol to writing our own PIO code and creating colourful animations - everything you
need to make NeoPixels dance with Ada on the Pico.
Contained in Chapter 06 are:
1. square_wave-main.adb - Simple Square Wave test using PIO (for timing reference)
1. ws2812_demo.adb - Jeremy Grosser's WS2812 demo adapted for the RP2040 and Ada 2022
2. sketch_06_1_led_pixel.adb - Chapter 6.1 NeoPixel LED Pixel
3. sketch_06_2_rainbow_light.adb - Chapter 6.2 NeoPixel Rainbow Light
Read the full tutorial at [Chapter 6: Controlling an NeoPixel LED with
PWM](https://pi-ada-tutorial.sourceforge.io/pico_ada_c06_neopixel), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c06_neopixel/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c06_neopixel"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"square_wave-main",
"ws2812_demo",
"sketch_06_1_led_pixel",
"sketch_06_2_rainbow_light"
]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
light_tasking_rp2040 = "^15.4"
[configuration.values]
light_tasking_rp2040.Board = "rpi_pico"
light_tasking_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:a366fe30b23bfc67dcf10629f032cb28593cdadda0fef7465f0599a135157f66",
"sha512:8fa1997c7bdf3906f4b8ad6a8653bd4f2f281b107d56307dbd3a11d0895bf6d674eb3dbdb8159d053ddbcb69bfbf2e261ace0ac84081546d5276556cadaa1690",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c06_neopixel-1.8.0.tgz"
@@ -0,0 +1,70 @@
name = "pico_ada_c07_buzzer"
description = "Chapter 7: Controlling active and passive Buzzer"
long-description = """Learn how to drive active and passive buzzers with the Raspberry Pi Pico using Ada.
From simple doorbell switches to PWM-generated sweeping alert tones - including hardware tips with flyback diodes and
oscilloscope measurements.
In this chapter we connect both active and passive buzzers to the Pico. We start with a simple button-controlled
doorbell, improve the passive buzzer with bit-banging, and finally create a clean sweeping alert tone using the Pico's
PWM hardware. We also look at inductive-load protection and why a diode is essential.
Contained in Chapter 07 are:
1. sketch_07_1_doorbell.adb - Chapter 7.1 Doorbell with active buzzer
2. sketch_07_2_alert.adb - Chapter 7.2 Alert with passive buzzer
3. pwm_alert.adb - Use PWM to drive an passive buzzer
4. buzz_and_blink-main.adb - Use tasks to drive both a buzzer and an LED
Read the full tutorial at [Chapter 7: Controlling a Buzzer](https://pi-ada-tutorial.sourceforge.io/pico_ada_c07_buzzer), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c07_buzzer/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c07_buzzer"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"buzz_and_blink-main",
"pwm_alert",
"sketch_07_1_doorbell",
"sketch_07_2_alert"]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
rp2040_hal = "^2.7.1"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
embedded_rp2040 = "^15.4"
[configuration.values]
embedded_rp2040.Board = "rpi_pico"
embedded_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:59471c77782092b301fd1e8526893cab949d57f4da618b50718b908586f180f5",
"sha512:0b2248d3575a9c46f9c21b665076b68c2e05d759f7ecd9a6471c64dbf2729a30124b99aa3a5da80213c4c7805b7e4980fcb2f24c3b0d61294932d4f9410bc8c6",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c07_buzzer-1.8.0.tgz"
@@ -0,0 +1,71 @@
name = "pico_ada_c08_serial_communication"
description = "Chapter 7: Controlling active and passive Buzzer"
long-description = """Learn how to drive active and passive buzzers with the Raspberry Pi Pico using Ada.
From simple doorbell switches to PWM-generated sweeping alert tones - including hardware tips with flyback diodes and
oscilloscope measurements.
In this chapter we connect both active and passive buzzers to the Pico. We start with a simple button-controlled
doorbell, improve the passive buzzer with bit-banging, and finally create a clean sweeping alert tone using the Pico's
PWM hardware. We also look at inductive-load protection and why a diode is essential.
Contained in Chapter 07 are:
1. sketch_08_1_serial_print.adb - Chapter 8.1 Doorbell with active buzzer
2. sketch_08_2_serial_rw.adb - Chapter 8.2 Alert with passive buzzer
Read the full tutorial at [Chapter 7: Controlling a Buzzer](https://pi-ada-tutorial.sourceforge.io/pico_ada_c08_serial_communication), [GNATdoc
documentation](https://pi-ada-tutorial.sourceforge.io/gnatdoc/pico_doc/), [SourceForge
repository](https://sourceforge.net/p/pi-ada-tutorial/code/ci/master/tree/pico_ada_c08_serial_communication/)
"""
version = "1.8.0"
licenses = "GPL-3.0-or-later"
authors = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers = ["Martin Krischik <krischik@users.sourceforge.net>"]
maintainers-logins = ["krischik"]
website = "https://pi-ada-tutorial.sourceforge.io/pico_ada_c08_serial_communication"
tags = ["raspberry", "pi", "pico", "rp2040", "tasking", "light-tasking", "ada2022", "embedded"]
executables = [
"sketch_08_1_serial_print",
"sketch_08_2_serial_rw"]
[build-switches]
"*".ada_version = ["-gnat2022"]
development.compile_checks = "Warnings"
development.contracts = "Yes"
development.runtime_checks = "Overflow"
release.compile_checks = "Warnings"
release.contracts = "No"
release.runtime_checks = "Default"
validation.compile_checks = "Warnings"
validation.contracts = "Yes"
validation.runtime_checks = "Everything"
[[depends-on]]
embedded_rp2040 = "^15.4"
pico_bsp = "^2.2"
pico_xbsp = "^1.8"
rp2040_hal = "^2.7.1"
[configuration.values]
adacl_embedded.Event_Log_Buffer_Size = 0
adacl_embedded.Variant = "no_tasking"
embedded_rp2040.Board = "rpi_pico"
embedded_rp2040.Max_CPUs = 2
pico_xbsp.Variant = "tasking"
rp2040_hal.Interrupts = "bb_runtimes"
rp2040_hal.Use_Startup = false
usb_embedded.Event_Log_Buffer_Size = 0
usb_embedded.Log_Verbose = false
# vim: set textwidth=120 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab :
# vim: set filetype=toml fileencoding=utf-8 fileformat=unix foldmethod=diff :
# vim: set spell spelllang=en_gb :
[origin]
hashes = [
"sha256:149abc1746c734cc7e4024e6358eef2c4730ba9b22333ef5345775250862d263",
"sha512:8fcb433e6ee3ff0d55f8bc746d6d7a515f1e476d05523e3a61144fa72de16962181034c421281a6324b2b7f67eb39e348d8ac71dbafc0390fc0421c8ff63cbf0",
]
url = "https://sourceforge.net/projects/pi-ada-tutorial/files/Alire/pico_ada_c08_serial_communication-1.8.0.tgz"