Pull to refresh

Наборы 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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.