Рано или поздно любой владелец Arduino понимает, что в своих Arduino проектах ему просто жизненно необходимо обмениваться с микроконтроллером информацией. Возникают ситуации, когда нужно вручную, управляя с ПК или ноутбука активировать ту или иную функцию в программе микроконтроллера.
Но давайте ближе к делу. Обмениваться данными с Arduino не так сложно, но вся загвоздка в том, что данные передаются посимвольно, а это очень плохо. В поисках этой проблемы пришлось провести достаточно долгое время, пока на хабрахабре не наткнулся на одну замечательную библиотеку. Автор реализовал в ней функцию приемки чисел, т.е. вы можете отправлять контроллеру числа, состоящие более, чем из одной цифры, и он все отработает корректно. Качайте библиотеку (ссылка), распаковывайте ее в hardware\libraries\, и переходим к практике.
Первым делом напишем скетч, и загрузим его в Arduino (Freeduino)
#include void setup() {
Serial.begin(9600); // устанавливаем скорость порта
pinMode(9, OUTPUT); // устанавливаем 9 ногу как выход для динамика
} void loop()
{
long int Number; Serial.print(”Enter number: “);
Number = SerialInput.InputNumber(); // ВВодим число Serial.print(”Result = “);
Serial.println(Number * Number, DEC);
beep(500);
} void beep(unsigned char delayms){
analogWrite(9, 20); // значение должно находится между 0 и 255
// поэкспериментируйте для получения хорошего тона
delay(delayms); // пауза delayms мс
analogWrite(9, 0); // 0 - выключаем пьезо
delay(delayms); // пауза delayms мс
}
Что все это значит. Постарался код снабдить подробными комментариями, вроде все должно быть понятно. Данный скетч просит ввести вас любое число, после чего выдает его квадрат, и воспроизводит звуковой сигнал через подсоединенный к 9 пину пьезо-динамик.
И вот, самое интересное - пришло время пробовать. Для коммутации с контроллером я рекомендую использовать бесплатную программу putty. В настройках Connection type выберите Serial и вместо COM1 впишите корректный номер порта (можно подглядеть в среде программирования Arduino меню Tools->Serial Port). Нажимаем Open, и видим в консоли надпись Enter number, вводим любое число (в рамках разумного), жмем Enter, и видим результат.
Все, можно радоваться и прыгать от радости. Естественно все это можно улучшить, например сперва вывести отправить с контроллера в консоль менюшку, в которой подробно расписать команды. Например вводите число 0 - включается светодиодная подсветка, нажимаете 1 - гаснет. Таким образом можете хоть 100500 команд засунуть, лишь бы хватило памяти микроконтроллера (которой так мало). А о том, как расширить доступную память поговорим в следующий раз.
UPD: часть кода порезал парсер движка, поэтому вот исходник [СКАЧАТЬ]
Если вам понравилась (или не понравилась) статья Arduino и ПК: обмен данными, пожалуйста выскажите свое мнение о ней. Вы можете обсудить эту статью на нашем форуме
Мы будем очень рады, если вы присоединитесь к нашему дружному сообществу! Ведь вместе мы сможем делиться разными советами, техниками и руководствами, и только объединившись мы сделаем этот мир чуточку светлее :)