Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Для некоторых проектов вам необходимо использовать Arduino, поскольку он обеспечивает простую платформу для прототипирования, но отображение графики на последовательном мониторе Arduino может занять довольно много времени и даже сложно. Вы можете отображать графики на последовательном мониторе Arduino, но графики - это не единственное, что вам может понадобиться отображать. Все интерактивные объекты, такие как слайдеры, кнопки, программы с выводом 2D, 3D, PDF или SVG, а также вы можете легко создавать анимацию. Режим программирования по умолчанию для обработки - Java, но вы можете переключить его на Android, p5.js, REPL, CoffeeScript и JavaScript. Однако в этом руководстве мы будем использовать режим программирования Java.
Весь контент и код также доступны на моем github здесь.
Шаг 1. Использование Processing.serial
Код обработки
Первые две строки кода будут
import processing.serial. *; Последовательный myPort;
Здесь в первой строке мы импортируем библиотеку - обработку, а во второй строке мы создаем объект класса Serial с именем myPort, вы можете назвать его как хотите, следуя правилам именования идентификаторов.
При обработке у нас есть void setup () и void draw (), где void - это тип возвращаемого значения функции, вы также можете изменить его на int setup () и int draw () или другой тип данных, который вам нравится, но вам нужно будет вернуть значение, которое имеет тот же тип данных, что и тип данных, который вы используете перед функциями.
в setup () мы пишем операторы, которые нам нужно выполнить один раз, тогда как в draw () мы пишем операторы, которые нам нужно выполнить несколько раз. Две упомянутые выше строки кода должны быть написаны выше void setup (), потому что им нужен глобальный доступ.
В void setup () мы инициализируем объект myPort.
void setup () {
размер (800, 800);
myPort = новый серийный номер (это, «COM18», 9600);
}
Размер строки (800, 800); определяет размер экрана 800 на 800 пикселей.
Ключевое слово new во второй строке используется для резервирования места для объекта в памяти, аргумент this - это ссылочная переменная, которая ссылается на текущий объект. Аргумент COM18 - это порт подключенного Arduino, он нам нужен, так как мы будем передавать данные через последовательный интерфейс. Число 18 может быть другим в вашем случае, вы можете найти его в разделе «Инструменты»> «Порт» в Arduino IDE, а 9600 - это скорость передачи данных, которую вы можете изменить как в Arduino, так и в обработке.
Шаг 2. Разберитесь в серийном классе
Конструктор для Serial
Последовательный (родительский, portName, baudRate, четность, dataBits, stopBits)
Аргументы:
родитель: обычно используют "это"
baudRate (int): 9600 по умолчанию
portName (String): имя порта (по умолчанию COM1)
четность (символ): «N» - нет, «E» - четное, «O» - нечетное, «M» - метка, «S» - пробел (по умолчанию используется «N»)
dataBits (int): 8 по умолчанию
stopBits (float): 1.0, 1.5 или 2.0 (по умолчанию 1.0)
Важные методы:
- myPort.available () - возвращает количество доступных байтов.
- myPort.clear () - очищает буфер и удаляет все хранящиеся в нем данные.
- myPort.read () - возвращает число от 0 до 255 для следующего байта, ожидающего в буфере.
- myPort.readString () - возвращает все данные из буфера в виде String или null, если нет ничего доступного.
- myPort.write ("test") - записывает байты, символы, целые числа, байты , строки в последовательный порт.
- myPort.stop () - останавливает передачу данных на порт.
Шаг 3: Последовательный класс Arduino
Вам не нужно импортировать последовательный класс в Arduino перед его использованием.
В Arduino есть 2 функции, называемые setup () и loop (), установка выполняется только один раз, но цикл выполняется несколько раз. В setup () нам нужно написать, используя метод begin () для запуска последовательной связи. В Arduino, в отличие от обработки, нам не нужно указывать порт в качестве аргументов метода begin (), поскольку мы уже указываем порт при загрузке скетча в Arduino.
Итак, setup () будет выглядеть так:
void setup () {
Serial.begin (9600); // запускаем последовательную связь
}
9600 здесь указывает скорость передачи, о которой мы также упоминали в файле обработки. Для правильной связи обе скорости передачи должны быть равны, иначе вы можете увидеть последовательный вывод как что-то тарабарщину.
Теперь давайте посмотрим на часть loop (). Эта часть кода выполняется несколько раз. Если мы хотим прочитать какие-то данные через порт, мы будем использовать метод Serial.read (). Эта функция возвращает null, если данные недоступны, поэтому мы будем вызывать этот метод только тогда, когда у нас есть некоторые данные в доступном в последовательном потоке.
Чтобы проверить, есть ли какие-то данные, мы воспользуемся методом Serial.available (). Если он возвращает значение больше 0 - некоторые данные доступны.
Итак, часть loop () будет выглядеть так:
void loop () {
if (Serial.available ()> 0) {// если какие-то данные доступны или в последовательном порту
состояние символа = Serial.read (); // читаем значение
// операторы if или переключение регистра
}
}
Теперь мы можем использовать лестницу if или, если есть много возможных результатов, мы можем также использовать случай переключения для состояния переменной.
Шаг 4. Создайте 7-сегментный контроллер графического интерфейса
Файлы прикреплены сюда. Примечание. Для обработки вам также потребуется установить библиотеку control p5, которую я использовал для создания интерактивных кнопок графического интерфейса пользователя.
Номера контактов
7 сегментов (в алфавитном порядке) относятся к изображению
а - цифровой вывод 2
б - цифровой вывод 3
c - цифровой вывод 4
d - цифровой вывод 5
e - цифровой вывод 6
f - цифровой вывод 7
g - цифровой вывод 8
dp - цифровой вывод 9
Весь контент и код также доступны на моем github здесь