From e290d0623c829e41b1c2f2e15447d72b34bed65b Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Wed, 21 Sep 2022 07:43:52 +0900 Subject: [PATCH] samples: Added analog_input sample Add a sample to demonstrate how to use analogRead API Signed-off-by: TOKITA Hiroshi --- samples/analog_input/CMakeLists.txt | 11 +++++++ samples/analog_input/README.rst | 47 +++++++++++++++++++++++++++++ samples/analog_input/prj.conf | 2 ++ samples/analog_input/src/main.cpp | 30 ++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 samples/analog_input/CMakeLists.txt create mode 100644 samples/analog_input/README.rst create mode 100644 samples/analog_input/prj.conf create mode 100644 samples/analog_input/src/main.cpp diff --git a/samples/analog_input/CMakeLists.txt b/samples/analog_input/CMakeLists.txt new file mode 100644 index 00000000..d18e0e2c --- /dev/null +++ b/samples/analog_input/CMakeLists.txt @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) + +set(DTC_OVERLAY_FILE $ENV{ZEPHYR_BASE}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) + +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(analog_input) + +target_sources(app PRIVATE src/main.cpp) +zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/analog_input/README.rst b/samples/analog_input/README.rst new file mode 100644 index 00000000..670cd23d --- /dev/null +++ b/samples/analog_input/README.rst @@ -0,0 +1,47 @@ +.. _arduino_nano_33_ble_multi_thread_blinky: + +Basic Thread Example +#################### + +Overview +******** + +This example demonstrates spawning multiple threads using +:c:func:`K_THREAD_DEFINE`. It spawns three threads. Each thread is then defined +at compile time using `K_THREAD_DEFINE`. + +These three each control an LED. These LEDs, ``LED_BUILTIN``, ``D10`` and ``D11``, have +loop control and timing logic controlled by separate functions. + +- ``blink0()`` controls ``LED_BUILTIN`` and has a 100ms sleep cycle +- ``blink1()`` controls ``D11`` and has a 1000ms sleep cycle +- ``loop()`` controls ``D10`` and has a 300ms sleep cycle + +Requirements +************ + +The board must have two LEDs connected via GPIO pins and one builtin LED. These are called "User +LEDs" on many of Zephyr's :ref:`boards`. The LEDs must be mapped using the `` +``LED_BUILTIN``, ``D10`` and ``D11`` to the :ref:`devicetree ` aliases, in the +variants folder. + +You will see one of these errors if you try to build this sample for an +unsupported board: + +.. code-block:: none + + Unsupported board: LED_BUILTIN devicetree alias is not defined + Unsupported board: D11 devicetree alias is not defined + +Building +******** + +For example, to build this sample for :ref:`arduino_nano_33_ble`: + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/arduino-threads + :board: arduino_nano_33_ble + :goals: build flash + :compact: + +Change ``arduino_nano_33_ble`` appropriately for other supported boards. diff --git a/samples/analog_input/prj.conf b/samples/analog_input/prj.conf new file mode 100644 index 00000000..7db48201 --- /dev/null +++ b/samples/analog_input/prj.conf @@ -0,0 +1,2 @@ +CONFIG_ADC=y +CONFIG_ARDUINO_API=y diff --git a/samples/analog_input/src/main.cpp b/samples/analog_input/src/main.cpp new file mode 100644 index 00000000..48433cac --- /dev/null +++ b/samples/analog_input/src/main.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022 TOKITA Hiroshi + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +const int analog_input = A0; // select the input pin for the potentiometer +const int ledPin = LED_BUILTIN; // select the pin for the LED +const float wait_factor = 1.f; + +void setup() { + pinMode(ledPin, OUTPUT); +} + +void loop() { + int value = 0; + + value = analogRead(analog_input); + + /* Blinks slowly when the input voltage is high */ + + digitalWrite(ledPin, HIGH); + delay(value * wait_factor); + + digitalWrite(ledPin, LOW); + delay(value * wait_factor); +} +