diff --git a/README.md b/README.md index 1269db3..60f9e60 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,21 @@ og hver enhedsprofil linker til de sketches, hvor enheden bruges. ## Mine boards +### Arduino Mega 2560 Rev3 + +- **Primær MCU:** ATmega2560, 16 MHz 8-bit AVR +- **USB-seriel:** ATmega16U2, observeret som `VID 2341 / PID 0042` +- **Hukommelse:** 256 KB flash, 8 KB SRAM og 4 KB EEPROM +- **Logikniveau:** 5 V +- **I/O:** 54 digitale ben, 15 PWM-udgange og 16 analoge indgange +- **Interfaces:** fire UARTs, I²C, SPI, USB-B, ICSP og eksterne interrupts +- **Onboard:** bruger-LED på D13, reset-knap og DC-jack +- **Trådløst og sensorer:** ingen indbyggede +- **Arduino CLI FQBN:** `arduino:avr:mega` + +Boardet blev identificeret direkte via USB og Arduino CLI. Detaljer og kilder +findes i [`boards/arduino-mega-2560`](boards/arduino-mega-2560/README.md). + ### Arduino UNO R4 WiFi - **Primær MCU:** Renesas RA4M1, 48 MHz Arm Cortex-M4 @@ -67,6 +82,8 @@ eget stabile device-id: ```text boards/ + arduino-mega-2560/ + README.md arduino-uno-r4-minima/ README.md arduino-uno-r4-wifi/ @@ -75,6 +92,9 @@ devices/ lcd1602-i2c-pcf8574/ README.md sketches/ + arduino-mega-2560/ + sos_blink/ + sos_blink.ino arduino-uno-r4-minima/ README.md arduino-uno-r4-wifi/ @@ -103,6 +123,11 @@ samlede enhedsindeks findes i [`devices/`](devices/README.md). ## Sketches +### Arduino Mega 2560 Rev3 + +- [`sos_blink`](sketches/arduino-mega-2560/sos_blink) – SOS i morsekode på den + indbyggede D13-LED + ### Arduino UNO R4 WiFi - [`led_matrix_demo`](sketches/arduino-uno-r4-wifi/led_matrix_demo) – animationer diff --git a/boards/arduino-mega-2560/README.md b/boards/arduino-mega-2560/README.md new file mode 100644 index 0000000..efcfce1 --- /dev/null +++ b/boards/arduino-mega-2560/README.md @@ -0,0 +1,58 @@ +# Arduino Mega 2560 Rev3 + +## Identifikation + +| Felt | Verificeret værdi | +| --- | --- | +| Producent | Arduino | +| Model | Mega 2560 Rev3 | +| Aktuel port | `COM9` | +| Primær MCU | ATmega2560 | +| USB-serielcontroller | ATmega16U2 | +| USB-ID | `VID 2341 / PID 0042` | +| Arduino CLI FQBN | `arduino:avr:mega` | + +Boardet identificerede sig via USB som `Arduino Mega 2560`, og Arduino CLI +matchede det direkte med den officielle Mega 2560-definition. + +## Out-of-the-box + +Mega 2560 er især velegnet til projekter med mange forbindelser. Boardet har: + +- indbygget bruger-LED på D13; +- 54 digitale ind- og udgange, hvoraf 15 understøtter PWM; +- 16 analoge indgange med 10-bit ADC; +- fire hardware-UARTs (`Serial`, `Serial1`, `Serial2` og `Serial3`); +- I²C/TWI og SPI; +- seks eksterne interrupt-indgange; +- USB-B, DC-jack, ICSP-headere og reset-knap; +- 4 KB ikke-flygtig EEPROM. + +Boardet har ingen indbyggede miljø- eller bevægelsessensorer og ingen Wi-Fi +eller Bluetooth. + +## Tekniske hoveddata + +| Egenskab | Værdi | +| --- | --- | +| Arkitektur | 8-bit AVR | +| Clock | 16 MHz | +| Flash | 256 KB, hvoraf 8 KB bruges af bootloaderen | +| SRAM | 8 KB | +| EEPROM | 4 KB | +| Logikniveau | 5 V | +| Digitale I/O | 54 | +| PWM-udgange | 15 | +| Analoge indgange | 16 | +| Hardware-UARTs | 4 | + +## Sketches i dette repo + +- [`sos_blink`](../../sketches/arduino-mega-2560/sos_blink) – blinker SOS i + morsekode med den indbyggede D13-LED + +## Kilder + +- [Arduino Mega 2560 Rev3 hardware documentation](https://docs.arduino.cc/hardware/mega-2560/) +- [Arduino Mega 2560 Rev3 datasheet](https://docs.arduino.cc/resources/datasheets/A000067-datasheet.pdf) +- [Arduino AVR core board definitions](https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt) diff --git a/sketches/arduino-mega-2560/sos_blink/README.md b/sketches/arduino-mega-2560/sos_blink/README.md new file mode 100644 index 0000000..55eb263 --- /dev/null +++ b/sketches/arduino-mega-2560/sos_blink/README.md @@ -0,0 +1,19 @@ +# SOS-blink til Arduino Mega 2560 + +Sketchen blinker `SOS` (`... --- ...`) i morsekode på boardets indbyggede +LED, som er forbundet til D13. + +Timing med `UNIT_MS = 200`: + +- prik: 1 enhed; +- streg: 3 enheder; +- pause mellem symboler: 1 enhed; +- pause mellem bogstaver: 3 enheder; +- pause mellem gentagelser: 7 enheder. + +## Byg og upload + +```powershell +arduino-cli compile --fqbn arduino:avr:mega sketches/arduino-mega-2560/sos_blink +arduino-cli upload -p COM9 --fqbn arduino:avr:mega sketches/arduino-mega-2560/sos_blink +``` diff --git a/sketches/arduino-mega-2560/sos_blink/sos_blink.ino b/sketches/arduino-mega-2560/sos_blink/sos_blink.ino new file mode 100644 index 0000000..73dc019 --- /dev/null +++ b/sketches/arduino-mega-2560/sos_blink/sos_blink.ino @@ -0,0 +1,45 @@ +// SOS in Morse code on the Arduino Mega 2560 built-in LED. +// S = ... O = --- S = ... + +constexpr unsigned long UNIT_MS = 200; + +void blinkSymbol(unsigned long onUnits) { + digitalWrite(LED_BUILTIN, HIGH); + delay(onUnits * UNIT_MS); + digitalWrite(LED_BUILTIN, LOW); + + // Every Morse symbol is followed by a one-unit gap. + delay(UNIT_MS); +} + +void blinkLetter(const char *pattern) { + for (const char *symbol = pattern; *symbol != '\0'; ++symbol) { + blinkSymbol(*symbol == '.' ? 1 : 3); + } +} + +void letterGap() { + // blinkSymbol() already supplied the first of the three gap units. + delay(2 * UNIT_MS); +} + +void wordGap() { + // blinkSymbol() already supplied the first of the seven gap units. + delay(6 * UNIT_MS); +} + +void setup() { + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); +} + +void loop() { + blinkLetter("..."); + letterGap(); + + blinkLetter("---"); + letterGap(); + + blinkLetter("..."); + wordGap(); +}