| | | | | |
Обозначение
ОписаниеМикроконтроллер является цифровым устройством, осуществляющим прием, обработку, хранение и передачу информации, управление исполнительными устройствами и средствами коммуникации. Программирование микроконтроллера AcsMP подобно программированию плат Arduino. |
ХарактеристикиМикроконтроллер AcsMP представляет собой устройство с 8 контактами.
На вход микроконтроллера AcsMP не требуется подавать напряжение, т.к. источник питания встроен в плату и напряжение 5 В на контактах №1 и №2 доступно для подключения к датчикам и исполнительным устройствам.
Стрелками обозначено направление протекания тока. Индикатор "~" обозначает формирование ШИМ (PWM) сигнала на выходе соответствующего порта. Значения после "RX" и "TX" содержат информацию о количестве принятых и отправленных байт.
1 контакт - отрицательный контакт источника питания (земля).
2 контакт - положительный контакт источника питания.
3 контакт - порт №1 микроконтроллера: ввод и вывод, поддерживается ШИМ (PWM).
4 контакт - порт №2 микроконтроллера: ввод и вывод, поддерживается ШИМ (PWM).
5 контакт - порт №3 микроконтроллера: ввод и вывод, поддерживается ШИМ (PWM).
6 контакт - порт №4 микроконтроллера: ввод и вывод, поддерживается ШИМ (PWM).
7 контакт - порт ввода RX последовательного интерфейса Serial.
8 контакт - порт вывода TX последовательного интерфейса Serial. |
НастройкаДля написания программы необходимо дважды щелкнуть по элементу. После этого слева появится окно, в котором необходимо записать команды внутри функции первоначальной настройки при запуске микроконтроллера setup и бесконечно повторяющейся функции loop. В разделе "Программирование AcsMP" приводится информация по доступным функциям и переменным.
|
Программирование AcsMPФункции работы со временем
unsigned int millis() - возвращает число миллисекунд с начала включения микроконтроллера.
unsigned int micros() - возвращает число микросекунд с начала включения микроконтроллера.
delay(пауза) - остановка выполнения программы на соответствующее число миллисекунд.
delayMicroseconds(пауза) - остановка выполнения программы на соответствующее число микросекунд.
Функции работы с прерываниями и таймерами
attachInterrupt(номер, функция, режим) - устанавливает прерывание (значение 0 для порта №1, значение 1 для порта №2, значение 2 для порта №3, значение 3 для порта №4), срабатывающее в зависимости от режима (если на порте низкий сигнал - LOW; если на порте произошла смена уровня сигнала - CHANGE; если на порте сигнал был низким, а стал высоким - RISING; если на порте сигнал был высоким, а стал низким - FALLING) и вызывающее функцию-обработчик прерываний типа "void functionname()". Внутри обработчика прерываний не должно быть сложных вычислений, а все переменные должны быть глобальными с ключевым словом volatile, например, "volatile int counter=0;".
detachInterrupt(номер) - отключает указанное прерывание.
primarytimer_attach(функция) - устанавливает основной таймер, который срабатывает на каждом шаге моделирования (зависит от установленного шага и метода решения дифференциальных уравнений) и вызывает функцию-обработчик типа "void functionname()". Внутри обработчика прерываний не должно быть сложных вычислений, а все переменные должны быть глобальными с ключевым словом volatile, например, "volatile int counter=0;".
primarytimer_detach() - отключает таймер.
Функции работы с портами ввода-вывода
pinMode(порт, режим) - переводит порт в режим ввода INPUT или в режим вывода OUTPUT.
int digitalRead(порт) - возвращает уровень сигнала на заданном порте (низкий LOW или высокий HIGH).
digitalWrite(порт, уровень) - устанавливает уровень сигнала LOW или HIGH на заданном порте.
int analogRead(порт) - возвращает число в диапазоне от 0 до 1023, соответствующее уровню напряжения на порте.
analogWrite(порт, период) - формирует на выходе порта ШИМ сигнал с заданным периодом в диапазоне от 0 (0%) до 255 (100%).
unsigned int pulseIn(порт, уровень, ожидание) - возвращает количество микросекунд с момента появления сигнала с заданным уровнем до смены уровня сигнала, либо до окончания времени ожидания.
Функции работы с последовательным интерфейсом
Serial - глобальная переменная, позволяющая работать с последовательным интерфейсом.
Serial.begin(скорость) - обязательная функция для инициализации скорости работы интерфейса, скорость выбирается из стандартного диапазона: 110, 300, 600, 1200, 2400, 4800, 9600, …, 115200, …, 1000000, 2000000.
char Serial.available() - возвращает число 1, если на вход RX подан хотя бы 1 байт информации.
char Serial.read() - ожидает получения 1 байта на входе RX и возвращает его код в диапазоне от 0 до 255.
Serial.write(код) - отправляет в порт TX 1 байт информации и не ожидает его передачу.
Serial.print(строка) - отправляет в порт TX массив символов.
Serial.println(строка) - отправляет в порт TX массив символов, дополненный символами изменения положения каретки и переноса строки.
Функции работы с сервоприводами
Servo1 - глобальная переменная, позволяющая работать с сервоприводом 1.
Servo1.attach(порт) - инициализирует функции работы с сервоприводом 1, который подключен к заданному порту.
Servo1.write(значение) - устанавливает значение угла поворота сервопривода 1 в диапазоне от 0 до 180.
int Servo1.read() - возвращает значение углав поворота сервопривода 1 в диапазоне от 0 до 180.
Servo1.detach() - отключает функции работы с сервоприводом 1.
Servo2 - глобальная переменная, позволяющая работать с сервоприводом 2.
Servo2.attach(порт) - инициализирует функции работы с сервоприводом 2, который подключен к заданному порту.
Servo2.write(значение) - устанавливает значение угла поворота сервопривода 2 в диапазоне от 0 до 180.
int Servo2.read() - возвращает значение углав поворота сервопривода 2 в диапазоне от 0 до 180.
Servo2.detach() - отключает функции работы с сервоприводом 2.
Функции работы с сетью WiFi
WiFi.begin(SSID, пароль) - подключается к WiFi сети. В эмуляции доступна сеть "ACS" с паролем "123". Подключение занимает приблизительно 0,1 с, необходимо организовать задержку перед выполнением сетевых функций.ОБЯЗАТЕЛЬНАЯ ФУНКЦИЯ.
WiFi.disconnect() - отключение от WiFi сети.
unsigned char WiFi.status() - возвращается состояние сети WL_CONNECTED (подключено), WL_CONNECT_FAILED (ошибка подключения), WL_IDLE_STATUS (подключение), WL_DISCONNECTED (разъединено).
Функции сетевого клиента
WiFiClient - структура для работы с сетевыми подключениями, например "WiFiClient client;" определит переменную client типа WiFiClient.
WiFiClient WiFiClient_Create() - инициализирует переменную client для работы с сетевыми подключениями, например, "client=WiFiClient_Create();". ОБЯЗАТЕЛЬНАЯ ФУНКЦИЯ.
long client.connect(домен, порт) - подключение к порту port на домене domain, возвращает не ноль в случае успешного подключения.
long client.available() - возвращает не ноль, если имеются данные для чтения.
unsigned char client.read() - считывает и возвращает 1 байт принятых данных.
long client.write(символ) - записывает в выходной поток 1 байт данных и возвращает 1 в случае успеха.
long client.print(строка) - записывает в выходной поток текст (массив символов) и возвращает количество записанных символов.
long client.println(строка) - записывает в выходной поток текст (массив символов) с символами каретки и переноса строки и возвращает количество записанных символов.
long client.stop() - закрывает подключение (необходима задержка в случае отправки данных, иначе часть данных будет утеряна). ОБЯЗАТЕЛЬНАЯ ФУНКЦИЯ.
Функции сервера
WiFiServer - структура для работы с сервером, встроена статическая переменная server типа WiFiServer, создание новых не допускается.
server.setip(ip) - устанавливает IP-адрес сервера (строка, по умолчанию значение равно "127.0.0.1").
server.setport(порт) - устанавливает номер порта (число, по умолчанию значение равно 80).
long server.begin() - запускает сервер и возвращает не ноль, если сервер успешно запущен.
WiFiClient server.available() - возвращает сетевого клиента типа WiFiClient с настроенным подключением (client.connected() равно 1) при наличии внешнего подключения к микроконтроллеру и клиента с отсутствующим подключением (client.connected() равно 0) в ином случае. После получения подключенного клиента работа с ним осуществляется аналогично, но с учетом того, что сначала нужно считать принятые данные, а затем отправить ответ. Этот сетевой клиент должен быть обязательно завершен функцией client.stop();
|
| |
| |