Processing часть 2. Урок 13. Ардуино

Processing
Processing и RGB светодиод
Processing и RGB светодиод

Привет! В прошлом уроке мы посмотрели как можно управлять программой в компьютере через плату Ардуино и последовательный порт. Сегодня попробуем сделать наоборот. Подключим к Ардуино простую схему и попробуем управлять ей через приложение на компьютере. Опять используем Processing для создания приложения.

Посмотрите предыдущий урок, в котором мы уже использовали Processing и написали наше первое приложение.

Processing. Урок 12. Ардуино

Для того, чтобы выполнить этот урок нам понадобиться.

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • RGB светодиод
  • 3 резистора 220 Ом
  • Кабель USB

Сегодня подключим к Ардуино RGB светодиод и будем управлять его цветом через приложение на компьютере. Опять используем последовательный порт для передачи данных.

Схема и программа Ардуино

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

Принципиальная схема подключения
Принципиальная схема подключения

Для схемы на Ардуино задача простая. Мы уже делали все части этой схемы. Нужно считать данные из последовательного порта. И записать их на контакты rgb светодиода.

Для этого используем функцию Serial.available() для определения данных в буфере последовательного порта.

И функцию Serial.parseInt(), чтобы найти число int в наборе данных.

const int RED =11;
const int GREEN =10;
const int BLUE =9;

int rval = 0;
int gval = 0;
int bval = 0;

void setup(){
  Serial.begin(9600);
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
}

void loop(){
  while (Serial.available() > 0){
    
    rval = Serial.parseInt(); // Первое число
    gval = Serial.parseInt(); // Второе число
    bval = Serial.parseInt(); // Третье число
    
    if (Serial.read() == '\n'){
      analogWrite(RED, rval);
      analogWrite(GREEN, gval);
      analogWrite(BLUE, bval);
    }
  }
}

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

Processing программа

Вначале подключим класс для работы с последовательным портом. И создадим необходимые объекты для последовательного порта и изображений.

import processing.serial.*;
Serial port;
PImage img;

В функции setup() создадим окно программы, создадим экземпляр объекта последовательного порта и загрузим фоновую картинку в переменную для дальнейшей работы с ней.

void setup(){
  size(640,256);
  port=new Serial(this, "COM7", 9600);
  img = loadImage("hsv.jpg");
}

Не забудьте положить картинку в папку с файлом программы.

Фоновое изображение для программы Processing
Фоновое изображение для программы Processing

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

void mouseMoved(){
  color c=get(mouseX, mouseY);
  String colors=int(red(c))+","+int(green(c))+","+int(blue(c))+"\n";
  print(colors);
  port.write(colors);
}

Теперь осталось только написать функцию draw(). Перерисовывать окно на этот раз не нужно. Только зададим основной цвет окна. И загрузим фоновое изображение в левый верхний угол окна программы.

void draw(){
  background(0);
  image(img,0,0);
}

Полный текст программы

import processing.serial.*;
Serial port;
PImage img;

void setup(){
  size(640,256);
  img = loadImage("hsv.jpg");
  port=new Serial(this, "COM7", 9600);
}

void draw(){
  background(0);
  image(img,0,0);
}

void mouseMoved(){
  color c=get(mouseX, mouseY);
  String colors=int(red(c))+","+int(green(c))+","+int(blue(c))+"\n";
  print(colors);
  port.write(colors);
}

Теперь при движении мыши мы автоматически передаем настройки цвета на плату Ардуино. А она, в свою очередь, выставляет нужные цвета на контакты rgb светодиода.

Rgb светодиод повторяет цвета из палитры
Rgb светодиод повторяет цвета из палитры

Заключение

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

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

Ваш адрес email не будет опубликован.