Подружить Arduino с компьютером очень просто. Данные передаются через виртуальный порт RS-232(COM).
Итак переходим к действиям. Три светодиода будут управляться с клавиатуры, нажатием клавиш влево и вправо. Зажигаем первый светодиод и нажимаем клавишу влево, горящий светодиод тухнет, а слева от него загорается. Когда позиция горящего светодиода крайняя, нажатие в ту же сторону приведет к переходу на светодиод с противоположной стороны.
На компьютере управляющая программа будет отображать позицию горящего светодиода.
Схема со светодиодами, крайне проста.
LED1-3 светодиоды подключенные к ШИМ-выводам. ШИМ потребуются для фэйд-эффекта.
R1 двухсотомный резистор. Для ограничения тока проходящего через светодиод, иначе диод можно спалить.
Небольшая программа для Arduino. (Скачиваем)
// Serial LED control // compblog.vlukyanov.com //Объявляем переменные. int pin[] = {3, 5, 6}; // Объявляем массив в котором указанны номера выводов int i = 0; // Переменная для определения текущей позиции горящего светодиода int prev_i = 0; // Переменная для запоминания предыдущего светодиода // Настраиваем Arduino void setup() { // Запускаем цикл, в котором определяем контакты 3,5,6 как выводные for (int t = 0; t < 3; t++ ) // > { pinMode(pin[t], OUTPUT); } Serial.begin(9600); // Инициализируем перередачу данных по COM-порту на скорости 9600 бод } void loop() { // Запускаем цикл без каких либо действий // Только когда данные придут на COM-порт продолжится выполнение программы дальше этой строки while (Serial.available() == 0); // Данные пришли, считываем их в переменную i i = Serial.read(); // Постепенно гасим предыдущий светодиод, понижая яркость с 255 до 0; for (int j=255; j > 0; j--) { analogWrite(pin[prev_i],j); delay(1); // Небольшая задержка } analogWrite(pin[prev_i],0); // Окончательно гасим светодиод // Пришедшее значение i используем для включения следующего светодиода for (int j=0; j < 255; j++) // > { analogWrite(pin[i],j); delay(1); } // Запоминаем значение светодиода, чтоб потом гасить его, когда появится новое значение на COM-порту prev_i = i; }
Теперь нужна программа на компьютере, которая будет посылать необходимые данные в COM-порт и отображать данные на экран. Processing хорошо подойдет.
IDE Arduino основана на processing, поэтому они очень похожи как внешне, так и по синтаксису.
Тоже довольно простая программа на Processing. (Скачиваем)
// Serial LED control // compblog.vlukyanov.com import processing.serial.*; // подключаем библиотеку для общения по COM-порту // в IDE Arduino это сделанно по умолчанию, тут надо это делать дополнительно int value = 1; // переменная которую будем отправлять в COM-порт для Arduino Serial port; // переменная обозначающая порт PFont f; // переменна для шрифта void setup() { size(500,500); // создаем окно 500 на 500 px f = createFont("Colibri", 15,true); // определяем шрифт для данного окна port = new Serial(this, "COM5", 9600); // задаем параметры порта, у меня он пятый } void draw() { // создаем окно background(0, 0, 0); // черный бэкграунд для окна textFont(f,200); // создаем текст text(value-1,200,300); // выводим в центр значение переменной value } void keyPressed() { // обрабатываем нажатия клавиш // переменная value сдвинута от нулевой позиции на 2, чтоб не загонять ее в минус if (keyCode == LEFT) { // при нажатии клавиши влево value = value + 1; // увеличиваем значение value на 1 if ( value > 4 ) value=2; // если она оказывается вне пределов третьего светодиода - сбрасываем значение в 2 port.write(value-2); // и отправляем это значение в COM-порт } else if (keyCode == RIGHT) { // при нажатии клавиши вправо value = value - 1; // уменьшаем значение value на 1 if ( value < 2 ) value=4; // если она оказывается вне пределов первого светодиода - сбрасываем значение в 4 > port.write(value-2); // и отправляем это значение в COM-порт } else { } // в остальных случаях ничего не делаем }
Все относительно просто. Программа на компьютере передает цифровые значения в Com-порт, Arduino гасит текущий светодиод и зажигает светодиод с номером пришедшем через порт.
При запуске из Proceesing сообщает, что не работает с 64 разрядным портом.
Да, помню что-то были проблемы с портами из-за разрядности.
Просто скачай 32-х битную версию processing. Мне помогло.
Владимир, в скетче процессинг Вы явно указываете что ардуина подключена к СОМ5. может быть Вы знаете как сделать так чтобы программа сама определяла к какому СОМ порту подкл устройство, ведь такой не будет без изменений работать на другом компе?
Hi there, all is going fine here and ofcourse
every one is sharing information, that’s really excellent, keep up writing.
My blog post bonus pari sportif
Hello Falta, merci d’avoir pris le temps de poster ton commentaire, n’hésites pas à revenir régulièrement échanger sur ce blog qui est fait pour ce,&;#8230aAmicalementlStéphane Colle