Уроки ардуино

5Общение с Arduino

Как же процессор узнаёт, что именно ему следует делать? Вы должны рассказать ему это. Написание сообщений для Arduino называется программирование. Существует язык для общения с микроконтроллером, упрощённый и адаптированный специально для Arduino. Освоить этот язык совсем не сложно при желании и определённой настойчивости, даже если вы никогда раньше не программировали.

И для упрощения этого процесса разработана специальная программная среда – Arduino IDE. В её состав включены десятки примеров хороших, работающих программ. Изучив их, вы очень быстро многое узнаете о языке общения с Arduino.

Внешний вид среды разработки для программирования Ардуино – Arduino IDE

Arduino позволит вашим программам выйти из виртуального мира в мир реальный. Вы сможете увидеть, как написанные вами программы заставляют мигать светодиод или вращать вал двигателя, а затем делать и более сложные и полезные вещи. Arduino позволит вам узнать много нового и интересного и в электронике, и в программировании. В итоге это может послужить вам отличным хобби, увлекательным занятием с детьми, замечательным и полезным времяпровождением.

Ну и напоследок, посмотрите, какие разные и замечательные проекты можно воплотить с помощью Ардуино!

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

Синий кабель для программирования может выполнять следующие три функции:

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.

В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.

Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.

Что ещё можно сделать?

  1. Несмотря на золочение, контакты сенсора влажности со временем корродируют. Быстрее всего корродирование происходит при подключённом питании. Срок жизни сенсора можно значительно увеличить, если подключить питание к нему через силовой ключ. Когда надо получить данные — включаем питание сенсора, снимаем показания и тут же выключаем питание.
  2. Если оставить наш ирригатор работающим на длительный срок без присмотра, вода в резервуаре может закончиться. При работе без воды помпа быстро выходит из строя. Решением проблемы может быть автоматическое определение опустошения резервуара. Сенсор подбирается исходя из типа резервуара. Если он не глубок, то подойдёт ещё один датчик влажности. Когда же высоты его не хватает, можно воспользоваться УЗ-дальномером, сделать поплавок с датчиком наклона или просто опустить на дно два провода.
  3. Устройство, работающее от батареек, будет значительно безопасней питающегося от сети. Идеальным вариантом было бы питание ирригатора от батареек. Но Arduino Uno, как известно, даже в режиме сна потребляет более 10 мА. Выходом может являться использование Arduino Mini, способный в режиме сна снижать потребляемый ток до сотен мкА.
  4. Существует много правил полива домашних растений, как, например: не стоит поливать зимой вечером. Можно добавить сенсоров света или часы реального времени и скорректировать программу так, чтобы она старалась поливать в нужное время.

А ещё можно собрать автополив на Slot Shield — инструкция по сборке и прошивка.

Программирование Arduino

Теперь, когда необходимая нам схема собрана, мы можем начать программирование платы Arduino UNO. Полный текст программы будет приведен в конце статьи, в этом разделе будет дано объяснение некоторых участков кода этой программы.

В каждой программе для Arduino должны обязательно присутствовать две функции – это функции void setup () и void loop (), иногда их называют «абсолютным минимумом», необходимым для написания программы. Все операции, которые мы запишем внутри void setup (), исполнятся только один раз, а операции, которые мы запишем внутри void loop () – будут исполняться снова и снова. Пример этих функций показан в коде ниже – именно в таком виде они создаются когда вы выбираете пункт меню File -> New.

Arduino

void setup() {
// put your setup code here, to run once:
}

void loop() {
// put your main code here, to run repeatedly:
}

1
2
3
4
5
6
7

voidsetup(){

// put your setup code here, to run once:

}
 

voidloop(){

// put your main code here, to run repeatedly:

}

Начнем писать программу в функции setup (). Обычно в этой функции объявляются названия пинов (контактов). В нашей программе нам необходимо объявить всего два контакта: контакт 2 в качестве входного контакта и контакт 3 в качестве выходного контакта. Это можно сделать с помощью следующих строчек кода:

