Оглавление
- Другие идеи проектов
- Что такое EEPROM?
- Arduino Uno Vs Arduino Nano
- Использование
- Macro Definition Documentation
- Платы дополнения (шилды)
- 5.5 Нехватка памяти
- Recent Articles
- Работа с EEPROM
- Reference
- Host software
- Код
- См.также
- Как это выглядит физически
- 5.3 Решение конфликтов библиотек
- The library
- Applications of Arduino Nano
Другие идеи проектов
Проекты умного дома на Ардуино
Проекты умного дома являются одним из примеров того, как перейти от «игрушек» и тренажеров к реальным системам, помогающими и облегчающим жизнь. Как правило, с помощью ардуино невозможно создать полноценные автономные решения, но отдельные компоненты сделать вполне реально.
При этом нужно понимать, что сталкиваясь с реальными инфраструктурными объектами, мы должны соблюдать особую предусмотрительность при работе с электричеством, отоплением, водопроводом под давлением, канализацией. Любые эксперименты здесь нужно проводить обязательно под контролем профессионала.
Что может являться прототипом умного дома на ардуино:
- Системы освещения с автоматическим включением и отключением в зависимости от показателей датчиков. Наиболее популярнее варианты – использовать датчик освещенности, PIR датчик движения или датчик звука.
- Дистанционно управляемые электрические приборы. Например, включение или выключение системы отопления в зависимости от температуры или умное управление освещением в помещениях. Здесь вам понадобятся различные виды реле и один из механизмов обеспечения беспроводной связи: WiFi, GPRS, Bluetooth или радиоканал. Управлять устройствами можно через Web-интерфейс (через браузер) или с использованием соответствующего мобильного приложения (можно написать самому или выбрать одну из готовых платформ).
- Всевозможные системы учета: воды, тепла, электроэнергии. Начинающим доступны любительские датчики напора воды, температуры, влажности, силы тока. Можно использовать и профессиональные приборы, взаимодействуя с ними по одному из промышленных протоколов. Полученные данные можно собирать локально или отправлять в облако для последующего анализа.
- Охранные системы и контролирование внештатных ситуаций. Здесь понадобится различные датчики присутствия, движения, звука, магнитные датчики Холла и другие. Естественно, не обойтись без коммуникаций и возможности быстрой передачи информации владельцу через интернет.
Каждое из этих направлений может содержать в себе десятки разных проектов. Вы можете без труда найти себе подходящий вариант в интернете или в одной из наших статей.
Проекты «Зеленой робототехники»
Юные ардуинщики, живущие в небольших городах и сельской местности, где много природы и не очень много «цивилизации», могут с успехом использовать ардуино для исследования и охраны природы, а также автоматизации сельского хозяйства. Вот некоторые из идей проектов, которые можно реализовывать своими силами на уровне прототипов и готовых решений:
- Умная теплица
- Полив растений
- Умный инкубатор
- Умный улей
- Антигрызуны
- Умный агроном
- Умный ошейник для животных
- Расширенная метеостанция
- Робот – сеяльщик
- Счетчик муравьев
Проекты с дронами: аэрофотосъемка, внесение удобрений.
Что такое EEPROM?
EEPROM означает электрически стираемое программируемое постоянное запоминающее устройство. Это тип энергонезависимой памяти. Не беспокойтесь, если вы не понимаете, что это значит. Он просто сохраняет данные даже при отключенном питании (в отличие от оперативной памяти
, который нуждается в электричестве, чтобы сохранить любые данные).
EEPROM встроен в множество процессоров, таких как программируемая пользователем вентильная матрица (FPGA), используемая в Matrix Creator
Пи хат. Все Arduinos имеют EEPROM, но емкость зависит от модели. Обязательно посмотрите наше руководство по покупке
для более подробной информации о каждой доске.
Arduino Uno Vs Arduino Nano
- Both Arduino Uno and Arduino Nano come with the same functionality with little difference in terms of PCB layout, size and form factor.
- Arduino Uno is a microcontroller board based on Atmega328 and comes with 14 digital I/O pins out of which 6 are PWM. There are 6 analog pins incorporated on the board. This board comes with everything required to support the microcontroller like a USB connection, a Power jack, 16MHz oscillator, reset button and ICSP header. You don’t require an extra peripheral with the board to make it work for automation.
- It is a complete ready to use device that requires no prior technical skills to get hands-on experience with it. You can power it by using a DC power jack, battery or simply plug it into the computer using a USB cable to get started.
- Arduino Nano is small and compact as compared to Arduino Uno. It lacks the DC power jack and comes with Mini USB support instead of regular USB. Also, the Nano board comes with two extra analog pins i.e. 8 pins as compared to 6 analog pins in the Uno board. Nano board is breadboard friendly while Uno board lacks this property.
- However, both devices run at 5V, come with a current rating of 40mA, and 16MHz of the clock frequency.
Использование
А теперь встанем не место студента и попробуем это все дело использовать.
Задаем начальные значения параметров:
Зададем сами параметры:
Теперь осталось определить сам список параметров
Важно, чтобы все EEPROM параметры были разных типов. Можно в принципе вставить статическую проверку на это в NvVarListBase, но не будем
А теперь можем использовать наши параметры хоть где, очень просто и элементарно:
Можно передавать ссылку на них в любой класс, через конструктор или шаблон.
Собственно и все. Теперь студенты могут работать с EEPROM более юзерфрендли и допускать меньше ошибок, ведь часть проверок за них сделает компилятор.
Macro Definition Documentation
#define __EEGET | ( | var, | |
addr | |||
) | (var) = ((const *)(addr)) |
Read a byte from EEPROM. Compatibility define for IAR C.
#define __EEPUT | ( | addr, | |
val | |||
) | (( *)(addr), ()(val)) |
Write a byte to EEPROM. Compatibility define for IAR C.
#define _EEGET | ( | var, | |
addr | |||
) | (var) = ((const *)(addr)) |
Read a byte from EEPROM. Compatibility define for IAR C.
#define _EEPUT | ( | addr, | |
val | |||
) | (( *)(addr), ()(val)) |
Write a byte to EEPROM. Compatibility define for IAR C.
#define EEMEM ((section(«.eeprom»))) |
Attribute expression causing a variable to be allocated within the .eeprom section.
#define eeprom_busy_wait | ( | ) | do {} while (!()) |
Loops until the eeprom is no longer busy.
- Returns
- Nothing.
#define eeprom_is_ready | ( | ) |
- Returns
- 1 if EEPROM is ready for a new read/write operation, 0 if not.
Платы дополнения (шилды)
Для увеличения возможностей материнских плат используют шилды (Shields) – расширяющие функционал дополнительные устройства. Они изготавливаются под конкретный форм-фактор, что отличает их от модулей, которые подключают к портам. Шилды стоят дороже модулей, однако работа с ними проще. Также они снабжены готовыми библиотеками с кодом, что убыстряет разработку собственных программ управления для “умного дома”.
Шилды Proto и Sensor
Эти два стандартных шилда не привносят каких-либо особых функций. Их используют для более компактного и удобного подключения большого числа модулей.
Proto Shield представляет собой практически полную копию оригинала в плане портов, а посередине модуля можно приклеить макетную плату. Это облегчает сборку конструкции. Такие дополнения существуют для всех полноформатных плат Arduino.
Proto Shield ставят поверх материнской платы. Это незначительно увеличивает высоту конструкции, но экономит много места в плоскости
Но если устройств очень много (более 10), то лучше использовать более дорогие коммутационные платы Sensor Shield.
У них не предусмотрен брэдборд, однако ко всем выводам портов индивидуально подведено питание и земля. Это позволяет не путаться в проводах и перемычках.
Площадь поверхности материнской и сенсор-плат одинакова, однако на шилде отсутствуют чипы, конденсаторы и другие элементы. Поэтому освобождается много места для полноценных подключений
Также на этой плате есть колодки для простого подключения нескольких модулей: Bluetoots, SD-карты, RS232 (COM-port), радио и ультразвука.
Подключение вспомогательного функционала
Шилды с интегрированным в них функционалом рассчитаны на решение сложных, но типовых задач. При необходимости реализации оригинальных задумок лучше все же подобрать подходящий модуль.
Motor Shield. Он предназначен для управления скоростью и вращением маломощных двигателей. Оригинальная модель оснащена одним чипом L298 и может работать одновременно с двумя моторами постоянного тока или с одним сервоприводом. Есть и совместимая деталь от стороннего производителя, у которой два чипа L293D с возможностью управления вдвое большим количеством приводов.
Relay Shield. Часто используемый модуль с системах “умный дом”. Плата с четырьмя электромеханическими реле, каждое из которых допускает прохождение тока с силой до 5А. Этого достаточно для автоматического включения и отключения киловатных приборов или линий освещения, рассчитанных на переменный ток 220 В.
LCD Shield. Позволяет выводить информацию на встроенный экран, который можно проапгрейдить до TFT-устройства. Это расширение часто применяют для создания метеостанций с показаниями температуры в различных жилых помещениях, пристройках, гараже, а также температуры, влажности и скорости ветра на улице.
В LCD Shield встроены кнопки, позволяющие запрограммировать листание информации и выбор действий для подачи команд на микропроцессор
Data Logging Shield. Основная задача модуля – записывать данные с датчиков на полноформатную SD-карту объемом до 32 Gb с поддержкой файловой системы FAT32. Для записи на микро-SD карту нужно приобрести адаптер. Этот шилд можно использовать как хранилище информации, например, при записи данных с видеорегистратора. Производство американской фирмы Adafruit Industries.
SD-card Shield. Более простая и дешевая версия предыдущего модуля. Такие расширения выпускают многие производители.
EtherNet Shield. Официальный модуль для связи Arduino с Интернетом без участия компьютера. Есть слот для микро-SD карты, что позволяет записывать и отправлять данные через всемирную сеть.
Wi-Fi Shield. Позволяет осуществлять беспроводной обмен информацией с поддержкой режима шифрования. Служит для связи с интернетом и устройствами, которыми можно управлять через Wi-Fi.
GPRS Shield. Этот модуль, как правило, используют для связи “умного дома” с владельцем по мобильному телефону через SMS сообщения.
5.5 Нехватка памяти
Иногда прошивка успешно компилируется/загружается, но в логе компилятора написано о недостатке места
Запомните: если компиляция/загрузка завершена, значит всё в порядке и скетч будет работать. Ведь написано, что “завершена”! Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.
Recent Articles
-
Learn how to use the TP4056 properly. There’s a right way, and a wrong way, to use it to safely charge Lithium Ion batteries.
-
A tutorial on using the ADS1115 precision 16 bit ADC for low power use.
-
Arduino Nano ISP: How to program an ATmega328P using an Arduino Nano as the ISP programmmer. One common problem: Programming a sketch into the chip without a reset control — solved here.
-
I2C tutorial: Learn all about the 2 wire I2C serial protocol. Learn how easy it is to use, how it works and when to use it…
-
How to test and use an Arduino Joystick including a new library to make it super easy.
-
How to use the MCP4728, a versatile four channel DAC with built in voltage reference.
The MCP4728 chip is a four channel 12 bit DAC, with memory that outputs voltage that you can use for calibration, anywhere you want a fixed voltage.
Работа с EEPROM
Как упоминалось ранее, ресурс памяти EEPROM ограничен. Для продления срока службы энергонезависимой памяти, вместо функции write() запись, лучше применять функцию update обновление. При этом перезапись ведется только для тех ячеек, где значение отличается от вновь записываемого.
Еще одной полезной функцией рассматриваемой памяти микроконтроллера является возможность использования ячеек хранения байтов, как деталей целостного массива EEPROM. При любом формате использования необходимо постоянно осуществлять контроль целостности записанных данных.
Такая память на Ардуино стандартно хранит самое важное для работы контроллера и устройства. К примеру, если на такой базе создается регулятор температуры и исходные данные окажутся ошибочными, устройство будет работать «неадекватно» существующим условиям – сильно занижать или завышать температуру
Существует несколько ситуаций, когда память EEPROM содержит неправильные данные:
- При первоначальной активации – еще не было ни одной записи.
- В момент неконтролируемого отключения питания – часть или все данные не запишутся или запишутся некорректно.
- После завершения возможных циклов перезаписи данных.
Чтобы избежать возникновения неприятных последствий, устройство можно запрограммировать на несколько вариантов действий: применить данные аварийного кода, отключить систему полностью, подать сигнал о неисправности, использовать заранее созданную копию или другие.
Для контроля целостности информации используют контрольный код системы. Он создается по образцу записи первоначальных данных и, при проверке, он вновь просчитывает данные. Если результат отличается – это ошибка. Самым распространенным вариантом такой проверки является контрольная сумма – выполняется обычная математическая операция по сложению всех значений ячеек.
Опытные программисты добавляют к этому коду дополнительное «исключающее ИЛИ», например, E5h. В случае если все значения равны нулю, а система по ошибке обнулила исходные данные – такая хитрость выявит ошибку.
Таковы основные принципы работы с энергонезависимой памятью EEPROM для микроконтроллеров Arduino. Для определенных проектов стоит использовать только этот вид памяти. Он имеет как свои плюсы, так и свои недостатки. Для освоения методов записи и чтения лучше начать с простых задач.
Reference
Methods
/** Initialises EEPROMWearLevel. One of the begin() methods must be called before any other method. This method uses the whole EEPROM for wear levelling. @param layoutVersion your version of the EEPROM layout. When ever you change any value on the begin() method, the layoutVersion must be incremented. This will reset EEPROMWearLevel and initialise it and the EEPROM to the given values. @param amountOfIndexes the amount of indexes you want to use. */ void begin(const byte layoutVersion, const int amountOfIndexes); /** Initialises EEPROMWearLevel. One of the begin() methods must be called before any other method. @param layoutVersion your version of the EEPROM layout. When ever you change any value on the begin() method, the layoutVersion must be incremented. This will reset EEPROMWearLevel and initialise it and the EEPROM to the given values. @param amountOfIndexes the amount of indexes you want to use. @param eepromLengthToUse the length of the EEPROM to use for wear levelling in case you want to use parts of the EEPROM for other purpose. */ void begin(const byte layoutVersion, const int amountOfIndexes, const int eepromLengthToUse); /** Initialises EEPROMWearLevel. One of the begin() methods must be called before any other method. @param layoutVersion your version of the EEPROM layout. When ever you change any value on the begin() method, the layoutVersion must be incremented. This will reset EEPROMWearLevel and initialise it and the EEPROM to the given values. @param lengths array of the partition lengths to use on the EEPROM. The length includes the control bytes so the usable length for data is smaller. You can get the max length for data by calling getMaxDataLength(). The array must contain amountOfIndexes entries. @param amountOfIndexes the amount of indexes you want to use. */ void begin(const byte layoutVersion, const int lengths[], const int amountOfIndexes); /** Returns the amount of indexes that can be used. This value is defined by the begin() method. */ unsigned int length(); /** returns the maximum size a single element can be. If the element is larger than half of the maximum size, no wear levelling will be possible. */ int getMaxDataLength(const int idx) const; /** reads one byte from idx */ uint8_t read(const int idx); /** writes one byte if it is not the same as the last one. */ void update(const int idx, const uint8_t val); /** writes one byte no matter what value was written before. */ void write(const int idx, const uint8_t val); /** reads the last written value of idx or leaves t unchanged if no value written yet. */ template< typename T > T &get(const int idx, T &t); /** writes a new value if it is not the same as the last one */ template< typename T > const T &put(const int idx, const T &t); /** writes a new value no matter what value was written before. */ template< typename T > const T &putToNext(const int idx, const T &t); /** returns the first index used to store data for this idx. This method can be called to use EEPROMWearLevel as a ring buffer. */ int getStartIndexEEPROM(const int idx); /** returns the current read index of this idx. This method can be called to use EEPROMWearLevel as a ring buffer. */ int getCurrentIndexEEPROM(const int idx, int dataLength) ; /** prints the EEPROMWearLevel status to print. Use Serial to print to the default serial port. */ void printStatus(Print &print); /** prints content of the EEPROM to print */ void printBinary(Print &print, int startIndex, int endIndex);
Host software
The host software is in the hostutil directory. It seems to work, although more testing is needed. Currently, it has only been tested on Linux, but might work on other Unix-like systems (such as MacOS and FreeBSD.)
To build the host software, run the command in the directory. Copy the resulting executable () to a directory that is on your executable path.
The command will print the following usage information:
Here are some basic usage examples.
Write a binary file called to a 32K EEPROM, disabling write protection before writing (necessary if the device is currently write-protected), enabling write protection after writing, and verifying that the data was written correctly:
This command should produce something like the following output:
Note that you should change as appropriate depending on the serial port device assigned to the Arduino.
Reading 32K of data from an EEPROM and saving the data in the output file :
This command should produce something like the following output:
Again, change as appropriate.
Код
1 /*** 2 Пример eeprom_put 3 4 Этот пример показывает, как использовать функцию EEPROM.put(). 5 Также он подготавливает EEPROM-данные для примера eeprom_get. 6 7 В отличие от функции EEPROM.write(), EEPROM.put() может 8 оперировать не одним, а несколькими байтами. Кроме того, она 9 работает по принципу EEPROM.update() и делает перезапись только 10 в том случае, если новые данные отличаются от предыдущих. 11 12 Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год. 13 Выпущено под лицензией MIT. 14 ***/ 15 16 #include <EEPROM.h> 17 18 struct MyObject { 19 float field1; 20 byte field2; 21 char name10]; 22 }; 23 24 void setup() { 25 26 Serial.begin(9600); 27 while (!Serial) { 28 ; // ждем подключения последовательного порта (нужно только для Arduino со штатным USB-портом) 29 } 30 31 float f = 123.456f; // переменная для записи в EEPROM-память 32 int eeAddress = ; // участок EEPROM-памяти, куда будет выполнена запись 33 34 35 // далее – один простой вызов функции EEPROM.put(); 36 // первый аргумент – адрес, второй – объект: 37 EEPROM.put(eeAddress, f); 38 39 Serial.println("Written float data type!"); // "float-данные, записанные в EEPROM-память: " 40 41 /** функцию EEPROM.put() можно использовать и для пользовательских объектов **/ 42 43 // данные, которые будем записывать: 44 MyObject customVar = { 45 3.14f, 46 65, 47 "Working!" 48 }; // "Работает!" 49 50 eeAddress += sizeof(float); // перемещаемся к участку EEPROM-памяти, находящемуся вслед за тем, где хранится переменная «f» 51 52 EEPROM.put(eeAddress, customVar); 53 Serial.print("Written custom data type! \n\nView the example sketch eeprom_get to see how you can retrieve the values!"); // "Данные пользовательского типа записаны! \n\nО том, как извлечь эти данные, смотрите в скетче-примере eeprom_get" 54 } 55 56 void loop() { 57 /* пустой цикл */ 58 }
См.также
- EEPROM library reference
- EEPROM Clear — Fills the content of the EEPROM memory with “0”.
- EEPROM Read – Reads values stored into EEPROM and prints them on Serial.
- EEPROM Write – Stores values read from A0 into EEPROM.
- EEPROM Crc – Calculates the CRC of EEPROM contents as if it was an array.
- EEPROM Iteration – Programming examples on how to go through the EEPROM memory locations.
- EEPROM Get – Get values from EEPROM and prints as float on serial.
- EEPROM Update – Stores values read from A0 into EEPROM, writing the value only if different, to increase EEPROM life.
Как это выглядит физически
Для контроля открытия на калитку, двери дома и вход кладовки устанавливаются герконовые датчики. Питание системы отопления осуществляется через силовое реле-повторитель, которое в свою очередь запускается от платы автоматического включения, управляемого Ардуино.
Вся электрика дома, за исключением согревающего жилье оборудования и холодильника контролируется отдельным силовым модулем отключения. Определение наличия напряжения в общей приходящей сети питания 220 В выполняется однофазным реле тока, работающим в «обратную сторону». То есть, включение его обеспечивается 220 В в розетке, а коммутирует оно низковольтное соединение, указывающее микроконтроллеру о наличии электричества в доме.
Охрана обеспечивается контролем состояний герконовых сенсоров. При срабатывании каждого из них, на телефон владельца будет отправлено соответствующее СМС. Естественно, с возможностью отключения функции в моменты присутствия хозяев.
Умный дом на основе Ардуино будет управлять всем перечисленным в двух режимах — когда никого нет или люди присутствуют. Кроме того, для включения внешнего освещения микроконтроллер будет руководствоваться показаниями фоторезистора, установленного снаружи. Подсветка станет активна только когда темно.
Что до отопления, включение его на обогрев производиться соответствующей СМС с телефона владельца. Переход в состояние экономии — физической кнопкой. Контроль температурного режима выполняется термодатчиком.
Вторая кнопка, установленная в доме и связанная с микроконтроллером, применяется для включения состояния охраны и снятия с него. О текущем статусе информируют светодиоды. Два зеленых, на активность каждой из функций и пара красных указывающих пассивный режим.
Текущая установка сохраняется в энергонезависимой памяти Ардуино, и читается в момент рестарта микроконтроллера. Информация о форс-мажорных обстоятельствах отправляется на телефон владельца.
Питание Ардуино выполнено от батареи и сети. В тот момент, когда с последнее прекращается — реле не только включает информатор об отсутствии тока, но и соединяет Ардуино с резервом.
Итак, что потребуется:
Наименование | Количество |
Ардуино-реле 220 В на 4 контакта | 1 |
Реле-повторитель для высокой нагрузки | 2 |
GSM модуль SIM900 | 1 |
Arduino UNO R3 | 1 |
Реле-повторитель для коммутации 5 В работающее от сети переменного тока 220 В | 1 |
Диоды зеленые | 2 |
Кнопки | 2 |
Резисторы 10 kОм | 5 |
Резисторы 220 Ом | 5 |
Диоды красные | 2 |
Фоторезистор | 1 |
Терморезистор | 1 |
Резистор 2.2 кОм | 1 |
Конденсатор 0.1 мкФ | 1 |
Электролитный конденсатор 470 мкФ, 6.3 В | 1 |
Также потребуется необходимое количество провода для соединения датчиков и выполнения силовых линий.
5.3 Решение конфликтов библиотек
Иногда случается конфликт библиотек, который заключается в том, что IDE находит на компьютере несколько одинаковых библиотек. Об этом сообщается в логе компиляции предупреждением: “несколько библиотек найдено… используется то, не используется сё“. Если вы ставили некоторые библиотеки через менеджер (Скетч/Подключить библиотеки/Управлять библиотеками…), они будут воевать с библиотеками, установленными вручную в папку с программой. Где вообще лежат библиотеки?
- Стандартные общие библиотеки – в папке с программой/libraries
- 64-битная версия Windows – C:\Program Files (x86)\Arduino\libraries\
- 32-битная версия Windows – C:\Program Files\Arduino\libraries\
- Установленные через менеджер – Документы\Arduino\libraries
- Библиотеки для конкретного ядра:
- Стандартное ядро Arduino – C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries
- Другие ядра – C:\Users\username\AppData\Local\Arduino15\packages\ядро\hardware\avr\версия\libraries
Конфликтовать могут и ядра, поэтому решением всех проблем может стать чистая установка Arduino IDE с удалением остатков от предыдущей версии. Удаляем программу как программу, и вручную сносим папки:
- Папка с программой
- 64-битная версия Windows – C:\Program Files (x86)\Arduino\libraries\
- 32-битная версия Windows – C:\Program Files\Arduino\libraries\
- Документы\Arduino\
- C:\Users\username\AppData\Local\Arduino15\
The library
First of all, the library can be downloaded here:
Download EEPROMex library for Arduino — zip
A zipped tarball of this version can be found here.The library starts by implementing the functions as present in the default EEPROM library, so it is fully compatible. You only need to change to . The following example will work with both the standard and extended EEPROM library:
Compatibility with EEPROM standard library
C++
#include <EEPROMex.h>
int address = 0;
byte input = 100;
byte output = 0;
void setup()
{
Serial.begin(9600);
EEPROM.write(address, input);
output = EEPROM.read(address);
Serial.print(address);
Serial.print(«\t»);
Serial.print(output);
Serial.println();
}
void loop()
{ // Nothing to do during loop }
1 |
#include <EEPROMex.h> intaddress=; byteinput=100; byteoutput=; voidsetup() { Serial.begin(9600); EEPROM.write(address,input); output=EEPROM.read(address); Serial.print(address); Serial.print(«\t»); Serial.print(output); Serial.println(); } voidloop() {// Nothing to do during loop } |
Applications of Arduino Nano
Arduino Nano is a very useful device that comes with a wide range of applications and covers less space as compared to other Arduino boards. Breadboard-friendly nature makes it stand out from other boards. Following are the main applications of Arduino Nano:
- Engineering Students’ Projects.
- Medical Instruments
- Industrial Automation
- Android Applications
- GSM Based Projects
- Embedded Systems
- Automation and Robotics
- Home Automation and Defense Systems
- Virtual Reality Applications
That’s all for today. I hope you have got a clear idea about the Nano board. However, if still you feel skeptical or have any questions, you can approach me in the comment section below. I’d love to help you according to the best of my knowledge and expertise. Feel free to keep us updated with your valuable feedback and suggestions, they help us provide you quality work that resonates with your requirements and allows you to keep coming back for what we have to offer. Thanks for reading the article.