Показано с 1 по 10 из 42

Тема: Processing 1.0.9

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    60
    Сообщений
    213
    Вес репутации
    246

    По умолчанию Re: Processing 1.0.9

    Набросал черновик на 5 кнопок (задействованы пока только 2):

    PHP код:
    import processing.serial.*;  
    Serial port
    int x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,w,h;
    boolean stat0,stat1;
    PImage bs,dw;

    void setup()
    {
      
    port = new Serial(this"COM5"115200); // Прописываем COM-порт на котором у вас сидит Carduino
      
      
    size(800500);           //размер окна
      
    background(608090);   //цвет окна
      
      
    bs loadImage("base.png"); //загрузить изображение кнопки
      
    dw loadImage("down.png"); //загрузить изображение нажатой кнопки
      
    bs.width;           // Размер кнопки по горизонтали
      
    bs.height;         // Размер кнопки по вертикали
      
    20;      // Х начальная координата кнопки 
      
    450;     // y начальная координата кнопки
      
    x1w+30;
      
    y1450
      
    x2x1+w+10;
      
    y2450;
      
    x3x2+w+10;
      
    y3450;
      
    x420;
      
    y4400;
      
    x5w+30;
      
    y5400;
      
    image(bsxy);      // Нарисовать в окне 1 кнопку
      
    image(bsx1y1);      // Нарисовать в окне 2 кнопку
      
    image(bsx2y2);      // Нарисовать в окне 3 кнопку
      
    image(bsx3y3);      // Нарисовать в окне 3 кнопку
      
    image(bsx4y4);      // Нарисовать в окне 4 кнопку
      
    image(bsx5y5);      // Нарисовать в окне 5 кнопку
      
    }

    void draw()
    {  
      if( 
    mousePressed)
       {  
         if ( 
    mouseX >= && mouseX <= && mouseY >= && mouseY <= h)
         {  
          
    stat0=!stat0;              
          if (
    stat0) {port.write('1'); image(dwx+1y+1); } // послать =1 в Carduino нарисовать нажатую кноку
          
          
    if (!stat0) {port.write('0'); image(bsxy);}      //   послать =0 в Carduino нарисовать кноку 
         
    }
          if (
    mouseX >= x1 && mouseX <= x1 && mouseY >= y1 && mouseY <= y1 h)
         {  
          
    stat1=!stat1;              
          if (
    stat1) {port.write('3'); image(dwx1+1y1+1); } // послать =3 в Carduino нарисовать нажатую кноку
         
          
    if (!stat1) {port.write('2'); image(bsx1y1);}      //   послать =2 в Carduino нарисовать кноку 
         

         
    delay(200); 
       }  

    На ардуине залито:

    PHP код:
    int outputPin1 9;                //здесь храним номер контакта 
    int outputPin2 11;
    int val;                           //здесь будет храниться принятый символ 

    void setup() 

      
    Serial.begin(115200);              //установка порта 
      
    pinMode(outputPin1OUTPUT);      //устанавливаем 13 контакт в режим вывода 
      
    pinMode(outputPin2OUTPUT);


    void loop() 

      if (
    Serial.available() > 2)          //если есть принятый символ, 
      
    {
        
    val Serial.read();            //  то читаем его и сохраняем в val 
        
    if (val == '1'digitalWrite(outputPin1HIGH);// если=1 то включаем светодиод 
                        
        
    if (val == '0'digitalWrite(outputPin1LOW); // если=0 то выключаем светодиод
       
        
    if (val == '3'digitalWrite(outputPin2HIGH);// если=1 то включаем светодиод 
      
        
    if (val == '2'digitalWrite(outputPin2LOW); // если=0 то выключаем светодиод 
    Два непонятных косяка:

    При первом запуске проекта в процессинге на первое нажатие виртуальной кнопки - реакции никакой. Реагирует только на последующие. Причем тоже странно: команда посылается на один светодиод - загорается второй. Если после нескольких последовательных включений/выключений одного светодиода нажать на кнопку включения второго - сначала загорается предыдущий (не от своей кнопки!), и только потом - управляемый.

    Вроде бы по листингу таких смещений быть не должно - но их есть...

    Второй косяк - при экспорте папка application.windows с экзешником создается, но тот не запускается:
    "Не удается найти javaw.exe"...

    И почему-то не прошла запись команды в виде

    PHP код:
    if (stat1) {port.write('0101'); ... 
    - хотя так было бы логичнее

    __________________________________________________ ____________

    БЛИН, какой же я тупой! -

    PHP код:
     if (Serial.available() > 2
    - первый вопрос снимается...
    Последний раз редактировалось Pinin; 27.01.2010 в 15:42.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •