Как стать автором
Обновить

Наборы Arduino для начинающих и первый проект

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

В этом посте я расскажу про некоторые интернет-магазины и их наборы, а так же покажу свой первый проект:
Adafruit ARDX Experimentation Kit for Arduino (Uno) - v1.3


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

Амперка(блог на Хабре)


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

Freeduino.ru


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

RoboCraft.ru
Магазин + блог о робототехнике и электронике.



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

Перейдем к зарубежным магазинам.

SparkFun Electronics


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

Adafruit Industries
Adafruit ARDX Experimentation Kit for Arduino (Uno) - v1.3

Большой магазин электроники и принадлежностей. Особенность — электроника необычная, начиная от поющих ручек до 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 (запоминание последнего состояния).

Фото:


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


Исходный код скетча:
  1. /*
  2. Бинарный счетчик v0.2
  3. Программа была написана как пример работы с вводом/выводом через COM,
  4. прерываниями, EEPROM.
  5. Принцип действия в комментариях к коду
  6. */
  7. #include <EEPROM.h>//подключаем библиотеку EEPROM
  8.  
  9. unsigned int i=0;//переменная i - наш счетчик, 30 лет на рынке программирования =)
  10.  
  11. void setup()
  12.  pinMode(2, OUTPUT);//устанавливаем пин(2) кнопки как вывод
  13.  
  14.  for(int i=6;i<=13;i++)//перебыраем все пины светодиодов(6-13)
  15.  {
  16.   pinMode(i, OUTPUT);//устанавливаем текущий пин как вывод
  17.   digitalWrite(i, LOW);//и устанавливаем низкий потенциал на текущий светодиод
  18.  }
  19.  
  20.  attachInterrupt(0, incr, RISING);/*устанавливаем прерывание 0(цифровой пин 2),
  21.                    чтобы при повышении(RISING) потенциала вызывалась функция incr()*/
  22.  i=EEPROM.read(0);//считываем в счетчик значение из памяти по адресу 0
  23.  bin(i);//устанавливаем на светодиоды значение, полученное из памяти
  24.  Serial.begin(9600);//начинаем серийное соединение со скоростью 9600 бод
  25.  Serial.println(i);//пишем на серийный выход текущее значение сччетчика
  26.  delay(100);//ждем 100 миллисекунд. 
  27. }
  28.  
  29. void bin(int n)//функция переводит переданное ей значение n в двоичный вид и выводит его на светодиоды
  30. {
  31.  for (int i=7; i>=0; i--)//т.к. счетчик восьмибитый, то цикл от 7 до 0
  32.  {
  33.   int bit = ((n >> i) & 1);//высчитываем текущий бит
  34.   if(bit==1)digitalWrite(i+6, HIGH); else digitalWrite(i+6, LOW);//в зависимости от текущего значения бита включаем или выключаем светодиод
  35.  }
  36. }
  37.  
  38. void incr()//функция инкремента счетчика при нажатии на кнопку
  39. {
  40.  i++;//увеличиваем счетчик
  41.  if(i==256) i=0;//если достигли предела восьми бит - обнуляем счетчик
  42.  EEPROM.write(0, i);//пишем текущее значение в память по адресу 0
  43.  bin(i);//вызываем функцию расчета и вывода текущего значения
  44.  Serial.println(i);//пишем в серийный порт текущее значение i
  45.  delay(100);//ждем 100 миллисекунд
  46. }
  47.  
  48. void loop()
  49. {
  50. //пустой цикл
  51. }
  52.  
* This source code was highlighted with Source Code Highlighter.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.