From 323a91df6fc1ada141a8bc98ead1c2108f93dd7d Mon Sep 17 00:00:00 2001 From: MykolaKovalyk Date: Fri, 16 Aug 2024 15:15:20 +0300 Subject: [PATCH 01/19] Add first pipeline check --- .github/.gitignore | 1 - .github/actions/avr_setup/action.yml | 18 +++ .github/actions/get_changed_files/action.yml | 13 +++ .github/workflows/Lab_01_CI.yml | 37 ------ .github/workflows/lab-validation.yml | 114 +++++++++++++++++++ 5 files changed, 145 insertions(+), 38 deletions(-) delete mode 100644 .github/.gitignore create mode 100644 .github/actions/avr_setup/action.yml create mode 100644 .github/actions/get_changed_files/action.yml delete mode 100644 .github/workflows/Lab_01_CI.yml create mode 100644 .github/workflows/lab-validation.yml diff --git a/.github/.gitignore b/.github/.gitignore deleted file mode 100644 index 8b13789..0000000 --- a/.github/.gitignore +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.github/actions/avr_setup/action.yml b/.github/actions/avr_setup/action.yml new file mode 100644 index 0000000..3b92db0 --- /dev/null +++ b/.github/actions/avr_setup/action.yml @@ -0,0 +1,18 @@ +name: "Get changed files list" +description: "Setup Node with caching for dependencies" +runs: + using: "composite" + steps: + - name: Set up Arduino CLI + uses: arduino/setup-arduino-cli@v2 + + - name: Install platform + run: | + arduino-cli core update-index + arduino-cli core install ${{ env.platform }} + shell: bash + + - name: Install popular libs + run: | + arduino-cli lib install LiquidCrystal + shell: bash \ No newline at end of file diff --git a/.github/actions/get_changed_files/action.yml b/.github/actions/get_changed_files/action.yml new file mode 100644 index 0000000..ecf73ac --- /dev/null +++ b/.github/actions/get_changed_files/action.yml @@ -0,0 +1,13 @@ +name: "Get changed files list" +description: "Setup Node with caching for dependencies" +runs: + using: "composite" + steps: + - name: Get changed files list + id: get_changed_files + run: | + echo "Changed files:" + git diff --name-only ${{ github.event.pull_request.base.sha }} > changed_files.txt + cat changed_files.txt + echo "The list is saved to changed_files.txt" + shell: bash \ No newline at end of file diff --git a/.github/workflows/Lab_01_CI.yml b/.github/workflows/Lab_01_CI.yml deleted file mode 100644 index 985573b..0000000 --- a/.github/workflows/Lab_01_CI.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Cheking of compile Arduino sketch for AVR/AtMega and ESP8266 - -on: - push: - branches: [ main, master ] - pull_request: - branches: [ main, master ] - -jobs: - test-matrix: - strategy: - matrix: - arduino-platform: - - "arduino:avr" - - "esp8266:esp8266" - include: - - arduino-platform: "arduino:avr" - fqbn: "arduino:avr:mega" - - arduino-platform: "esp8266:esp8266" - fqbn: "esp8266:esp8266:generic" - - runs-on: ubuntu-22.04 - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Arduino CLI - uses: arduino/setup-arduino-cli@v2 - - - name: Install platform - run: | - arduino-cli core update-index - arduino-cli core install ${{ matrix.arduino-platform }} - - - name: Compile Sketch - run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./mc_labs/mc_lab_01/*.ino diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml new file mode 100644 index 0000000..059343b --- /dev/null +++ b/.github/workflows/lab-validation.yml @@ -0,0 +1,114 @@ +name: Cheking of compile Arduino sketch for AVR/AtMega + +on: + pull_request: + branches: [main, master] + +env: + platform: "arduino:avr" + fqbn_master: "arduino:avr:mega" + COMMIT_COUNT: $(( ${{ github.event_name == 'pull_request' && github.event.pull_request.commits || 0 }} + 1 )) + +jobs: + handle_bad_branch_name: + runs-on: ubuntu-22.04 + if: (contains(github.head_ref, 'mc_lab_1') || contains(github.head_ref, 'mc_lab_2') || contains(github.head_ref, 'mc_lab_3') || contains(github.head_ref, 'mc_lab_4') || contains(github.head_ref, 'mc_lab_5') || contains(github.head_ref, 'mc_lab_6') || contains(github.head_ref, 'mc_lab_7')) == false + steps: + - name: Fail the build + run: | + echo "The branch name is not correct. It should contain 'mc_lab_' prefix" + exit 1 + build_labs_1_to_4: + runs-on: ubuntu-22.04 + if: contains(github.head_ref, 'mc_lab_1') || contains(github.head_ref, 'mc_lab_2') || contains(github.head_ref, 'mc_lab_3') || contains(github.head_ref, 'mc_lab_4') + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ env.COMMIT_COUNT }} + + - name: Get changed files list + uses: ./.github/actions/get_changed_files + + - name: Set up Arduino CLI + uses: ./.github/actions/avr_setup + + - name: Compile Sketch + run: arduino-cli compile --fqbn ${{ env.fqbn_master }} $(grep -E '\.ino$' changed_files.txt | xargs) + build_lab_5: + runs-on: ubuntu-22.04 + if: contains(github.head_ref, 'mc_lab_5') + env: + fqbn_slave: "arduino:avr:nano" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ env.COMMIT_COUNT }} + + - name: Get changed files list + uses: ./.github/actions/get_changed_files + + - name: Get master folder + run: | + cat changed_files.txt | xargs dirname | grep 'master' | grep -m 1 -vE '/(.*master.*|.*slave.*)/' > master_project.txt + echo "Master project:" + cat master_project.txt + + - name: Get slave folders + run: | + cat changed_files.txt | xargs dirname | grep 'slave' | grep -vE '/(.*master.*|.*slave.*)/' > slave_projects.txt + echo "Slave projects:" + cat slave_projects.txt + + - name: Check if there is at least one master and one slave project + run: | + if [ ! -s master_project.txt ] || [ ! -s slave_projects.txt ]; then + echo "There is no master or slave project" + exit 1 + fi + + - name: Set up Arduino CLI + uses: ./.github/actions/avr_setup + + - name: Compile master + run: while read master_folder; do arduino-cli compile --fqbn ${{ env.fqbn_master }} $master_folder/*.ino; done < master_project.txt + + - name: Compile slaves + run: while read slave_folder; do arduino-cli compile --fqbn ${{ env.fqbn_slave }} $slave_folder/*.ino; done < slave_projects.txt + build_lab_6: + runs-on: ubuntu-22.04 + if: contains(github.head_ref, 'mc_lab_6') + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ env.COMMIT_COUNT }} + + - name: It just passes + run: echo "It just passes. It's too complex" + build_lab_7: + runs-on: ubuntu-22.04 + if: contains(github.head_ref, 'mc_lab_7') + env: + register-bindings: "m2560def.inc" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ env.COMMIT_COUNT }} + + - name: Get changed files list + uses: ./.github/actions/get_changed_files + + - name: Setup AVRA Assembler + run: | + git clone https://github.com/Ro5bert/avra.git + cd avra + sudo make install + + - name: Preprocess sketch - append register bindings to the top of the file + run: printf ".include \"${{ env.register-bindings }}\"\n\n" | cat - $(grep -m 1 -E '\.(asm|S)$' changed_files.txt | xargs) > pipeline_main_assembly_source_file.asm + + - name: Compile Sketch + run: avra pipeline_main_assembly_source_file.asm From 23127c374eee6ad148546b4f69982a5fc3009159 Mon Sep 17 00:00:00 2001 From: MykolaKovalyk Date: Sat, 17 Aug 2024 03:30:56 +0300 Subject: [PATCH 02/19] Add example code for lab 1 --- mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino | 34 +++++++++++++++++++++ mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj | Bin 0 -> 20178 bytes 2 files changed, 34 insertions(+) create mode 100644 mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino create mode 100644 mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj diff --git a/mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino b/mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino new file mode 100644 index 0000000..4988944 --- /dev/null +++ b/mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino @@ -0,0 +1,34 @@ + +const unsigned char BUTTON_PIN = 47; + +const unsigned char LED_PINS[] = { 62, 63, 64, 65, 66, 67, 68, 69 }; +const unsigned int DELAY = 800; + +void setup() { + for (int i = 0; i < 8; i++) { + pinMode(LED_PINS[i], OUTPUT); + digitalWrite(LED_PINS[i], LOW); + } + + pinMode(BUTTON_PIN, INPUT_PULLUP); +} + + +unsigned char currentIteration = 0; +void bleep() { + int pinToChange = currentIteration % 2 == 0 ? currentIteration / 2 : (7 - currentIteration / 2); + digitalWrite(LED_PINS[pinToChange], HIGH); + delay(DELAY); + digitalWrite(LED_PINS[pinToChange], LOW); + currentIteration = (currentIteration + 1) % 8; +} + +void loop() { + // put your main code here, to run repeatedly: + unsigned char temp = !digitalRead(BUTTON_PIN); + + if (!currentIteration && !temp) + return; + + bleep(); +} diff --git a/mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj b/mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj new file mode 100644 index 0000000000000000000000000000000000000000..6c021b754ffae0637ec51baafc01f82735c9fd67 GIT binary patch literal 20178 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 Date: Tue, 22 Oct 2024 17:16:58 +0300 Subject: [PATCH 03/19] Add job test_lab_1 --- .github/workflows/lab-validation.yml | 36 +++++++++++++++++++++++++++- mc_labs/mc_lab_01/wokwi.toml | 11 +++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 059343b..d18110b 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -34,7 +34,14 @@ jobs: uses: ./.github/actions/avr_setup - name: Compile Sketch - run: arduino-cli compile --fqbn ${{ env.fqbn_master }} $(grep -E '\.ino$' changed_files.txt | xargs) + run: arduino-cli compile --fqbn ${{ env.fqbn_master }} --output-dir build $(grep -E '\.ino$' changed_files.txt | xargs) + + - name: Uploud artifact + uses: actions/upload-artifact@v4 + with: + name: build-artifact + path: build + build_lab_5: runs-on: ubuntu-22.04 if: contains(github.head_ref, 'mc_lab_5') @@ -112,3 +119,30 @@ jobs: - name: Compile Sketch run: avra pipeline_main_assembly_source_file.asm + + + test_lab_1: + runs-on: ubuntu-22.04 + needs: build_labs_1_to_4 + if: contains(github.head_ref, 'mc_lab_1') + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ env.COMMIT_COUNT }} + + - name: Download artifact + uses: actions/download-artifact@v3 + with: + name: build-artifact + path: build + + - name: Generate Test Scenario + uses: OleksiuDatsko/get-lab-test-scenario-action@main + with: + lab_number: 1 + variant_number: 1 + wokwi_toml_path: mc_labs/mc_lab_01/wokwi.toml + + - name: Run Unit Tests + run: tree . \ No newline at end of file diff --git a/mc_labs/mc_lab_01/wokwi.toml b/mc_labs/mc_lab_01/wokwi.toml index 3343df1..ed9ce95 100644 --- a/mc_labs/mc_lab_01/wokwi.toml +++ b/mc_labs/mc_lab_01/wokwi.toml @@ -3,3 +3,14 @@ version = 1 firmware = 'build/arduino.avr.mega/mc_lab_01.ino.hex' elf = 'build/arduino.avr.mega/mc_lab_01.ino.elf' +[lab_setup] +led_delay = "1000ms" +btn1 = "btn1" +P0 = "led8" +P1 = "led6" +P2 = "led7" +P3 = "led1" +P4 = "led5" +P5 = "led4" +P6 = "led3" +P7 = "led2" From ae12d5ad6c6659cb0cba0186b5257a9d129fe9da Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Tue, 22 Oct 2024 17:23:00 +0300 Subject: [PATCH 04/19] Change download artifact version --- .github/workflows/lab-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index d18110b..3ec6a65 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -132,7 +132,7 @@ jobs: fetch-depth: ${{ env.COMMIT_COUNT }} - name: Download artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: build-artifact path: build From 49767ae8ef39d259dd869dcab4fe6b612bc3d714 Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Wed, 23 Oct 2024 16:07:33 +0300 Subject: [PATCH 05/19] Add wokwi test scenario test --- .github/workflows/lab-validation.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 3ec6a65..800b18b 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -135,14 +135,20 @@ jobs: uses: actions/download-artifact@v4 with: name: build-artifact - path: build + path: mc_labs/mc_lab_01/build - name: Generate Test Scenario + id: generate_scenario uses: OleksiuDatsko/get-lab-test-scenario-action@main with: lab_number: 1 variant_number: 1 wokwi_toml_path: mc_labs/mc_lab_01/wokwi.toml - - name: Run Unit Tests - run: tree . \ No newline at end of file + - name: Test Pi Pico SDK Blinky on Wokwi + uses: wokwi/wokwi-ci-action@v1 + with: + token: ${{ secrets.WOKWI_CLI_TOKEN }} + path: mc_labs/mc_lab_01/ + timeout: 1000 # ms + scenario: ${{ steps.generate_scenario.outputs.test_scenario }} \ No newline at end of file From a84e45303257e75b911d97eca21ab7176c04bb02 Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Wed, 23 Oct 2024 16:30:25 +0300 Subject: [PATCH 06/19] Add outp input to action --- .github/workflows/lab-validation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 800b18b..8a27e64 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -144,11 +144,11 @@ jobs: lab_number: 1 variant_number: 1 wokwi_toml_path: mc_labs/mc_lab_01/wokwi.toml + output: ${{ github.workspace }}/test_scenario.yml - - name: Test Pi Pico SDK Blinky on Wokwi + - name: Test on Wokwi uses: wokwi/wokwi-ci-action@v1 with: token: ${{ secrets.WOKWI_CLI_TOKEN }} path: mc_labs/mc_lab_01/ - timeout: 1000 # ms scenario: ${{ steps.generate_scenario.outputs.test_scenario }} \ No newline at end of file From eaee35833e0381fcbb39377cb7c2cb0bacd03d2e Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Wed, 23 Oct 2024 16:33:40 +0300 Subject: [PATCH 07/19] Change scenatio path --- .github/workflows/lab-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 8a27e64..a3920a5 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -151,4 +151,4 @@ jobs: with: token: ${{ secrets.WOKWI_CLI_TOKEN }} path: mc_labs/mc_lab_01/ - scenario: ${{ steps.generate_scenario.outputs.test_scenario }} \ No newline at end of file + scenario: ${{ github.workspace }}/test_scenario.yml \ No newline at end of file From d2967800afb52303f96f0536af8ce579a62e00e7 Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Thu, 24 Oct 2024 21:18:00 +0300 Subject: [PATCH 08/19] Add extract variant from branch name --- .github/workflows/lab-validation.yml | 9 ++++++++- mc_labs/mc_lab_01/wokwi.toml | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index a3920a5..49cbbee 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -137,12 +137,19 @@ jobs: name: build-artifact path: mc_labs/mc_lab_01/build + - name: Extract Variant Number + id: extract_variant + run: | + variant= + echo "variant='$(echo "${{ github.head_ref }}" | sed -n 's/.*v\([0-9]\+\).*/\1/p')'" >> "$GITHUB_OUTPUT" + + - name: Generate Test Scenario id: generate_scenario uses: OleksiuDatsko/get-lab-test-scenario-action@main with: lab_number: 1 - variant_number: 1 + variant_number: ${{ steps.extract_variant.outputs.variant }} wokwi_toml_path: mc_labs/mc_lab_01/wokwi.toml output: ${{ github.workspace }}/test_scenario.yml diff --git a/mc_labs/mc_lab_01/wokwi.toml b/mc_labs/mc_lab_01/wokwi.toml index ed9ce95..f397e20 100644 --- a/mc_labs/mc_lab_01/wokwi.toml +++ b/mc_labs/mc_lab_01/wokwi.toml @@ -4,7 +4,7 @@ firmware = 'build/arduino.avr.mega/mc_lab_01.ino.hex' elf = 'build/arduino.avr.mega/mc_lab_01.ino.elf' [lab_setup] -led_delay = "1000ms" +led_delay = "800ms" btn1 = "btn1" P0 = "led8" P1 = "led6" From f0350f63fef282e76b86916a3e9d3139f765b71e Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Thu, 24 Oct 2024 21:25:11 +0300 Subject: [PATCH 09/19] Fix output from step --- .github/workflows/lab-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 49cbbee..2186c5b 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -158,4 +158,4 @@ jobs: with: token: ${{ secrets.WOKWI_CLI_TOKEN }} path: mc_labs/mc_lab_01/ - scenario: ${{ github.workspace }}/test_scenario.yml \ No newline at end of file + scenario: ${{ steps.generate_scenario.outputs.test_scenario }} \ No newline at end of file From d8059512617a7724e281f2b030f6664e1a8ff743 Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Thu, 24 Oct 2024 21:35:37 +0300 Subject: [PATCH 10/19] Revert file to previous version --- .github/workflows/lab-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lab-validation.yml b/.github/workflows/lab-validation.yml index 2186c5b..49cbbee 100644 --- a/.github/workflows/lab-validation.yml +++ b/.github/workflows/lab-validation.yml @@ -158,4 +158,4 @@ jobs: with: token: ${{ secrets.WOKWI_CLI_TOKEN }} path: mc_labs/mc_lab_01/ - scenario: ${{ steps.generate_scenario.outputs.test_scenario }} \ No newline at end of file + scenario: ${{ github.workspace }}/test_scenario.yml \ No newline at end of file From 47c0528fd4218dff51706af77a5efdb9bafe6e50 Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Tue, 5 Nov 2024 18:46:35 +0200 Subject: [PATCH 11/19] Move files Changed mc_lab_01.ino --- .../Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino | 0 .../Dubyk_Yura_Lab_01/Schematic_Lab1.png | Bin .../build/arduino.avr.mega/mc_lab_01.ino.eep | 0 .../build/arduino.avr.mega/mc_lab_01.ino.elf | Bin .../build/arduino.avr.mega/mc_lab_01.ino.hex | 0 .../mc_lab_01.ino.with_bootloader.bin | Bin .../mc_lab_01.ino.with_bootloader.hex | 0 .../mc_lab_01/{ => delete}/lab1-mko/lab1-mko.ino | 0 .../mc_lab_01/{ => delete}/lab1-mko/lab1-mko.pdsprj | Bin mc_labs/mc_lab_01/{ => delete}/mc_lab1_esp.ino | 0 mc_labs/mc_lab_01/mc_lab_01.ino | 2 +- mc_labs/mc_lab_01/wokwi.toml | 4 ++-- 12 files changed, 3 insertions(+), 3 deletions(-) rename mc_labs/mc_lab_01/{ => delete}/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino (100%) rename mc_labs/mc_lab_01/{ => delete}/Dubyk_Yura_Lab_01/Schematic_Lab1.png (100%) rename mc_labs/mc_lab_01/{ => delete}/build/arduino.avr.mega/mc_lab_01.ino.eep (100%) rename mc_labs/mc_lab_01/{ => delete}/build/arduino.avr.mega/mc_lab_01.ino.elf (100%) rename mc_labs/mc_lab_01/{ => delete}/build/arduino.avr.mega/mc_lab_01.ino.hex (100%) rename mc_labs/mc_lab_01/{ => delete}/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin (100%) rename mc_labs/mc_lab_01/{ => delete}/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex (100%) rename mc_labs/mc_lab_01/{ => delete}/lab1-mko/lab1-mko.ino (100%) rename mc_labs/mc_lab_01/{ => delete}/lab1-mko/lab1-mko.pdsprj (100%) rename mc_labs/mc_lab_01/{ => delete}/mc_lab1_esp.ino (100%) diff --git a/mc_labs/mc_lab_01/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino b/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino similarity index 100% rename from mc_labs/mc_lab_01/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino rename to mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino diff --git a/mc_labs/mc_lab_01/Dubyk_Yura_Lab_01/Schematic_Lab1.png b/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Schematic_Lab1.png similarity index 100% rename from mc_labs/mc_lab_01/Dubyk_Yura_Lab_01/Schematic_Lab1.png rename to mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Schematic_Lab1.png diff --git a/mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.eep b/mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.eep similarity index 100% rename from mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.eep rename to mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.eep diff --git a/mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.elf b/mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.elf similarity index 100% rename from mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.elf rename to mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.elf diff --git a/mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.hex b/mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.hex similarity index 100% rename from mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.hex rename to mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.hex diff --git a/mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin b/mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin similarity index 100% rename from mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin rename to mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin diff --git a/mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex b/mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex similarity index 100% rename from mc_labs/mc_lab_01/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex rename to mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex diff --git a/mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino b/mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.ino similarity index 100% rename from mc_labs/mc_lab_01/lab1-mko/lab1-mko.ino rename to mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.ino diff --git a/mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj b/mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.pdsprj similarity index 100% rename from mc_labs/mc_lab_01/lab1-mko/lab1-mko.pdsprj rename to mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.pdsprj diff --git a/mc_labs/mc_lab_01/mc_lab1_esp.ino b/mc_labs/mc_lab_01/delete/mc_lab1_esp.ino similarity index 100% rename from mc_labs/mc_lab_01/mc_lab1_esp.ino rename to mc_labs/mc_lab_01/delete/mc_lab1_esp.ino diff --git a/mc_labs/mc_lab_01/mc_lab_01.ino b/mc_labs/mc_lab_01/mc_lab_01.ino index e3d025e..bdbfad7 100644 --- a/mc_labs/mc_lab_01/mc_lab_01.ino +++ b/mc_labs/mc_lab_01/mc_lab_01.ino @@ -36,7 +36,7 @@ #define MY_PORT PORTA #define BUTTON_PIN 21 //PD0 -#define TIMER_LEDS 1000 +#define TIMER_LEDS 400 // #define PORT_PIN_0 (1 << 0) // 0b00000001 // B 0000 0001 // #define PORT_PIN_1 (1 << 1) // 0b00000010 // B 0000 0010 diff --git a/mc_labs/mc_lab_01/wokwi.toml b/mc_labs/mc_lab_01/wokwi.toml index f397e20..88fc6ef 100644 --- a/mc_labs/mc_lab_01/wokwi.toml +++ b/mc_labs/mc_lab_01/wokwi.toml @@ -1,7 +1,7 @@ [wokwi] version = 1 -firmware = 'build/arduino.avr.mega/mc_lab_01.ino.hex' -elf = 'build/arduino.avr.mega/mc_lab_01.ino.elf' +firmware = 'build/mc_lab_01.ino.hex' +elf = 'build/mc_lab_01.ino.elf' [lab_setup] led_delay = "800ms" From b7431e548ec73f5ef13f1bd7a6d5e2363887caeb Mon Sep 17 00:00:00 2001 From: OleksiuDatsko Date: Tue, 5 Nov 2024 18:49:13 +0200 Subject: [PATCH 12/19] Remove unused files --- .../Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino | 360 ---------- .../Dubyk_Yura_Lab_01/Schematic_Lab1.png | Bin 215123 -> 0 bytes .../build/arduino.avr.mega/mc_lab_01.ino.eep | 1 - .../build/arduino.avr.mega/mc_lab_01.ino.elf | Bin 34596 -> 0 bytes .../build/arduino.avr.mega/mc_lab_01.ino.hex | 208 ------ .../mc_lab_01.ino.with_bootloader.bin | Bin 261406 -> 0 bytes .../mc_lab_01.ino.with_bootloader.hex | 675 ------------------ .../mc_lab_01/delete/lab1-mko/lab1-mko.ino | 34 - .../mc_lab_01/delete/lab1-mko/lab1-mko.pdsprj | Bin 20178 -> 0 bytes mc_labs/mc_lab_01/delete/mc_lab1_esp.ino | 191 ----- 10 files changed, 1469 deletions(-) delete mode 100644 mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino delete mode 100644 mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Schematic_Lab1.png delete mode 100644 mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.eep delete mode 100755 mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.elf delete mode 100644 mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.hex delete mode 100644 mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.bin delete mode 100644 mc_labs/mc_lab_01/delete/build/arduino.avr.mega/mc_lab_01.ino.with_bootloader.hex delete mode 100644 mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.ino delete mode 100644 mc_labs/mc_lab_01/delete/lab1-mko/lab1-mko.pdsprj delete mode 100644 mc_labs/mc_lab_01/delete/mc_lab1_esp.ino diff --git a/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino b/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino deleted file mode 100644 index d6cc3bb..0000000 --- a/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Dubyk_Yura_Lab_01.ino +++ /dev/null @@ -1,360 +0,0 @@ -#include -#include -#include - -#define ESP_WIFI_MODE 1 // WIFI_STA // WIFI_AP //WIFI_AP_STA -#define DELAY_BETWEEN_BUTTONS 500 -#define DEBOUNCE_DELAY 40 - -const char *ssid = "AsusLyra"; -const char *password = "123456qwerty"; - -const uint8_t btnGPIO = D8; - -typedef struct LED_STRUCT -{ - uint8_t GPIO_PIN; - - LED_STRUCT *nextLed; - LED_STRUCT *prevLed; -} LED_STRUCT_t; - -LED_STRUCT_t *currentLedPointer = NULL; -LED_STRUCT_t LED1 = {D5, NULL, NULL}; -LED_STRUCT_t LED2 = {D6, NULL, NULL}; -LED_STRUCT_t LED3 = {D7, NULL, NULL}; - -void initLedsArray() -{ - LED1.nextLed = &LED2; - LED1.prevLed = &LED3; - - LED2.nextLed = &LED3; - LED2.prevLed = &LED1; - - LED3.nextLed = &LED1; - LED3.prevLed = &LED2; - - currentLedPointer = &LED1; -} - -uint32_t timestamp; -uint32_t lastDebounceTime = 0; - -uint32_t buttonCounter = 0; - -uint32_t prevButtonCounter = 0; - -bool lastState = LOW; -bool btnPressed = false; -bool siteBtnPressed = false; -bool msgAboutButtonSended = true; - -// Create AsyncWebServer object on port 80 -AsyncWebServer server(80); - -const char index_html[] PROGMEM = R"rawliteral( - - - - - - - - - -

ESP Pushbutton Web Server

- - -
-
-
-
-
- - - - - -)rawliteral"; - -void notFound(AsyncWebServerRequest *request) -{ - request->send(404, "text/plain", "Not found"); -} - -void pinsSetup() -{ - pinMode(LED1.GPIO_PIN, OUTPUT); - pinMode(LED2.GPIO_PIN, OUTPUT); - pinMode(LED3.GPIO_PIN, OUTPUT); - pinMode(btnGPIO, INPUT); -} - -uint8_t initWiFi() -{ - if (ESP_WIFI_MODE == 1) - { - WiFi.mode(WIFI_STA); - // Connect to Wi-Fi network with SSID and password - WiFi.begin(ssid, password); - while (WiFi.status() != WL_CONNECTED) - { - delay(1000); - Serial.println("Connecting to WiFi.."); - } - Serial.println(); - Serial.print("ESP IP Address: http://"); - Serial.println(WiFi.localIP()); - - Serial.print("RRSI: "); - Serial.println(WiFi.RSSI()); - } - else if (ESP_WIFI_MODE == 2) - { - WiFi.mode(WIFI_AP); - Serial.println("Setting AP (Access Point)…"); - // Remove the password parameter, if you want the AP (Access Point) to be open - WiFi.softAP(ssid, NULL); - - IPAddress IP = WiFi.softAPIP(); - Serial.print("AP IP address: "); - Serial.println(IP); - } - else - { - WiFi.mode(WIFI_OFF); - Serial.println("Wifi of"); - return -1; - } - // Send web page to client - server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) - { request->send_P(200, "text/html", index_html); }); - - server.on("/on_alg1", HTTP_GET, [](AsyncWebServerRequest *request) - { - siteBtnPressed = true; - request->send(200, "text/plain", "ok"); }); - - server.on("/off_alg1", HTTP_GET, [](AsyncWebServerRequest *request) - { - siteBtnPressed = false; - request->send(200, "text/plain", "ok"); }); - - server.on("/status_led_1", HTTP_GET, [](AsyncWebServerRequest *request) - { request->send(200, "text/plain", String(digitalRead(LED1.GPIO_PIN)).c_str()); }); - - server.on("/status_led_2", HTTP_GET, [](AsyncWebServerRequest *request) - { request->send(200, "text/plain", String(digitalRead(LED2.GPIO_PIN)).c_str()); }); - - server.on("/status_led_3", HTTP_GET, [](AsyncWebServerRequest *request) - { request->send(200, "text/plain", String(digitalRead(LED3.GPIO_PIN)).c_str()); }); - - server.onNotFound(notFound); - server.begin(); - - return 0; -} - - -IRAM_ATTR void ISRbtnChange() -{ - btnPressed = true; -} - -bool direction = true; - -void btnChange() -{ - if (btnPressed) - { - if (millis() - lastDebounceTime >= DEBOUNCE_DELAY) - { - lastDebounceTime = millis(); - bool presentState = digitalRead(btnGPIO); - if (lastState != presentState) - { - lastState = presentState; - direction = !direction; - } - } - } -} - -void chechSiteButton() -{ - if (siteBtnPressed) - { - btnPressed = true; - msgAboutButtonSended = true; - } - else if (!siteBtnPressed && msgAboutButtonSended) - { - btnPressed = false; - msgAboutButtonSended = false; - } -} - -void setup() -{ - Serial.begin(115200); - pinsSetup(); - - initLedsArray(); - attachInterrupt(digitalPinToInterrupt(btnGPIO), ISRbtnChange, CHANGE); - timestamp = millis(); - initWiFi(); -} - -void do_algorithm() -{ - if (millis() - timestamp >= DELAY_BETWEEN_BUTTONS) - { - timestamp = millis(); - - digitalWrite(currentLedPointer->prevLed->GPIO_PIN, LOW); - digitalWrite(currentLedPointer->GPIO_PIN, HIGH); - digitalWrite(currentLedPointer->prevLed->GPIO_PIN, LOW); - - currentLedPointer = direction ? currentLedPointer->nextLed : currentLedPointer->prevLed; - } -} - -void loop() -{ - chechSiteButton(); - btnChange(); - do_algorithm(); -} \ No newline at end of file diff --git a/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Schematic_Lab1.png b/mc_labs/mc_lab_01/delete/Dubyk_Yura_Lab_01/Schematic_Lab1.png deleted file mode 100644 index b84af41ca8e6e8d2b7fd4f397168698c65636271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215123 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

D^Xi)!+$R5GA(iKe>j%|E`G6b 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