Пример Physical Pixel – Обмен данными с компьютером источник <<<назад
Загрузим стандартный пример
«Physical Pixel» через меню File \ Sketchbook \ Examples \
Communication \ PhysicalPixel. Эта программа ждет данные от компьютера.
При получении символа ‘H’ тестовый индикатор загорается, при получении
символа ‘L’ – гаснет. Разберем ее исходный код:
int outputPin =
13;
//здесь храним номер контакта
int
val;
//здесь будет храниться принятый символ
void setup()
{
Serial.begin(9600);
//установка порта на скорость 9600 бит/сек
pinMode(outputPin, OUTPUT); //устанавливаем 13 контакт в режим вывода
}
void loop()
{
if (Serial.available()) { //если есть принятый символ,
val =
Serial.read();
// то читаем его и сохраняем в val
if (val == 'H')
{
// если принят симовол 'H',...
digitalWrite(outputPin, HIGH); // то включаем светодиод
}
if (val == 'L')
{
// если принят симовол 'L',
digitalWrite(outputPin, LOW); // то выключаем светодиод
}
}
}
Обратите внимание на вложенные условия и порядок следования отрывающих
и закрывающих фигурных скобок. Для удобства чтения кода программы
каждый следующий уровень вложенности сдвинут вправо. Кроме того,
редактор помогает читать код – если Вы поставите курсор справа от
скобки, он выделит соответствующую ей парную скобку.
--------------------------
Как проверить работу этой программы после того, как Вы загрузите ее в
микроконтроллер? Нужно найти способ отправлять символы на COM-порт
компьютера, чтобы микроконтроллер принимал и обрабатывал их. Существует
множество вариантов решения этой задачи.
--------------------------
Используем встроенный в среду разработки монитор COM-порта
--------------------------
Это наиболее простой, и понятный начинающим метод.

На панели инструментов есть кнопка монитора COM-порта. Вызвав монитор
убедитесь, что выбрана та же самая скорость обмена, что и в программе
микроконтроллера. Теперь можно вводить любые символы в поле ввода
справа, и нажимать кнопку «Send» – введенные символы будут отправлены в
порт, и там их примет Ваша программа. Введите там латинскую букву «H»,
нажмите «Send» – тестовый светодиод загорится. Если послать «L» –
погаснет. Кстати, все данные, которые Ваша программа будет посылать на
COM-порт будут выводиться в черном окне снизу.
Используем программу эмуляции терминала HyperTerminal
--------------------------
Это немного более сложный в реализации вариант обмена.
--------------------------
В состав Windows обычно включена программа эмуляции терминала
HyperTerminal. В Windows XP ее можно найти в меню Пуск \ Все программы
\ Программы \ Стандартные \ Связь \ HyperTerminal. При запуске нужно
отказаться от создания подключения, выбрать меню Файл \ Свойства. В
появившемся диалоге выбрать свой COM-порт, нажать «Настроить», и
настроить параметры связи в соответствии с рисунком:
Нажмите «OK» в обоих окнах, и попав в основное окно программы, любую
клавишу на клавиатуре – HyperTerminal подключится к COM-порту. Теперь
все набираемые на клавиатуре символы попадают через COM-порт в
микроконтроллер, а все, что отправляет микроконтроллер, попадает на
экран. Понажимайте клавиши «H» и «L» (следите за выбранным языком, и
регистром) – тестовый светодиод должен загораться и гаснуть.
Напишем собственную программу для ПК !
-------------------------
Этот вариант для настоящих энтузиастов, желающих программировать не
только Freeduino, но и ПК. А почему бы и нет? Нам не потребуется
изучать детали программирования последовательного порта под Windows,
или еще какие-то сложные вещи. Специально для решения подобных простых
задач существует язык Processing (http://processing.org), очень похожий
синтаксисом и даже средой разработки на Wiring, используемый для
Freeduino/Arduino.
На прилагаемом диске есть архив processing-0150.zip – рекомендуем
разархивировать содержимое на диск C:. Запустите файл
C:\processing-0150\processing.exe – вы увидите среду разработки,
похожую на Arduino.
Исходный код программы для языка Processing есть в комментариях ниже
основного текста примера Physical Pixel. Здесь он приведен с
минимальными изменениями – мы исправили открытие порта, чтобы можно
было легко заменить его номер:
import processing.serial.*;
Serial port;
void setup()
{
size(200, 200);
noStroke();
frameRate(10);
port = new Serial(this, "COM5", 9600); // !!! Здесь прописать свой COM-порт !!!
}
boolean mouseOverRect() //Возвращает истину, если курсор внутри квадрата
{
return ((mouseX >= 50)&&(mouseX <= 150)&&(mouseY >= 50)&(mouseY <= 150));
}
void draw()
{
background(#222222);
if(mouseOverRect()) // Если курсор внутри квадрата….
{
fill(#BBBBB0); // сменить цвет на поярче
port.write('H'); // послать 'H' в микроконтроллер
} else
{
// если не внутри...
fill(#666660); // сменить цвет на потемнее
port.write('L'); // послать 'L' в микроконтроллер
}
rect(50, 50, 100, 100); // нарисовать квадрат
}
Запустите программу (через меню Sketch \ Run) – появится окно с
квадратом, при помещении в который курсора мыши, будет загораться
светодиод на Freeduino.
Описание языка Processing и его возможностей выходит за рамки этого
простого повествования, но во многих примерах для Arduino в
комментариях ниже основного текста программы представлен код Processing
для ПК, взаимодействующий с Freeduino.