Путешествие в страну Freeduino, часть 7.1 Записки Самоделкина / 27.09.2011 Давно я не писал на эту тему. Причин тому было несколько. Одна из причин - это слишком активный отдых летом, нужно было и на даче пройти еще один строительный уровень, съездить куда-нибудь недели на две отдохнуть и заодно красивых фоток нащелкать, короче, настроиться было невозможно (получалось только вечером заглянуть на сайт почитать посты, да форум помодерить). Вторая причина - я задумал очередной проект, но для его осуществления пока не хватает отдельных плат и деталей (но если все получится, то детям такой проект должен понравится, так как все будет по-взрослому).Но вернемся к новой теме проекта, которую я хочу описать.Началось все с покупки нового сотого телефона. Впервые в жизни мне стало жалко в первые же дни играться с его прошивкой. А просто им пользоваться, как обычным телефоном, не совсем интересно. Я начал искать, каким образом можно его еще использовать (сразу почему-то подумалось про freeduino) и нашел вот этот ролик. Это меня сразу заинтересовало. Так как пульты управления в робототехнике - вещь полезная. Да и идея поработать с беспроводной связью меня тоже привлекла.Был тщательно прочесан интернет на эту тему, найдены несколько интересных решений, которые и взяты за основу.После чего нужно было докупать недостающие модули, и я отправился в свой любимый магазин, где меня уже принимают как родного, и купил:XBee Shield v5 USBи XBee-PRO с чип-антеннойПозже я понял, что надо было покупать все по две штуки, но в данный момент я этого еще не знал. Я спешил домой, Shield-ы нужно было еще доработать, кое-что припаять (как всегда взял Shield - а`ля, доделай сам). После пайки и установки модуля XBee-PRO мой Shield стал выглядеть так.Для начала я собрал уже знакомую схему из трех светодиодов. Запустил 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); //set serial to 9600 baud rate}void loop(){ if (Serial.available() > 0) { message = Serial.read(); if (message == 'R'){ redLED = 255; ylLED = 255; grLED = 255; } if (message == 'r') redLED = 0; ylLED = 0; grLED = 0; } } analogWrite(redLEDPin, redLED);analogWrite(grLEDPin, grLED);analogWrite(ylLEDPin, ylLED);} Идея в том, что когда вы вводите в окне мониторинга ' R ' и жмете Enter, все три светодиода включаются, а когда вводим ' r ' - они выключаются. И пока я планирую удаленно все включать одной кнопкой. Код взят и слегка изменен по этой ссылке.Теперь мне нужно было превратить телефон в пульт с одной кнопкой. Для этого понадобится скачать TouchOSC редактор (скачать можно по ссылке). Хочу сразу отметить, что этот редактор позволяет создавать модули для программы TouchOSC, которая может работать не только на iPhone/IPod Touch и IPad, но и есть версии для Android. И существуют версии редакторов для OS X, для Windows и Linux, которые можно скачать там же. Для создания модуля открыл программу (инсталляция не требуется). Щелкнул правой кнопкой мыши на черном поле и выберал Toggle Button.Оставил имя "toggle1". Сохранил под именем Button.Затем через iTunes залил на телефон. В настройках TouchOSC на телефоне установил...HOST 192.168.0.1 (IP компьютера к которому телефон будет подключатся) PORT (outgoing) 8000PORT (incoming) 9000LOKAL IP address 192.168.0.3 (это IP пропишется автоматически) Затем я скачал программу Processing (это можно сделать, если перейти по ссылке http://processing.org/download/) и использовал данный sketch http://www.sparkfun.com/images/ardu-proc/processing_code.zip. Ничего не меняя, запустил на выполнение, нажав кнопку воспроизведения. Processing и Arduino - редакторы очень схожие в интерфейсе и выглядят почти идентично. А вот, что из этого получилось. С помощью телефона я уже мог управлять программой на компьютере.И теоретически светодиоды на плате тоже должны были реагировать на команды, поступающие через USB порт, но этого не произошло Немного подумав, я добавил в код следующую строку:println (Serial.list ()); и это позволило найти, где висит мой COM4.Внес изменения в строку arduinoPort = new Serial(this, Serial.list()[0], 9600);заменил на arduinoPort = new Serial(this, Serial.list()[1], 9600);И УРА! ВСЕ ЗАРАБОТАЛО Но это только начало истории, продолжение следует...Посты по теме: Путешествие в страну Freeduino, часть 6 Путешествие в страну Freeduino, часть 5.2 Путешествие в страну Freeduino, часть 5.1 Путешествие в страну Freeduino, часть 4.2 Путешествие в страну Freeduino, часть 4.1 Путешествие в страну Freeduino, часть 3 Путешествие в страну Freeduino, часть 2 Путешествие в страну Freeduino, часть 1 arduino freeduino робототехника