Я начинающий радиолюбитель и интересуюсь программированием. Вдохновившись блогом Arduino на Хабре, захотел совместить два своих увлечения, решился на покупку своего Arduino-кита.
В этом посте я расскажу про некоторые интернет-магазины и их наборы, а так же покажу свой первый проект:

Во-первых, надо выбрать набор Arduino + мелочь.
Такой выбор удобен для тех случаев, если Вы только начинаете заниматься электроникой и не имеете у себя достаточного количества электронных компонентов (как в моем случае) или же нет возможности покупать их.
Амперка(блог на Хабре)

Хороший магазин, есть три вида готовых наборов и множество мелочевки. Единственный минус (лично для меня) — оплата через Robokassa(комиссия ~10%) и доставка EMS.
Freeduino.ru

Русский фридуино, несколько вариантов исполнения (обычный/nano/MaxSerial/Through-Hole и их варианты для ручной сборки), множество shield-плат. Из недостатков можно только назвать сравнительно маленький выбор мелочевки.
RoboCraft.ru
Магазин + блог о робототехнике и электронике.

Есть как и оригинальный Arduino, так и свой аналог с некоторыми изменениями. Есть некоторое количество мелочевки и сравнительно маленький(по количеству компонент) набор.
Перейдем к зарубежным магазинам.
SparkFun Electronics

Очень большой выбор электроники и принадлежностей. Набор изобилует деталями и подходит для полноценного экспериментирования. Минус — немного дороже следующего набора, но с аналогичным комплектом.
Adafruit Industries

Большой магазин электроники и принадлежностей. Особенность — электроника необычная, начиная от поющих ручек до Chumby Hacker Board(полноценный Linux-компьютер, обзор на Хабре).
На arduino-наборе остановимся поподробнее.
Полный состав:
На последнем варианте я и остановился. Заказал, оплатил через PayPal, процедура аналогична заказу с любого другого интернет-магазина. Получил посылку ровно через две недели(Почта России удивительно быстра).
Перепробовав схемы из примеров, захотел смастерить что-нибудь свое, совместив в одном проекте разные аспекты программирования этого замечательного контроллера. Из множества вариантов выбрал восьмибитный бинарный счетчик с кнопкой, так как здесь совмещаются такие моменты как циклы (работа с множеством светодиодов), прерывания(работа с кнопкой), вывод в COM-порт (для отладки), математика(для расчетов), работа с EEPROM (запоминание последнего состояния).
Фото:

Принципиальная схема:

Исходный код скетча:
В этом посте я расскажу про некоторые интернет-магазины и их наборы, а так же покажу свой первый проект:

Во-первых, надо выбрать набор Arduino + мелочь.
Такой выбор удобен для тех случаев, если Вы только начинаете заниматься электроникой и не имеете у себя достаточного количества электронных компонентов (как в моем случае) или же нет возможности покупать их.
Амперка(блог на Хабре)

Хороший магазин, есть три вида готовых наборов и множество мелочевки. Единственный минус (лично для меня) — оплата через Robokassa(комиссия ~10%) и доставка EMS.
Freeduino.ru

Русский фридуино, несколько вариантов исполнения (обычный/nano/MaxSerial/Through-Hole и их варианты для ручной сборки), множество shield-плат. Из недостатков можно только назвать сравнительно маленький выбор мелочевки.
RoboCraft.ru
Магазин + блог о робототехнике и электронике.

Есть как и оригинальный Arduino, так и свой аналог с некоторыми изменениями. Есть некоторое количество мелочевки и сравнительно маленький(по количеству компонент) набор.
Перейдем к зарубежным магазинам.
SparkFun Electronics

Очень большой выбор электроники и принадлежностей. Набор изобилует деталями и подходит для полноценного экспериментирования. Минус — немного дороже следующего набора, но с аналогичным комплектом.
Adafruit Industries

Большой магазин электроники и принадлежностей. Особенность — электроника необычная, начиная от поющих ручек до Chumby Hacker Board(полноценный Linux-компьютер, обзор на Хабре).
На arduino-наборе остановимся поподробнее.
Полный состав:
- Arduino Uno с ATMega328, плата для прототипирования и акриловая подложка
- 75 проводов разных цветов и длин.
- Брошюра с некоторыми проектами для начинающих(электронный вариант) и 13 накладных листов
- USB шнур
- Крепление для «кроны» в качестве дополнительного питания
- Компоненты
- RGB светодиод (x1)
- Датчик давления (x1)
- 5мм красные светодиоды (x10)
- 5мм зеленые светодиоды (x10)
- 10мм синий светодиод (x1)
- Игрушечный моторчик (x1)
- Маленькая сервомашинка (x1)
- 8-Bit Shift Register (74HC595)(Восьмибитный регистр?) (x1)
- Пьезоизлучатель (x1)
- Кнопки (x2)
- Потенциометр (10k) (x1)
- Фоторезистор (x1)
- Температурный датчик (TMP36)(x1)
- Реле (5В DPDT) (x1)
- Транзисторы (P2N222A) (x2)
- Резисторы (560 Ом x25, 2.2кОм x3, 10кОм x3)
- Диоды (1N4001) (x2)
На последнем варианте я и остановился. Заказал, оплатил через PayPal, процедура аналогична заказу с любого другого интернет-магазина. Получил посылку ровно через две недели(Почта России удивительно быстра).
Перепробовав схемы из примеров, захотел смастерить что-нибудь свое, совместив в одном проекте разные аспекты программирования этого замечательного контроллера. Из множества вариантов выбрал восьмибитный бинарный счетчик с кнопкой, так как здесь совмещаются такие моменты как циклы (работа с множеством светодиодов), прерывания(работа с кнопкой), вывод в COM-порт (для отладки), математика(для расчетов), работа с EEPROM (запоминание последнего состояния).
Фото:

Принципиальная схема:

Исходный код скетча:
- /*
- Бинарный счетчик v0.2
- Программа была написана как пример работы с вводом/выводом через COM,
- прерываниями, EEPROM.
- Принцип действия в комментариях к коду
- */
- #include <EEPROM.h>//подключаем библиотеку EEPROM
-
- unsigned int i=0;//переменная i - наш счетчик, 30 лет на рынке программирования =)
-
- void setup()
- {
- pinMode(2, OUTPUT);//устанавливаем пин(2) кнопки как вывод
-
- for(int i=6;i<=13;i++)//перебыраем все пины светодиодов(6-13)
- {
- pinMode(i, OUTPUT);//устанавливаем текущий пин как вывод
- digitalWrite(i, LOW);//и устанавливаем низкий потенциал на текущий светодиод
- }
-
- attachInterrupt(0, incr, RISING);/*устанавливаем прерывание 0(цифровой пин 2),
- чтобы при повышении(RISING) потенциала вызывалась функция incr()*/
- i=EEPROM.read(0);//считываем в счетчик значение из памяти по адресу 0
- bin(i);//устанавливаем на светодиоды значение, полученное из памяти
- Serial.begin(9600);//начинаем серийное соединение со скоростью 9600 бод
- Serial.println(i);//пишем на серийный выход текущее значение сччетчика
- delay(100);//ждем 100 миллисекунд.
- }
-
- void bin(int n)//функция переводит переданное ей значение n в двоичный вид и выводит его на светодиоды
- {
- for (int i=7; i>=0; i--)//т.к. счетчик восьмибитый, то цикл от 7 до 0
- {
- int bit = ((n >> i) & 1);//высчитываем текущий бит
- if(bit==1)digitalWrite(i+6, HIGH); else digitalWrite(i+6, LOW);//в зависимости от текущего значения бита включаем или выключаем светодиод
- }
- }
-
- void incr()//функция инкремента счетчика при нажатии на кнопку
- {
- i++;//увеличиваем счетчик
- if(i==256) i=0;//если достигли предела восьми бит - обнуляем счетчик
- EEPROM.write(0, i);//пишем текущее значение в память по адресу 0
- bin(i);//вызываем функцию расчета и вывода текущего значения
- Serial.println(i);//пишем в серийный порт текущее значение i
- delay(100);//ждем 100 миллисекунд
- }
-
- void loop()
- {
- //пустой цикл
- }
-
* This source code was highlighted with Source Code Highlighter.