Нужна помощь с написанием скетча Processing

Wiring, Processing, библиотеки

Нужна помощь с написанием скетча Processing

Сообщение superaft » 14 фев 2015, 21:25

Всем доброго времени суток!
К Arduino Uno подключены 3 потенциометра, в монитор порта отправляются значения с потенциометров от 0 до 255 через запятую.
Нужно сделать так чтобы при повороте ручки потенциометра изменялось значение rgb, то есть при повороте первого потенциометра изменялось значение красного, при повороте второго - значение зелёного, при повороте третьего - значение синего.

Написал скетч на Arduino, с ним все в порядке:

Код: Выделить всё
const int PotentimetrRed = A0;
const int PotentimetrGreen = A1;

int RedValue = 0;
int GreenValue = 0;

int OutputRed = 0;
int outputGreen = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  RedValue = analogRead(PotentimetrRed);
  GreenValue = analogRead(PotentimetrGreen);
 
  OutputRed = map(RedValue, 0, 1023, 0, 255);
  outputGreen = map(GreenValue, 0, 1023, 0, 255);

  Serial.print(OutputRed);
  Serial.print(",");
  Serial.print(outputGreen);
  Serial.print(",");
  Serial.println(0); //Значение blue изменяется программно
  delay (4);
 
}

(На данный момент значение синего управляется программно)

Вот скетч Procesing:
Код: Выделить всё
import processing.serial.*;

Serial myPort;



void setup()
{
   myPort = new Serial(this, "COM3", 9600);
  size (500,500);
}

void draw()
{
  while (myPort.available() > 0)
  {
    String Read = myPort.readString();
    float[] nums = float(split(Read, ','));
   
    background (nums[0], nums[1], nums[2]);
  } 



Скетч запускается меняется цвет фона (пока не выяснил отчего это зависит, пока не понятно) и сразу же зависает и вылетает.
Из-за чего это происходит? Прошу помощи у знающих людей.
Заранее спасибо!
superaft
 
Сообщения: 1
Зарегистрирован: 14 фев 2015, 20:29
programming: ;

Re: Нужна помощь с написанием скетча Processing

Сообщение noonv » 16 фев 2015, 09:28

Думаю, что нужно изменить метод отрисовки, чтобы он не ждал данных из последовательного порта и рисовал всё время ;)
что-то вроде:
Код: Выделить всё
float r=0,g=0,b=0;
void draw()
{
  while (myPort.available() > 0) {
    String Read = myPort.readString();
    float[] nums = float(split(Read, ','));
     r = nums[0]; g = nums[1]; b= nums[2];
    }
  background (r,g,b);



см.
Processing и Arduino
Processing & Electronics
Аватара пользователя
noonv
Администратор
 
Сообщения: 556
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |