Главная
Случайная страница
Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Язык программирования
Среда разработки основана на языке программирования Processing и спроектирована для программирования новичками, не знакомыми близко с разработкой программного обеспечения. Строго говоря, это C++, дополненный некоторыми библиотеками. Программы обрабатываются с помощью препроцессора, а затем компилируется с помощью AVR-GCC.
Язык ардуино можно разделить на три раздела:
· Операторы
· Данные
· Функции
Операторы:
Таблица 1. Операторы
Основные операторы
| Оператор
| Описание
| Пример
| setup()
| Функция setup() вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д.
| int buttonPin = 3;
void setup()
{Serial.begin(9600);
pinMode(buttonPin, INPUT);}
void loop()
{
//...
}
| loop()
| После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() крутится в цикле, позволяя программе совершать вычисления и реагировать на них.
| int buttonPin = 3;
// setup инициализирует последовательный порт и кнопку
void setup()
{ beginSerial(9600);
pinMode(buttonPin, INPUT);}
void loop()
{ if (digitalRead(buttonPin) == HIGH)
serialWrite('H');
else
serialWrite('L');
delay(1000);}
| Управляющие операторы
| if (условие) и ==,!=, <, > (операторы сравнения)
| if, используется в сочетании с операторами сравнения, проверяет, достигнута ли истинность условия. Выражения, которые вычисляются внутри круглых скобок, могут состоять из одного или нескольких операторов.
Операторы сравнения:
· x == y (x равно y)
· x!= y (x не равно y)
· x < y (x меньше чем y)
· x > y (x больше чем y)
· x <= y (x меньше чем или равно y)
· x >= y (x больше чем или равно y)
| if (someVariable > 50)
{
// выполнять действия
}
| if..else
| Предоставляет больший контроль над процессом выполнения кода, чем базовый оператор if, позволяя осуществлять несколько проверок, объединенных вместе.
| if (pinFiveInput < 500)
{ // действие A }
else
{ // действие B}
| for
| Используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор for подходит для любых повторяющихся действий.
| void setup()
{ // настройка не нужна }
void loop()
{ for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10); } }
| while
| while будет вычислять в цикле непрерывно и бесконечно до тех пор, пока выражение в круглых скобках, () не станет равно логическому ЛОЖНО. Что-то должно изменять значение проверяемой переменной, иначе выход из цикла while никогда не будет достигнут.
| var = 0;
while(var < 200)
{// выполнить что-то, повторив 200 раз
var++; }
| do
{
} while
| Цикл do работает так же, как и цикл while, за исключением того, что условие проверяется в конце цикла, таким образом, цикл do будет всегда выполняться хотя бы раз.
| do
{ delay(50);
// подождать, пока датчики стабилизируются
x = readSensors();
// проверить датчики
} while (x < 100);
| break
| Используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию.
| for (x = 0; x < 255; x ++)
{ digitalWrite(PWMpin, x);
sens = analogRead(sensorPin);
if (sens > threshold)
{// выходим из цикла если есть сигнал с датчика
x = 0;
break; }
delay(50); }
| Синтаксис
| ;(точка с запятой)
| Используется для обозначения конца оператора.
| int a = 13;
| Фигурные скобки {}
| Важный элемент языка программирования С. Открывающая скобка “{” должна всегда сопровождаться закрывающей скобкой “}”. Это условие, известное как парность (симметричность) фигурных скобок.
| while (логическое выражение)
{оператор(ы)}
| // текст
/* текст */
Комментарии
| Комментарии – это строки в программе, которые используются для информирования вас самих или других о том, как работает программа.
// - Это комментарий в одной строке. Все после двойного слэша – комментарий до конца строки.
/* - Это многострочный комментарий – используйте его для закоментирования целых кусков кода.
| x = 5; //Это комментарий в одной строке. Все после двойного слэша – комментарий до конца строки
/* это многострочный комментарий – используйте его для закоментирования целых кусков кода
// не забывайте «закрывать» комментарии – они должны быть парными!
*/
| Орифметические операторы
| =
(Оператор присваивания)
| Присваивает переменной слева от оператора значение переменной или выражения, находящееся справа.
| int sensVal;
// объявление переменной типа integer
senVal = analogRead(0); // присваивание переменной sensVal, значения, считанное с аналогового входа 0
| +, -, *, /
Сложение, вычитание, умножение и деление. Операторы
|
| result = value1 + value2;
value1: любая переменная или константа
result = value1 - value2;
value2: любая переменная или константа
result = value1 * value2;
result = value1 / value2;
| Логические операторы
| &&
(логическое И)
| Истина, если оба операнда истина (true).
| if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) {
// считывает состояние двух портов }
| ||
(логическое ИЛИ)
| Истина, если хотя бы один операнд истина.
| if (x > 0 || y > 0)
{… }
| !
(логическое отрицание)
| True, если операнд false, и наоборот.
| if (!x) {…}
| Унарные операторы
| ++
(увеличение значения)
--
(уменьшение значения)
| Унарные (имеющие один операнд) операторы ++, -- увеличивают, уменьшают значение переменной соответственно.
| x++;
// увеличивает значение x на единицу и возвращает старое значение x
++x;
// увеличивает значение x на единицу и возвращает новое значение x
x--;
// уменьшает значение x на единицу и возвращает старое значение x
--x;
// уменьшает значение x на единицу и возвращает новое значение x
| +=
-=
*=
/=
| Короткий способ записи арифметических действий над переменной и одним операндом.
| x += y;
// эквивалент записи x = x + y;
x -= y;
// эквивалент записи x = x - y;
x *= y;
// эквивалент записи x = x * y;
x /= y;
// эквивалент записи x = x / y;
| Данные:
Таблица 2. Данные
Типы данных:
| Данные
| Описание
| Пример
| boolean
| Логический (булевый) тип данных. Может принимать одно из двух значений true или false. Boolean занимает в памяти один байт.
| int LEDpin = 5;
// Светодиод на входе 5
int switchPin = 13;
// выключатель на порту 13, замыкает на землю
boolean running = false;
void setup()
{ pinMode(LEDpin, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(switchPin, HIGH); // включаем подтягивающий резистор }
void loop()
{ if (digitalRead(switchPin) == LOW)
{// выключатель нажат, т.к. подтягивающий резистор будет давайть HIGH на входе, если не замкнут напрямую на землю
delay(100);
// ждем 0.1сек
running =!running; // меняем значение булевой переменной
digitalWrite(LEDpin, running)
// включаем или выключаем светодиод. }}
| char
| Занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127.
| char myChar = 'A';
char myChar = 65;//Варианты эквивалентны
| byte
| Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255.
| byte c = 18;
| int
| Тип данных int (от англ. integer - целое число) наиболее часто используемый типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1)
| int ledPin = 13;
| unsigned int
| Тип данных unsigned int - беззнаковое целое число, занимает в памяти 2 байта. Может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).
| unsigned int ledPin = 13;
| word
| Хранит 16-битное, не содержащее знака, число от 0 до 65535.
| word w = 10000;
| long
| Используется для хранения целых чисел в диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.
| long speedOfLight = 186000L;
| Unsigned long
| Используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) изанимает 32 бита (4 байта) в памяти.
| unsigned long var = val;
var - имя переменной
val - присваиваемое значение
| float
| Служит для хранения чисел с плавающей запятой. Используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от -3.4028235E+38 до 3.4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.
| float var = val;
var - имя переменной
val - присваиваемое значение
| double
| В отличие от большинства языков программирования, имеет ту же точность, что и тип float и занимает также 4 байта памяти.
| | string
–массив символов
| Текстовые строки в Ардуино объявляются как массив (array) типа char (символов - литер), оканчивающийся символом "конца строки".
| char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
| String
| Позволяет хранить и манипулировать текстовыми строками, по сравнению с string (массивом символов) класс String предоставляет удобные функции для работы со строками, такие как поиск вхождения в строку, объединение строк и др.
| | arrays
-массивы
| Именованный набор однотипных переменных, с доступом к отдельным элементам по их индексу.
| int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
| void
| Используется при объявлении функций, если функция не возвращает никакого значение при ее вызове (в некоторых языках программирования такие функции называют процедурами).
| // в функциях "setup" и "loop" производятся некоторые действия,
// но ничего не возвращается во внешнюю программу
void setup()
{ //...}
void loop()
{ //...}
| Функции:
Таблица 3. Функции
Цифровой ввод/вывод:
| Функция
| Описание
| Пример
| pinMode()
| Устанавливает режим работы заданного вход/выхода(pin) как входа или как выхода.
| pinMode(pin, mode)
Параметры:
pin: номер вход/выхода(pin), mode: режим одно из двух значение - INPUT или OUTPUT
| digitalWrite()
| Подает HIGH или LOW значение на цифровой вход/выход (pin).
| digitalWrite(pin, value)
Параметры:
pin: номер вход/выхода(pin)
value: значение HIGH или LOW
| digitalRead()
| Функция считывает значение с заданного входа - HIGH или LOW.
| digitalRead(pin)
Параметры:
pin: номер вход/выхода(pin) который Вы хотите считать
| Аналоговый ввод/вывод:
| analogRead()
| Функция считывает значение с указанного аналогового входа.
| analogRead(pin)
Параметры:
pin: номер порта аналогового входа с которого будет производиться считывание
| analogReference()
| Функция определяет опорное напряжение относительно которого происходят аналоговые измерения. Функция analogRead() возвращает значение с разрешением 8 бит (1024) пропорционально входному напряжению на аналоговом входе, и в зависимости от опорного напряжения.
| analogReference(type)
Параметры:
type: определяет используемое опорное напряжение (DEFAULT, INTERNAL или EXTERNAL).
| analogWrite()
| Выдает аналоговую величину (ШИМ волну) на порт вход/выхода. Функция может быть полезна для управления яркостью подключенного светодиода или скоростью электродвигателя. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWrite или digitalRead на том же порту вход/выхода).
| analogWrite(pin, value)
Параметры:
pin: порт вход/выхода на который подаем ШИМ сигнал.
value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан постоянно).
|
|