Arduino

pinMode(2,INPUT);
pinMode (3,OUTPUT);

1
2

pinMode(2,INPUT);

pinMode(3,OUTPUT);

Но здесь необходимо внести небольшое изменение в программу – нам желательно чтобы контакт 2, который мы объявили в качестве входного контакта, никогда не был бы в «плавающем» состоянии. Это означает что входной контакт должен быть всегда подсоединен либо к +5 В, либо к земле. А в нашем случае при нажатии кнопки он будет подсоединен к земле, а при отжатой кнопке он будет находиться в плавающем состоянии. Чтобы исключить это нам необходимо задействовать внутренний подтягивающий резистор, который находится внутри микроконтроллера ATmega 328 (то есть снаружи мы этот резистор не видим). Для его задействования необходимо написать соответствующую строчку кода в программе.

С помощью этой строчки кода контакт 2 будет подключаться через подтягивающий резистор к напряжению +5 В всегда когда он не подсоединен к земле. То есть мы должны в одной из написанных нами строчек кода изменить слово INPUT на слово INPUT_PULLUP как показано ниже.

Arduino

pinMode(2,INPUT_PULLUP);

1 pinMode(2,INPUT_PULLUP);

Теперь, когда мы закончили с функцией setup (), перейдем к функции loop (). В этой функции мы должны проверять не подсоединен ли контакт 2 к земле (то есть на его входе низкий уровень – LOW) и если он подсоединен в земле, то мы должны зажечь светодиод при помощи подачи на контакт 3 высокого уровня (HIGH). А если контакт 2 не подсоединен к земле (то есть кнопка не нажата), то мы должны держать светодиод в выключенном состоянии при помощи подачи на контакт 3 низкого уровня (LOW). В программе это будет выглядеть следующим образом:

Arduino

if (digitalRead(2) == LOW)
{
digitalWrite(3,HIGH);
}

else
{
digitalWrite(3,LOW);
}

1
2
3
4
5
6
7
8
9

if(digitalRead(2)==LOW)

{

digitalWrite(3,HIGH);

}

else

{

digitalWrite(3,LOW);

}

В этих строчках кода оператор digitalRead() используется для проверки статуса (состояния) входного контакта. Если контакт подсоединен к земле, то оператор digitalRead() возвратит значение LOW, а если оператор подсоединен к +5 В, то оператор возвратит значение HIGH.

Аналогично, оператор digitalWrite() используется для установки состояния выходного контакта. Если мы установим контакт в состояние HIGH, то на его выходе будет напряжение +5 В, а если мы установим контакт в LOW, то на его выходе будет 0 В.

Таким образом в нашей программе когда мы нажимаем кнопку на контакт 2 будет подана земля и, соответственно, на контакт 3 мы подаем высокий уровень +5 В (HIGH) чтобы зажечь светодиод. Если условие не выполняется – то есть на контакт 2 не подана земля, то мы на контакт 3 подаем низкий уровень 0 В (LOW) чтобы выключить светодиод.

На этом наша программа закончена, теперь загрузим код программы на нашу плату Arduino таким же образом как ранее мы загружали код программы мигания светодиодом.

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:

Важно заметить, что обязательную в С++ функцию процессор Arduino создаёт сам. И результатом того, что видит программист есть:. Давайте разберёмся с двумя обязательными функциями

Функция вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера

Давайте разберёмся с двумя обязательными функциями. Функция вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

А что же дальше?

Прошел набор «IoT»? Молодец!
Вот тебе идеи для приборов, которые пригодятся в быту. Применяй знания, полученные из набора, комбинируй различные модули, придумывай и твори с Амперкой!

Используя Troyka-модули барометра и цифрового датчика температуры и влажности, можно создать свою собственную метеостанцию. При помощи пары беспроводной передатчик — беспроводной приёмник на частоте 433 МГц ты сможешь собрать свою метеостанцию в герметичном корпусе и, придумав для неё питание на Power Shield, создать автономное устройство. Оно не будет бояться воды и будет точно сообщать тебе данные о погоде за окном. А модуль в своей комнате ты сможешь оснастить LCD-экраном, чтобы на показания датчиков было приятно смотреть. И, разумеется, ты сможешь получать все эти данные с помощью созданного тобой Telegram-бота!

При помощи датчиков влажности почвы ты сможешь всегда быть уверенным, что твои редкие растения не засохнут от недостатка воды. А даты поливов ты сможешь регистрировать с помощью сервиса Webhooks!

Датчик горючих и угарного газов MQ-9 даст тебе уверенность в безопасности твоего жилья. В случае, если он обнаружит в воздухе присутствие опасных газов, он сможет прислать сообщение тебе прямо в Telegram!

Цветная адресуемая светодиодная лента WS2811 позволит тебе создать освещение в комнате, цвет которого ты сможешь контролировать со смартфона, или даже сделать его реагирующим на музыку, которая играет в твоей комнате.

Датчик шума и ультразвуковой дальномер позволят тебе построить систему сигнализации в твоей комнате — ты всегда будешь знать, если в ней появятся непрошеные гости. А модуль MP3-плеера в комбинации с модулем аудиовыхода сможет твоим голосом вежливо попросить их покинуть твою территорию.

GPRS Shield, совместимый с Arduino Uno, позволит тебе создавать ещё более автономные приборы — ведь теперь они будут выходить в сеть не с помощью Wi-Fi роутера, а напрямую с помощью сотовой сети. Не забудь приобрести SIM-карту с безлимитным трафиком!

AlexGyver

Сайт для любителей техники предоставляет бесплатные текстовые уроки — максимально подробные уроки по программированию Arduino с разбором всех тонкостей и особенностей языка.

Есть также бесплатные видеоуроки. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.

Что узнает ребенок:

  • Что такое Ардуино и зачем она нужна?
  • Что умеет Ардуино и что можно сделать на её основе?
  • Подключение датчиков к Ардуино
  • Питание Arduino от различных источников электричества
  • Математические операторы для работы с переменными
  • Особенности переменных и констант
  • Общение между компьютером и Arduino Через COM порт
  • Какие существуют типы реле? В чём достоинства и недостатки?
  • Как подключить реле и как им управлять?

И это еще не все. 16 видеоуроков расскажут все нюансы о программировании на Arduino.

Этапы настройки Arduino

  1. Во-первых, установите IDE. Вы можете скачать IDE с сайта Arduino.
  2. Установите программное обеспечение на свой компьютер.
  3. Теперь запустите .exe файл Arduino IDE. IDE выглядит так:
  4. Напишите в редакторе кода свою программу и загрузите её в Arduino. Чтобы сделать это, необходимо подключить Arduino к компьютеру, используя USB кабель.
  5. В IDE выберите тип Arduino, который вы используете, через меню Tools (Инструменты) → Boards (Платы).
  6. Теперь проверьте свой код, нажав на значок «галки» вверху окна IDE, затем нажмите на соседний значок «стрелка вправо», чтобы скомпилировать и загрузить код в Arduino.

Внимание: возможно, вам понадобится установить драйвера, если ваша система не обнаружит Arduino

Эксперименты

1

На старт, внимание, Wi-Fi!. Научимся подключать свои устройства к Wi-Fi сети

Для доступа к Wi-Fi воспользуемся специальным модулем. Он общается с Arduino по протоколу UART.

Научимся подключать свои устройства к Wi-Fi сети. Для доступа к Wi-Fi воспользуемся специальным модулем. Он общается с Arduino по протоколу UART.

Все хинты по работе с модулем читай в техническом описании.

AT

AT+CWMODE_DEF=3

AT+CWLAP

AT+CWJAP="SSID","password"

AT+CIFSR

AT+CIPMUX=1

AT+CIPSERVER=1,80

AT+CIPSERVER=0,80

AT+UART_DEF=9600,8,1,0,0

