Путешествие в страну Freeduino, часть 7.3 Записки Самоделкина / 29.09.2011 В прошлом посте я описал, как настроить модули XBee-PRO, чтобы они могли «видеть» друг друга. Наконец, можно рассказать, как я добился возможности управлять переключением светодиодов с телефона по беспроводной связи (это можно увидеть в представленном клипе ниже).Итак, для начала я изменил код загруженный на Freeduino Nano (см. Путешествие в страну Freeduino, часть 7.1). Открыв arduino-0017, изменил код следующим образом… int message = 0; int redLEDPin = 9; int grLEDPin = 11;int ylLEDPin = 10;int redLED = 0;int grLED = 0;int ylLED = 0;void setup() { Serial.begin(9600); }void loop(){ if (Serial.available() > 0) { message = Serial.read(); if (message == 'R'){ redLED = 255; } if (message == 'r'){ redLED = 0; } if (message == 'Y'){ ylLED = 255; } if (message == 'y'){ ylLED = 0; } if (message == 'G'){ grLED = 255; } if (message == 'g'){ grLED = 0; // Set redLED to 0 (off) } Serial.flush(); } analogWrite(redLEDPin, redLED);analogWrite(grLEDPin, grLED);analogWrite(ylLEDPin, ylLED);} Теперь каждым светодиодом можно управлять по отдельности. После загрузки кода на Freeduino Nano проверил как все работает, открыв окно мониторинга и вводя по очереди ‘R’ ‘G’ ‘Y’ ‘r’ ‘g’ ‘y’(см. Путешествие в страну Freeduino, часть 7.1). Затем запустил TouchOSC редактор и создал новый модуль с именем Button1. И создал три кнопки управления под каждый светодиод. Загрузил модуль на телефон.Затем открыл программу Processing и тоже подкорректировал прежний код. Так он стал выглядеть:import oscP5.*; import netP5.*; import processing.serial.*; Serial arduinoPort; OscP5 oscP5; int redLED = 0; int grLED = 0;int ylLED = 0;int [] led = new int [4]; void setup() { size(100,300); noStroke(); oscP5 = new OscP5(this,8000); arduinoPort = new Serial(this, Serial.list()[1], 9600);println (Serial.list ()); }void oscEvent(OscMessage theOscMessage) { String addr = theOscMessage.addrPattern(); if(addr.indexOf("/1/toggle") !=-1){ int i = int((addr.charAt(9) )) - 0x30; led[i] = int(theOscMessage.get(0).floatValue()); } }void draw() { background(100); if(led[1] == 0){ arduinoPort.write("r"); redLED = 0; } if(led[1] == 1){ arduinoPort.write("R"); redLED = 255; }fill(redLED,0,0); ellipse(50, 50, 50, 50); if(led[2] == 0){ arduinoPort.write("y"); ylLED = 0; } if(led[2] == 1){ arduinoPort.write("Y"); ylLED = 255; }fill(ylLED,ylLED,0); ellipse(50, 150, 50, 50); if(led[3] == 0){ arduinoPort.write("g"); grLED = 0; } if(led[3] == 1){ arduinoPort.write("G"); grLED = 255; }fill(0,grLED,0); ellipse(50, 250, 50, 50); } Запустил sketch на исполнение (Freeduino Nano должна быть подключена, иначе будет выдавать ошибку… не найдет COM порт), на телефоне открыл TouchOSC. Что получилось - можно увидеть в двух следующих роликах:После этого я переставил джамперы, как изображено на фотографии:и обеспечил для Freeduino Nano автономное питание. К компьютеру подключил USB Shield Shield с установленным модулем XBee. Заново запустил sketch в Processing. И получил желаемый результат: его вы видели в клипе, в самом начале поста. Продолжение следует...PS Но это будет другая история.Посты по теме: Путешествие в страну Freeduino, часть 7.2 Путешествие в страну Freeduino, часть 7.1 Путешествие в страну Freeduino, часть 6 Путешествие в страну Freeduino, часть 5.2 Путешествие в страну Freeduino, часть 5.1 Путешествие в страну Freeduino, часть 4.2 Путешествие в страну Freeduino, часть 4.1 Путешествие в страну Freeduino, часть 3 Путешествие в страну Freeduino, часть 2 Путешествие в страну Freeduino, часть 1 arduino freeduino робототехника