Первое знакомство с Arduino

Автор: admin G+   Дата: 26 января 2011



freeduino 2009Друзья! Я рад сообщить, что на сайте открывается новая рубрика в разделе самоделок, посвященная микроконтроллерной системе Arduino, и ее название - проекты для Arduino.
Буквально на днях просто безумно заинтересовался этим довольно интересным проектом, и решил попробовать себя (еще одним веским аргументом стало то, что язык программирования является C-подобным, а значит, что никаких проблем с написание программ быть не должно).

Поискав по интернету нашел очень много Arduino-подобных и полностью совместимых плат (сама платформа является открытой), и мой выбор пал на Freeduino (офф. сайт http://freeduino.ru). Не очень долго размышляя заказал себе Freeduino 2009 - полный аналог Arduino Duemilanove (с более мощным микроконтроллером ATmega328). Думаю нет смысла перепечатывать характеристики, их можете посмотреть по ссылке ранее.

arduino светодиодная подсветкаНу давайте перейдем к самой интересной части. Как и любой программист пишет в качестве своей первой программы Hello World, мы тоже должны что-нибудь сделать. Просто поморгать светодиодом показалось мне очень неинтересно, а именно поэтому я поставил перед собой задачу сделать плавное перетекание из одного цвета в другой (в моем случае у меня оказалось 2 свтодиода - синий и зеленый) их я и решил использовать.

Значит одну ногу например зеленого светодиода втыкаем в 9 цифровой порт, вторую ногу в землю (GND), синий светодиод втыкаем в 11 порт и землю. К слову, эти порты имею широтно-импульсную модуляцию (ШИМ, PWM), что позволяет нам менять напряжение на выходе. Дальше дело стало за программой. Сперва я делал как - зажигал и гасил один светодиод, потом зажигал и гасил другой, но эффект мне совсем не понравился. И тогда в цикле зажигания одного светодиода сделал затухание другого и наоборот. В общем, вот скетч:

int value = 0;
int ledpin = 9; // светодиод подключён к выводу 9
int ledblue = 11; //синенький цепляем к 11 выводу
int minn=255;
int maxx=0; void setup()
{
// ничего не устанавливаем
} void loop()
{
for(value = 0 ; value <= 255; value+=5) // напряжение постепенно увеличивается (от 0V to 5V)
{
analogWrite(ledpin, value);
analogWrite(ledblue, minn);
minn=minn-5; delay(100); // ждём 100 миллисекунд, чтобы был виден эффект
}

for(value = 255; value >=0; value-=5) // а здесь напряжение будет постепенно уменьшаться (от 5V to 0V)

{
analogWrite(ledpin, value);
analogWrite(ledblue, maxx); // тут мы зажигаем светодиод, подавая на него напряжение maxx
maxx=maxx+5; //Тут мы наоборот увеличиваем от 0 до 5В
delay(100);
}

minn=255; //устанавливаем исходные значения
maxx=0;
}

Как видите, ничего сложного тут нет. Можно примерно посмотреть как оно работает (видео не очень качественные, снимались на телефон), но общую концепцию увидеть можно.


Как это выглядит на микроконтроллере:

Как выглядит в темноте:


Запись имеет метки: ,

Посмотрите еще:

Если вам понравилась (или не понравилась) статья Первое знакомство с Arduino, пожалуйста выскажите свое мнение о ней. Вы можете обсудить эту статью на нашем форуме
Мы будем очень рады, если вы присоединитесь к нашему дружному сообществу! Ведь вместе мы сможем делиться разными советами, техниками и руководствами, и только объединившись мы сделаем этот мир чуточку светлее :)

Комментарии

  1. Александр пишет:

    Есть подобная схема, можете ознакомиться

  2. xFeeJx пишет:

    Блин, слушай, прикольно. Я по началу пытался сделать что-то подобное, но никак не понял как гасить плавно светодиоды. В скетчах нашел только как менять нпряжение с min на max, а оно вот как оказывается просто все :)

  3. Кирилл пишет:

    А как быть, если мне надо 3 светодиода чтобы вот так работали? Что-то никак не могу написать скетч под это дело.

    P.S. если подскажите, буду очень признателен.
    P.P.S. - светодиоды воткнул в 9, 10, 11 дырки, они все с PWM, как и нужно.



Оставить комментарий или два

До того, как вы отправите комментарий