2. Удалённый термометр.

2_theremometer.ino
#include "ESP8266.h"
#include <SoftwareSerial.h>
#include <math.h>
 
#define SSID     "имя_твоего_Wi-Fi"
#define PASSWORD "пароль_твоего_Wi-Fi"
#define TEMP_PIN A0
 
SoftwareSerial mySerial(4, 5);
ESP8266 wifi(mySerial);
String name = "твой_ключ";
 
void setup(void) {
  Serial.begin(9600);
  if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.println("https://dweet.io/follow/" + name);
  } else {
    Serial.println("Wi-Fi connection error");
  }
}
 
void loop(void) {
  float v_temp = 1023.0  analogRead(TEMP_PIN) - 1.0;
  float temp = 1.0  ( -log(v_temp)  3977.0
                            + 1.0  295.0 ) - 273.0;
  if (wifi.createTCP("www.dweet.io", 80)) {
    String data = "GET /dweet/for/" + name + "?";
    data += "temp=" + String(temp) + " HTTP/1.1\r\n";
    data += "Host: dweet.io\r\n\r\n";
    wifi.send(data.c_str(), data.length());
    wifi.releaseTCP();
  } else {
    Serial.println("create TCP error");
  }
  delay(1000);
}

3. Система регистрации данных

Будем снимать показания с датчиков температуры и освещённости и записывать их в файл на microSD-карточке. Мы будем использовать формат .csv, понятный для Microsoft Excel и подобных программ. Так мы сможем с легкостью строить графики и следить, как меняются температура и освещённость в течение больших периодов времени.

3_registrator.ino
#include <SPI.h> 
#include <SD.h> 
#include <math.h> 
 
#define LIGHT_PIN A3
#define TEMP_PIN A2
#define CS 8
 
void setup() {
  Serial.begin(9600);
 
  if (!SD.begin(CS)) {
    Serial.println("initialization failed!");
    return;
  }
}
 
void loop() {
  float r_light = 10.0
             (1023.0  analogRead(LIGHT_PIN) - 1.0);
  float light = 10.0 * pow(14.0  r_light, 1.6);
  float v_temp = 1023.0  analogRead(TEMP_PIN) - 1.0;
  float temp = 1.0  ( -log(v_temp)  3977.0
                             + 1.0  295.0 ) - 273.0;
  String data = String(millis()  1000) + ";"
                + String(light) + ";" + String(temp);
  data.replace(".", ",");
  Serial.println(data);
 
  File logFile = SD.open("log.csv", FILE_WRITE);
  logFile.println(data);
  logFile.close();
 
  delay(1000);
}

4. Напоминальник

4_reminder.ino
#include "ESP8266.h"
#include <SoftwareSerial.h>
 
#define SSID        "имя_твоего_Wi-Fi"
#define PASSWORD    "пароль_твоего_Wi-Fi"
#define BTN_PIN     12
 
SoftwareSerial mySerial(4, 5);
ESP8266 wifi(mySerial);
boolean buttonWasUp = true;
String maker_ID = "id_компонента_webhooks";
 
void setup(void) {
  Serial.begin(9600);
  if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.println("I'm ready! Press the button.");
  } else {
    Serial.println("Wi-Fi connection error");
  }
}
 
void loop(void) {
  boolean buttonIsUp = digitalRead(BTN_PIN);
  if (buttonWasUp && !buttonIsUp) {
    delay(10);
    buttonIsUp = digitalRead(BTN_PIN);
    if (!buttonIsUp) {
      sendEmail();
      Serial.println("Notification has been sent");
    }
  }
  buttonWasUp = buttonIsUp;
}
 
boolean sendEmail() {
  if (wifi.createTCP("maker.ifttt.com", 80)) {
    String value1 = "Hello!";
    String request = "GET /trigger/feed/with/key/"
             + maker_ID + "?value1=" + value1
			 + " HTTP/1.1\r\n";
    request += "Host: maker.ifttt.com\r\n\r\n";
    wifi.send(request.c_str(), request.length());
    wifi.releaseTCP();
  } else {
    Serial.println("create tcp error");
  }
}

