‘Processing’ представляет собой программное обеспечение с открытым исходным кодом, которое часто используется энтузиастами в графическом дизайне. Также его можно использовать для разработки приложений для Android. Во многом оно похоже на такой инструмент как Android Development IDE.
На нашем сайте мы уже рассматривали достаточно много проектов с использованием Processing IDE, которые можно посмотреть по следующей ссылке, наиболее популярными из них являются:
- радар с использованием Arduino, ультразвукового датчика и приложения на Android;
- спидометр с использованием Arduino и приложения на Android;
- плоттер с ЧПУ на основе Arduino Uno;
- измеритель уровня (уклономер) на основе Arduino и MPU6050.
В этом уроке мы узнаем, как подключить плату Arduino к среде Processing и как они обмениваются данными через последовательный порт. Также мы рассмотрим пример, в котором мы будем использовать Processing IDE для отправки команд на плату Arduino и наоборот.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Резистор 220 Ом (купить на AliExpress).
- Светодиод (купить на AliExpress).
- Кнопка.
- Макетная плата.
- Соединительные провода.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Схема проекта
Схема проекта для демонстрации взаимодействия Arduino и Processing представлена на следующем рисунке.
Исходный код Ардуино
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
int led = 13; int button = 12; void setup() { pinMode(led, OUTPUT); pinMode(button, INPUT); Serial.begin(9600); } void loop(){ if(Serial.available() > 0) { char ledState = Serial.read(); if(ledState == '1'){ digitalWrite(led, HIGH); } if(ledState == '0'){ digitalWrite(led, LOW); } } int buttonState = digitalRead(button); if ( buttonState == HIGH){ Serial.println("Button is pressed"); delay(500); } } |
Исходный код Processing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import processing.serial.*; Serial myPort; String myText=""; void setup(){ size(300, 300); myPort = new Serial(this, "COM4", 9600); myPort.bufferUntil('n'); } void serialEvent (Serial myPort){ myText = myPort.readStringUntil('n'); } void draw(){ background(0,0,0); text(myText, 120, 120); myText=""; if(mousePressed && (mouseButton == LEFT)){ myPort.write('1'); } if (mousePressed && (mouseButton == RIGHT)){ myPort.write('0'); } } |