====== Nano Sensor Shield ======
===== Описание =====
Контроллеры Arduinо Nano и их аналоги имеют компактные размеры и нашли широкое применение в проектах, где важны размеры. Однако, подключение периферии к таким контроллерам всегда затруднительно. На помощь приходит Nano Sensor Shield.

Nano Sensor Shield имеет функционал, аналогичный классическим Sensor Shield для контроллеров Arduino Uno и Arduino Mega и позволяет подключать большое количество датчиков и модулей с помощью трехпроводных шлейфов (S, +, -). С помощью платы можно одновременно подключить до 8 аналоговых и до 12 цифровых устройств. Также дополнительные выводы на плате позволяют подключать устройства, работающие по интерфейсам I2C, UART и SPI.

Nano Sensor Shield полностью совместим с контроллерами Arduino Nano и Smart Nano. Также шилд можно ограниченно использовать с контроллерами Arduino Pro Mini (только 5 В, 16 мГц), при этом данной плате будут соответствовать только цифровые выводы D2-D9 включительно и вывод шины UART. Также Arduino Pro Mini использует выводы D10-D13 и A0-A3.

Для крепления Nano Sensor Shield по углам платы предусмотрены 4 отверстия под винт М3.

==== Технические характеристики ====
  * Количество цифровых выводов: 12 (D2 - D13)
  * Количество аналоговых выводов: 8 (A0 - A7)
  * Интерфейсные выводы "папа": SPI, I2C
  * Интерфейсные выводы "мама": UART
  * Выводы входного питания: 1 (клеммная колодка, питание от 7 до 12 В)

 
==== Физические размеры ====
  * Габаритные размеры Д х Ш х В: 60 х 46 х 12 (мм)

===== Примеры подключения и использования =====
==== Шумомер ====

=== Шаг 0. Описание задачи ===

Сделаем шумомер на основе датчика звука и модуля адресных светодиодов. Чем громче звук, тем больше загорается светодиодов (от 1 до 4), причем цвета светодиодов будут меняться: первый - зелёный, второй - жёлто-зелёный, третий - жёлтый, четвертый - красный.

Для этого нам потребуется следующее:
^ Что нужно                                                                                     ^ Кол-во, шт  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-nano-ft232rl|Контроллер Smart Nano]]       | 1           |
| [[https://smartelements.ru/collection/shildy/product/nano-sensor-shield|Nano Sensor Shield]]  | 1           |
| [[https://smartelements.ru/collection/moduli/product/modul-adresnyh-svetodiodov-h4|Модуль адресных светодиодов (х4)]]| 1           |
| [[https://smartelements.ru/collection/datchiki-i-sensory/product/modul-datchika-zvuka|Датчик звука]]| 1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф x3]]| 2           |

=== Шаг 1. Соберите комплектующие по схеме ===
Схема сборки:
{{ :main:shields:nano_sensor_shield.png?nolink |}}

=== Шаг 2. Загрузите на контроллер код ===
Не забывайте выбирать в Arduino IDE контроллер Nano.

<file Arduino>
#include <Adafruit_NeoPixel.h> //библиотека для работы со светодиодами

#define SOUND_PIN A3 //вывод, к которому подключен датчик звука 
#define PIN 6 //вывод, к которому подключен модуль адресных светодиодов
 
//объявление переменной pixels типа Adafruit_NeoPixel для 
//работы с модулем и светодиодами
Adafruit_NeoPixel pixels(4, PIN);

//цвета светодиодов
int pix_colors[4][3] = {  {0, 255, 0},    //зелёный
                          {50, 200, 0},   //жёлто-зелёный
                          {150, 150, 0},  //жёлтый
                          {255, 0, 0}     //красный
                    };

int data = 0; //переменная для хранения значения громкости
 
void setup() {
  pixels.begin(); //инициализация светодиодов
}
 
void loop() {

  int leds = 0; //переменная для хранения количества светодиодов

  data = analogRead(SOUND_PIN); //получение значения громкости
  
  if (data > 0) { //определение количества зажигаемых светодиодов
    if (data > 100) {
      leds = 4;
    } else if (data > 50) {
      leds = 3;
    } else if (data > 25) {
      leds = 2;
    } else {
      leds = 1;
    }
  }
 
  //нумерация светодиодов начинается с 0
  for(int i=0; i<leds; i++) { 
    pixels.setPixelColor(i, pixels.Color(pix_colors[i][0], pix_colors[i][1], pix_colors[i][2])); //установка цвета свечения для очередного светодиода
    pixels.show();   //показать цвет светодиода 
  }

  pixels.clear(); //выключение всех цветов светодиодов
  pixels.show();  //отобразить "пустое" состояние светодиодов - они выключены */
}
</file>

=== Шаг 3. Результат ===
Производите звук (хлопайте в ладоши, шумите) и наблюдайте как изменяется шкала интенсивности звука в виде зажигания адресных светодиодов.

==== Подсчёт количества хлопков ====

=== Шаг 0. Описание задачи ===

Реализуем устройство, которое подсчитывает количество хлопков в ладоши. После подсчёта количество хлопков выводится на дисплей. Каждый последующий хлопок нужно сделать не позже чем через секунду от предыдущего (это время можно изменить если нужно).

Для этого нам потребуется следующее:
^ Что нужно                                                                                     ^ Кол-во, шт  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-nano-ft232rl|Контроллер Smart Nano]]       | 1           |
| [[https://smartelements.ru/collection/shildy/product/nano-sensor-shield|Nano Sensor Shield]]  | 1           |
| [[https://smartelements.ru/collection/displei-i-indikatory/product/modul-4-razryadnogo-indikatora-krasnyy|Модуль 4-разрядного индикатора]]| 1           |
| [[https://smartelements.ru/collection/datchiki-i-sensory/product/modul-datchika-zvuka|Датчик звука]]| 1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф x3]]| 2           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провод мама-мама]]| 1           |

=== Шаг 1. Соберите комплектующие по схеме ===
Схема сборки:
{{ :main:shields:nano_sensor_shield_4d.png?nolink |}}

=== Шаг 2. Загрузите на контроллер код ===
Не забывайте выбирать в Arduino IDE контроллер Nano.

<file Arduino>
#include <SevenSegmentTM1637.h> //Подключение библиотеки для работы с дисплеем.

const int PIN_SOUND = A3; //Вывод для подключения датчика температуры

int clap_q = 0; //Переменная для хранения количества хлопков
unsigned long time_long = 1000; //Время, в течении которого будет слушаться звук

SevenSegmentTM1637 display(12, 13); //Создание объекта дисплея. (CLK, DIO)

//Вычисление количества хлопков
void claps_quantity()
{
  if (analogRead(PIN_SOUND) > 100) //если значение шума больше 100
  {
    delay(150); //подождать пока пройдёт звуковая волна
    clap_q += 1; //увеличить количество хлопков
    unsigned long new_time = millis() + time_long; //увеличить время ожидания очередного хлопка
    while (millis() < new_time) //слушать 1 секунду
    {
      claps_quantity(); //учесть хлопки, если они есть
    }
  }
}

void setup()
{
  display.begin();           //Инициализация дисплея.
  display.setBacklight(100); //Установка яркости 100%.
  display.print("INIT");     //Вывод надписи INIT на дисплей.
  delay(1000);               //Задержка величиной 1 с.
  display.clear();           //Очистка дисплея.
}

void loop()
{
  clap_q = 0; //сбросить количество хлопков
  claps_quantity(); //посчитать количество хлопков

  if (clap_q > 0) //если хлопков больше 0
  {
    display.clear(); //очистить дисплей
    display.print(clap_q); //вывести количество хлопков на дисплей
    display.blink(); //помигать, обозначив что это новое значение
  }
}
</file>

=== Шаг 3. Результат ===
Производите хлопки (хлопайте в ладоши) и наблюдайте как подсчитанное количество хлопков выводится на дисплей. 