Установка Arduino IDE

Прежде чем начать работу с Arduino необходимо установить среду программирования Arduino IDE на ваш компьютер/ноутбук. Все описанные далее шаги по установке данной программной среды будут ориентированы на операционную систему Windows, для остальных операционных систем последовательность действий будет примерно такой же. Если возникнут проблемы с другими системами, то помощь можно найти по следующим ссылкам – для пользователей Mac и пользователей Linux. Перед началом установки Arduino IDE убедитесь что вы обладаете правами администратора на вашем компьютере – это облегчит установку.

Шаг 1. Загрузите Arduino IDE с официального сайта — https://www.arduino.cc/download_handler.php.

Шаг 2. Запустите скачанный exe файл.

Шаг 3. В открывшемся окне кликните на “I Agree” чтобы согласиться с условиями лицензии Arduino.

Шаг 4. В окне опций установки отметьте все галочки (см. рисунок).

Шаг 5. На этом шаге необходимо выбрать место установки Arduino IDE. По умолчанию стоит путь установки в Program files на диске C – крайне рекомендуется оставить именно этот путь.

Шаг 6. На этом шаге вы можете наблюдать как Arduino IDE устанавливается на ваш компьютер (см. рисунок). После того как установка будет завершена нажмите кнопку “completed”.

Шаг 7. После завершения установки запустите на выполнение файл Arduino.exe. Откроется окно IDE с минимумом кода внутри него – см. рисунок.

Центр при МГТУ им. Баумана

Платформа Arduino имеет открытую архитектуру и простой язык программирования. Она легко программируется через USB. Подключая к платформе разные датчики, вы можете получать информацию об окружающем мире (к примеру, температуру воздуха в разных частях города), отправлять данные на компьютер, а также управлять другими подключенными элементами.

Зная механизм работы устройств на Arduino, можно конструировать робототехнику и разную электронику. Изучение платформы помогает понять, по какому принципу работает «умный» дом.

Во время занятий вы получите базовые представления о программировании микроконтроллеров, робототехнике и электронике. Вы увидите, что представляют собой простейшие программы для микроконтроллеров и соберете рабочие схемы ЖК-дисплеев, температурных датчиков, систем светодиодов и многого другого. Лабораторные работы занимают 70% занятий – у вас будет много времени на увлекательные эксперименты и открытия.

Курс будет полезен:

  • всем, кто хочет преподавать робототехнику в школе или вузе;
  • всем, кто интересуется робототехникой и электроникой;
  • всем, кто занимается автоматизацией в работе или быту;
  • всем, кому интересна идея «интернета вещей».

Какие железки используем

Все представленные устройства собираются на базе контроллера Arduino Uno и платы Slot Shield. В зависимости от проекта к ним добавятся от одного до шести Тройка-модулей — сенсоров и индикаторов.

Arduino Uno

Железки и скетчи протестированы на оригинальной итальянской Arduino Uno третьей ревизии. Если у вас не оригинальная плата, вероятней всего проекты будут работать и на них, но гарантировать это нельзя.

Troyka-модули

Мы используем готовые элементы в формате Тройка-модулей. У них на борту все необходимые для работы элементы и обвязка для быстрого подключения к управляющей плате. У нас на выбор более сотни модулей — от простейших светодиодов, до систем спутниковой навигации. Единый формат модулей избавит от проблем с совместимостью. Ко всем модулям написаны библиотеки, которые упростят процесс программирования и сделают код простым и прозрачным.

Slot Shield

Проекты собираются на Slot Shield. Эта плата расширения крепится поверх Ардуино и выводит гребёнки пинов на удобные разъёмы. На Slot Shield можно установить от одного до шести модулей в разных комбинациях. Новая комбинация — новое устройство.

Разумеется, вы можете повторить проекты и на обычной макетке или Troyka Shield — соедините указанные в схеме пины обычными проводами и всё заработает.

Особенности программирования на платформе Arduino

Термины

Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: и . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.

Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).

Любой пин работает с двумя логическими состояниями: и , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.

Основные функции

Для базовой работы с платой в библиотеке Arduino есть следующие функции:

  • — указывает назначение конкретного пина PIN (значение — вход, — выход);
  • — устанавливает логическое состояние на выходе ( — 0, — 1);
  • — возвращает логическое состояние со входа PIN ( — 0, — 1);
  • — устанавливает аналоговое напряжение на выходе ( в пределах от 0 до 255);
  • — возвращает значение аналогового уровня сигнала со входа (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
  • — приостанавливает исполнение скетча на заданное количество миллисекунд;
  • — возвращает количество миллисекунд после момента запуска микроконтроллера.

В остальном процесс программирования на Arduino такой же, как на стандартном C++.

6

Документация

Стандартный JavaScript

  • Встроенные функции и константы — константы и функции
  • Array, Boolean, Function, Number, Object, String — примитивы
  • ArrayBuffer — типизированые массивы, ArrayBuffer, DataView, ArrayBufferView
  • Error, , , , — ошибки
  • Date — работа с датами и временем
  • JSON — кодирование и декодирование JSON
  • Math — математические функции

Классы и объекты, уникальные для Espruino и Iskra JS

  • E — утилитарные функции Espruino
  • Pin — работа с портами ввода-вывода (пинами)
  • File — чтение и запись файлов
  • SPI — работа с интерфейсом SPI
  • I2C — работа с интерфейсом TWI/I²C
  • Serial — работа с интерфейсом UART
  • OneWire — работа с шиной 1-Wire

Встроенные библиотеки Espruino и Iskra JS

  • crypto — работа с криптографией
  • Flash — прямые чтение и запись флеш-памяти контроллера
  • fs — работы с файловой системой карт памяти

Подгружаемые библиотеки

  • @amperka/accelerometer — драйвер акселерометра
  • @amperka/analog-line-sensor — драйвер аналогового сенсора пересечения линии
  • @amperka/animation — плавное изменение параметров
  • @amperka/barometer — драйвер барометра
  • @amperka/bluetooth — драйвер bluetooth-модуля
  • @amperka/button — драйвер модуля-кнопки и других кнопок
  • @amperka/buzzer — драйвер модуля-зуммера
  • @amperka/card-reader — расширение библиотеки fs для работы с SD картами
  • @amperka/digital-line-sensor — драйвер цифрового сенсора пересечения линии
  • @amperka/dweetio — клиент для работы с графиками в dweet.io
  • @amperka/gas-sensor — драйвер датчиков газа
  • @amperka/gpio-expander — драйвер GPIO expander
  • @amperka/gprs-shield — драйвер GPRS-модуля
  • @amperka/hysteresis — фиксация пересечения пороговых значений
  • @amperka/ifttt-webhooks — клиент для компонента webhooks сервиса ifttt.com
  • @amperka/ir-receiver — драйвер модуля инфракрасного приёмника
  • @amperka/led — драйвер модуля-светодиода и других светодиодов
  • @amperka/led-matrix — драйвер светодиодной матрицы 8×8
  • @amperka/led-strip — драйвер светодиодной ленты
  • @amperka/light-sensor — драйвер модуля сенсора освещённости
  • @amperka/magnetometer — драйвер магнитометра (компаса)
  • @amperka/motor — драйвер для контроллера двигателей
  • @amperka/multiservo — драйвер для контроллера сервоприводов
  • @amperka/nfc — драйвер RFID/NFC сканера
  • @amperka/pot — драйвер модуля-потенциометра
  • @amperka/pid — ПИД-регулятор
  • @amperka/power-control — управление транзистором
  • @amperka/proximity — драйвер датчика приближения и освещённости
  • @amperka/quaddisplay — драйвер для работы с четырёхразрядным индикатором (v1)
  • @amperka/quaddisplay2 — драйвер для работы с четырёхразрядным индикатором (v2)
  • @amperka/ringtone — проигрывание мелодий в формате Nokia RTTTL
  • @amperka/relay — драйвер для работы с реле
  • @amperka/robot-2wd — драйвер двухколёсного робота
  • @amperka/rs-485 — драйвер для работы с модулей RS-485
  • @amperka/rtc — драйвер для работы с часами реального времени
  • @amperka/servo — драйвер хобби-сервомоторов
  • @amperka/stepper — драйвер шагового двигателя
  • @amperka/telegram — телеграм-бот
  • @amperka/thermometer — драйвер для модуля аналогового линейного термометра
  • @amperka/timer — периодически повторяющиеся и отложенные действия
  • @amperka/ultrasonic — драйвер для ультразвукового дальномера HC-SR04
  • @amperka/usb-keyboard — эмуляция HID-устройства USB-клавиатуры
  • @amperka/water-flow — драйвер датчика потока воды
  • @amperka/water-level — драйвер датчика уровня воды
  • @amperka/wifi — драйвер модуля Wi-Fi

По умолчанию библиотеки модулей Амперки работают только при подключении к интернету.
Если вы планируете прошивать плату Iskra JS без выхода в сеть, необходимо настроить ваш компьютер.

Вы так же можете создать свою библиотеку и подключить её к Espruino Web IDE

Масштабирование решения

Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения — подключения к Arduino нескольких помп и датчиков влажности — существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:

Горшки с цветами дома часто стоят в ряд на подоконнике. Вам достаточно просто положить трубку на горшки так, чтобы отверстия в ней приходились по одному на горшок. Теперь наше устройство может поливать сразу несколько горшков. Однако в таком случае принимать решение о необходимости полива можно только по одному горшку. Однако обычно горшки примерно одинаковые по размерам и, соответственно, сохнут с примерно равной скоростью. Можно так же комбинировать два решения, разделяя все горшки на группы примерно равных по размерам.

Что можно и чего нельзя

Арду­и­но рабо­та­ет на одно­ядер­ном и не шиб­ко шуст­ром про­цес­со­ре. Его так­то­вая часто­та — 16 мега­герц, то есть 16 мил­ли­о­нов про­цес­сор­ных опе­ра­ций в секун­ду. Это не очень быст­ро, плюс ядро толь­ко одно, и оно испол­ня­ет одну коман­ду за дру­гой.

Вот какие огра­ни­че­ния это на нас накла­ды­ва­ет.

Нет насто­я­щей мно­го­за­дач­но­сти. Мож­но симу­ли­ро­вать мно­го­за­дач­ность с помо­щью при­ё­ма Protothreading, но это ско­рее костыль. Нель­зя, напри­мер, ска­зать: «Когда нажмёт­ся такая-то кноп­ка — сде­лай так». Вме­сто это­го при­дёт­ся в основ­ном цик­ле писать про­вер­ку: «А эта кноп­ка нажа­та? Если да, то…»

Нет поня­тия фай­лов (без допол­ни­тель­ных при­мо­чек, биб­лио­тек и желе­за). На кон­трол­лер нель­зя ниче­го сохра­нить, кро­ме управ­ля­ю­щей им про­грам­мы. К сча­стью, есть пла­ты рас­ши­ре­ния, кото­рые поз­во­ля­ют немнож­ко рабо­тать с фай­ла­ми на SD-карточках.

Ана­ло­гич­но с сетью: без допол­ни­тель­ных плат и биб­лио­тек Арду­и­но не может ни с чем общать­ся (кро­ме как включать-выключать элек­три­че­ство на сво­их выхо­дах).

Полег­че со слож­ной мате­ма­ти­кой: если вам нуж­но что-то слож­ное типа три­го­но­мет­ри­че­ских функ­ций, будь­те гото­вы к тому, что Арду­и­но будет счи­тать их доволь­но мед­лен­но. Для вас это одна строч­ка кода, а для Арду­и­но это тыся­чи опе­ра­ций под капо­том. Поща­ди­те.

Отчё­ты? Ошиб­ки? Толь­ко при ком­пи­ля­ции. У Арду­и­но нет встро­ен­ных средств сооб­щить вам, что ему нехо­ро­шо. Если он завис, он не пока­жет окно ошиб­ки: во-первых, у него нет гра­фи­че­ско­го интер­фей­са, во-вторых — экра­на. Если хоти­те систе­му оши­бок или отчёт­ность, пиши­те её

Если серьёз­но, то перед зали­вом про­грам­мы на кон­трол­лер ком­пи­ля­тор про­ве­рит код и най­дёт в нём опе­чат­ки или про­бле­мы с типа­ми дан­ных. Но на этом всё: если у вас слу­чай­но полу­чи­лась бес­ко­неч­ная пет­ля в коде или при каких-то обсто­я­тель­ствах вы пове­си­те про­цес­сор деле­ни­ем на ноль — жми­те пере­за­груз­ку и исправ­ляй­те код.

Какие ещё языки используют для Arduino

Но чу! Под Arduino мож­но писать и на дру­гих язы­ках!

С. Как и С++, Си лег­ко мож­но исполь­зо­вать для про­грам­ми­ро­ва­ния мик­ро­кон­трол­ле­ров Arduino. Толь­ко если С++ не тре­бу­ет ника­ких допол­ни­тель­ных про­грамм, то для С вам пона­до­бит­ся , что­бы пра­виль­но пере­ве­сти код в язык, понят­ный кон­трол­ле­рам AVR.

Python. Было бы стран­но, если бы тако­му уни­вер­саль­но­му язы­ку не нашлось при­ме­не­ния в робо­то­тех­ни­ке. Берё­те биб­лио­те­ки PySerial и vPython, при­кру­чи­ва­е­те их к Python и гото­во!

Java. Прин­цип такой же, как в Python: берё­те биб­лио­те­ки для рабо­ты с пор­та­ми и кон­трол­ле­ра­ми и мож­но начи­нать про­грам­ми­ро­вать.

HTML. Это, конеч­но, совсем экзо­ти­ка, но есть про­ек­ты, кото­рые застав­ля­ют HTML-код рабо­тать на Arduino.

А вооб­ще Arduino рабо­та­ет на кон­трол­ле­рах AVR, и про­шить их мож­но любым кодом, кото­рый ском­пи­ли­ро­ван под это желе­зо. Всё, что вам нуж­но — най­ти биб­лио­те­ку для ваше­го люби­мо­го язы­ка, кото­рая пре­об­ра­зу­ет нуж­ные коман­ды в машин­ный код для AVR.

Главное — алгоритмы

Любой робот — это один боль­шой алго­ритм. Что­бы научить­ся думать как про­грам­мист и писать свои алго­рит­мы с нуля, при­хо­ди­те в Прак­ти­кум.
Попро­бо­вать

Программируемый конструктор

Робототехника — одно из перспективных направлений в науке и технике. Все чаще стали появляться кружки робототехники на базе образовательных учреждений, школ и центров развития. Для работы такого кружка необходимы специальные электронные конструкторы, которые содержат в себе все необходимые компоненты для сборки различных электронных устройств. Такие робототехнические наборы позволяют развить способности ребенка к программированию и логическому мышлению с самого детства, помогают сконструировать собственного робота и реализовать мечты юного энтузиаста.

Конструктор для сборки программируемого робота 4WD Robot Kit позволит приобщиться к миру робототехники, изучить основы радиоэлектроники и программирования. В нем вы найдете контроллер Arduino-совместимый UNO, 4 мотора-редуктора с колесами, сервопривод, датчики: линии, цвета, препятствий и многие другие элементы. Подключайте модули шлейфами к плате и если соберете что-то не так, ничего не испортится, вы можете просто вытащить шлейф и вставьте заново.

Набор упакован в красивую коробку и может служить отличным подарком.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector