#1 2017-04-18 13:17:13

ivan
Учасник
Зареєстрований: 2016-09-16
Повідомлень: 8

Arduino&Processing

Что такое Processing можно посмотреть в википедии. Но вот столкнулсо с такой проблемой вся документация на английском языке.
А у меня с гуманитарными вопросами проблема(знаний английского для програмирования вдосталь а вот для перевода и изучения нюансов - нет) . Можно конечно воспользоваться переводчиком но....
Возникла такая идея понемногу описывать функции - такой себе блокнотик. Может у кого возникнут идеи или правки пишите... ведь можно и под андроид писать(APDE).

Сам компилятор можно скачать сдесь                    https://processing.org/download/
Все функции и прочее можно посмотреть сдесь      https://processing.org/reference/

Остання редакція ivan (2017-04-23 13:03:32)

Неактивний

#2 2017-04-18 13:41:08

ivan
Учасник
Зареєстрований: 2016-09-16
Повідомлень: 8

Re: Arduino&Processing

size(a,b) -рисуем окно с размерами а х b.
               можно использовать переменные displayWidth и displayHeight.
               И привязывать все нарисованное к этим переменным для универсальности программы.
               
rect(x,y,w,h,2,2,2,2) - функция рисует прямоугольник
               x   -x координата вершины
               y   -y координата вершины
               w   - длинна прямоугольника
               h    - высота прямоугольника
               Двойки - это степень закругления по углам (этот параметр не обязателен)

fill(R,G,B,alpha) - заливка обекта цветом(если указать один параметр - оттенок серого)
                        альфа - это параметр прозрачности(я его применил для отметки зоны комфорта на графике
                        температуры)

noFill() -без заливки

stroke(R,G,B)     - окантовка объекта цветом
 
noStroke()        - без канта

text("Hello world",x,y) - вывод на экран текста

print()                     - вывод информации в консоль

arc()





mouseClicked()     - функция вызывается каждый раз когда кнопка мышки была нажата и отпущена

mousePressed()    - функция отслеживает все нажатия кнопки мышки

mouseMoved()      - функция вызывается каждый раз когда курсор мыши был перемещен

mouseDragged()    - функция вызывается каждый раз когда кнопка мыши была нажата и
                                курсор мыши перемещен
mouseButton        - системная переменная которая принимает значения LEFT или RIGHT
                              и определяет какая кнопка мыши была нажата
mousePressed       - системная переменная которая хранит состояние кнопок мыши.
                               true - если какая нибудь кнопка нажата и false если нет.
mouseX
mouseY
pmouseX
pmouseY

Остання редакція ivan (2017-04-24 21:10:24)

Неактивний

#3 2017-04-19 14:43:15

ivan
Учасник
Зареєстрований: 2016-09-16
Повідомлень: 8

Re: Arduino&Processing

Учитывая что объектом внимания есть все таки Processing то над кодом для Arduino пока заморачиваться не буду.
Хотя в ближайших планах написать код для устройства которое пишет  данные
(показания всяких там датчиков) на флешку. И при подключении по bluetooth считываешь все что там записано.

код для Arduino(передаем синусоиду) ...

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

void loop()
     {
      for(int i=0;i<360;i++)
          {
           data = String(sin(3.1415*i/180));
           Serial.println(data);
           delay(100); 
          }
     }

код для Processing

import processing.serial.*;                            // подключаем библиотеку serial
Serial port;                                                // создаем объект с именем port
float z;                                                     // переменная для оси времени (ось X)
String data1;                                             // переменная в которую будут считываться значения с порта
float data2;                                               // переменная для конвертации данных 
void setup(){
  size(1200,600);
  port = new Serial(this,"COM6",9600);           // вместо COM6 вставте свой порт по которому ардуина подключена к компьютеру
  setka(5,5,1195,595);
}
void draw(){
  if (port.available()>0)
      {
        data1 = port.readString();
        data2 = float(data1);
        stroke(255,0,0);
        point(z+5,300-data2*100);
        z=z+0.5;
        println(data2);
      }
}
void setka(int coordX1,int coordY1,int coordX2,int coordY2)                               // функция рисует сетку с градацией 10 одним цветом и 20 другим
     {
       color LineColor1 = color(220);  //  цвет линии градации 10
       color LineColor2 = color(200);  //  цвет линии градации 20
       color LineColor3 = color(180);  //  цвет линии градации 100
       fill(255);
       rect(coordX1-25,coordY1-25,coordX2-coordX1+50,coordY2-coordY1+50);
       for(int i = coordX1;i<=coordX2;i=i+10)
         {
          stroke(LineColor1);                                                             // задаем цвет для линии переменной LineColor1 
          line(i,coordY1,i,coordY2);                                                      // рисуем горизонтальные линии от левого верхнего угла до правого нижнего градацией в 10
         }
      for(int j = coordY1;j<=coordY2;j=j+10)
         {
          stroke(LineColor1);                                                             // задаем цвет для линии переменной LineColor1 
          line(coordX1,j,coordX2,j);  
         }
      
         
         
      for(int i = coordX1;i<=coordX2;i=i+20)
         {
          stroke(LineColor2);                                                             // задаем цвет для линии переменной LineColor1 
          line(i,coordY1,i,coordY2);                                                      // рисуем горизонтальные линии от левого верхнего угла до правого нижнего градацией в 10
         }
      for(int j = coordY1;j<=coordY2;j=j+20)
         {
          stroke(LineColor2);                                                             // задаем цвет для линии переменной LineColor1 
          line(coordX1,j,coordX2,j);  
         }   
       
       
       for(int i = coordX1;i<=coordX2;i=i+100)
         {
          stroke(LineColor3);                                                             // задаем цвет для линии переменной LineColor1 
          line(i,coordY1,i,coordY2);                                                      // рисуем горизонтальные линии от левого верхнего угла до правого нижнего градацией в 10
         }
      for(int j = coordY1;j<=coordY2;j=j+100)
         {
          stroke(LineColor3);                                                             // задаем цвет для линии переменной LineColor1 
          line(coordX1,j,coordX2,j);  
         }
     
     }  
      

Остання редакція ivan (2017-04-21 14:32:48)

Неактивний

#4 2017-04-21 14:46:13

ivan
Учасник
Зареєстрований: 2016-09-16
Повідомлень: 8

Re: Arduino&Processing

Подключаем шрифты.
Качаем прикольный шрифт (в примере файл с раширением ttf).
Ложим его в папку с проэктом.
Код для подключения шрифтов ...

PFont font;
void setup()
     {
      size(600,300);
      background(200);
      font = createFont("10467.ttf", 100); 
     }  
void draw()
     {
      background(200);
      textFont(font);
      fill(100);
      text("Hello World :-)",50,150);
     }

И получаем что то следующее ...
17_6_45.png

Остання редакція ivan (2017-04-21 14:48:13)

Неактивний

#5 2017-04-23 14:35:05

ivan
Учасник
Зареєстрований: 2016-09-16
Повідомлень: 8

Re: Arduino&Processing

Решил применить  функции связанные с действиями мышки. В коде использовал готичный шрифт.
Для работы программы скачайте шрифт и положите его в папку с проэктом.
Как пример использования вполне сгодится .... Ардуину пока не прилепил - но я думаю что
особого труда это не составит ) пост и код еще будет редактироваться ...
Управляющий слайдер  ...

PFont font;  
String Value="0";
void setup()
     {
      size(400, 200);
      background(220);
      noStroke();
      fill(200);
      rect(195,5,10,190);
      font = createFont("cyrillicgoth_medium.ttf",25);
      textFont(font);
      fill(0);
      text("0",180,195);
      text("100",160,20);
     }

void draw()
     {
       stroke(0);
       smooth();
       //text(Value,5,50);
     } 
void mouseDragged()
     {
      if(mouseX>195 && mouseX<205 && mouseY>5 && mouseY<190 )
         { 
           background(220);
           fill(200);
           rect(195,5,10,190);
           fill(0);
           rect(195,mouseY,10,195-mouseY);
           Value = "Present Val:  "+str(int((195-mouseY)*0.5263));
           textFont(font);
           fill(0);
           text("0",180,195);
           text("100",160,20);
           text(Value,5,100);
         } 
     }   

Все это конечно хорошо ... но зачем придумывать велосипед если похожие вещи уже были написаны
и включены в библиотеку. Называется controlP5. Для установки - /Sketch/Import library/Add library/
В фильтре вбиваем название controlP5 и жмем Install...
С библиотекой нужно разобраться - много интересных вещей для контроля ...

Остання редакція ivan (2017-04-30 16:45:06)

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму