Итак, давайте начнем ...
Есть более пятидесяти глав в этой серии, но я рекомендую начать с этой нулевой главы. Но Вы так же можете начать с любой, воспользовавшись усказателем статей здесь . После того как вы ознакомитесь с материалом с нулевой главы до тринадцатой вы сможете свободно обращаться к любой другой главе. В течение первых нескольких тем, мы так же будем обращаться к книге: Приступая к работе с Arduino (Massimo Banzi)
а также вам необходимо иметь основные знания по электронике.
Прежде всего давайте обратимся к пониманию системы Arduino. Что такое Arduino.
Arduino — аппаратная вычислительная платформа, основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wiring. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере.
Итак, мы имеем аппаратные средства и программное обеспечение. Наше оборудование будет представлять собой персональный компьютер, который может работать c Arduino IDE (интегрированная среда разработки), программное обеспечение, а также непосредственно модуль Arduino.
Наше программное обеспечение IDE - очень похоже на обычный текстовый редактор, но отличается тем, что может переслать написанную программу ( скетч, sketch ) непосредственно в микроконтроллер. Эти эскизы программ пишутся на языке близком языку С. И затем интерпретируются специальным загрузчиком (bootloader) в программное обеспечение, которое понимает процессор. Так как Arduino – это система с открытым исходным кодом, то любой желающий может приобрести пустой микроконтроллер и установить загрузчик на нем, или даже написать свою собственную загрузчик или модифицировать исходный.
Теперь посмотрим, что собой представляет Arduino.
Мы видим микроконтроллер, установленный в плату с интерфейсом USB, разъем питания постоянного тока, а также множества входных и выходных гнезд (о них позже). Плюс несколько светодиодов и прочие компоненты. Это плата
Uno , и в ней устанавливается микроконтроллер ATmega328.
Есть также больше по размеру, меньше, и в будущем будут новые платы – каждая отличается по физическим размерам, типу интерфейса и пр. В наших пректах мы будем применять платы аналогичные Duemilanove.
Наличие линейки дополнительных гнезд со входами/выходами микроконтроллера, гнезд питания, земли упрощает подключение внешних модулей, сервомоторов.
Итог на данный момент - к Arduino можно подключить различные формы входных и выходных сигналов, а также создать программу для обработки входных сигналов, формированию выходных сигналов. Например, можно создать температурный датчик - когда температура в помещении поднимается выше определенной величины, Arduino может подать сигнал тревоги.
Входными датчиками могут быть кнопки, переключатели, регуляторы, беспроводные датчики и т.д. Выходными элементами могут быть светодиоды, электромоторы, насосы, жидкокристаллические, светодиодные дисплеи, и т.д. В общем, все, что может быть включено или выключено, или регулироваться электрическими сигналами, можно управлять с помощью Arduino.
Чтобы облегчить задачу, вы можете купить или сделать самостоятельно подключаемый модуль – шильд.
Шильд - это интерфейсная плата, которая устанавливается на верхнюю часть вашего Arduino, и имеет различные типы устройств. Например, Это может быть модуль для подключения к сети Интернет, джойстик для игр или управления роботом, или дисплей.
Так что с правильным скетчем, шильдом вы можете выполнить какие-либо задачи.
Что нам нужно для учебы на данный момент для того, чтобы фактически сделать что-то.
Вам нужны три вещи:
- Персональный компьютер, Linux, MacOS или Windows, с портом USB, с доступом в Интернет. Если вы читаете читаете эту статью - значит вы в сети,
- кабель USB, который соответствует вашему разъему платы
- Arduino или совместимая плата. Большинство плат продаются вместе с кабелем USB. Проверьте, прежде чем покупать.
Обновление - 10/01/2013: Я написал эти учебники в период, охватывающий более двух лет. За это время несколько версий Arduino IDE были опубликованы. В течение следующих нескольких недель я постараюсь обновить учебники, чтобы они работали с последним Arduino v1.0.1 (или новее) IDE. В то же время, вы можете запустить как V23 (старая) и v1.0.1 (и более) на этом же компьютере. Любой материал учебника, обновленный 24.11.2012 работает с новой IDE. Если возникли вопросы - напишите письмо Джону на tronixstuff точка ком.
И теперь для начальной подготовки - пожалуйста, установите вашу Arduino IDE программное, следуя инструкциям здесь .
В этом учебнике некоторые скетчи имеют расширение PDE, а некоторые INO. Здесь нет ошибки. Расширение PDE имели счетчи в IDE до версии v1.0. Более старшие версии поддерживают оба вида расширения.
Я, надеюсь, Вы понимаете, что Arduino может питаться от USB порта компьютера. Но, если вы хотите использовать свой запрограммированный Arduino без компьютера, вы должны подключить к DC гнезду внешний источник питания.
Упражнение 0.1
Давайте еще немного поморгаем светодиодами. Давайте создадим с Вашей Arduino линейку светодиодов, моргающих слева направо и справа налево, и используя не один, а восемь штук. Заставим моргать светодиоды в бесконечном цикле последовательности 1-2-3-4-5-6-7-8-7-6-5-4-3-2-1-2-3 - ... с задержкой в одну секунду .
Вам понадобится:
- Ваши стандартные настройки Arduino (компьютер, кабель, Uno или совместимый)
- 8 светоизлучающих диодов.
- 8 резисторов 360 Ом 0,25 Вт. Резисторы необходимы для ограничения тока светодиодов.
- Макетная плата и соединительного провода
- видеокамера (опционально) - для документирования Вашего успеха! Результат работы можете выложить в Youtube
Предлагаю сделать задержку переменной. Так что вы могли легко изменить её .
В исходном проекте «мигающий светодиод», описанный в книге Массимо Банци, использовался цифровой вывод 13. На этот раз, вы можете использовать цифровые контакты со 2 до 9. Аппаратная сторона проста - подключите провод от каждого цифрового контакта к аноду светодиода, затем подключите соединительным проводом резистор 360 Ом резистор и далее катод светодиода на землю. См. схему ниже:
На макетной плате эта схема должна выглядеть примерно так:
Теперь ваша задача - написать код! Но прежде чем сделать это, надо написать план работы или алгоритм. Например, для этого упражнения вы могли бы написать что-то вроде ...
0.1 алгоритм работы программы.
Устанавливаем, что все контакты мы будем использовать как выходы
Создаем переменную для хранения длительность задержки в миллисекундах
Начинаем бесконечно повторяемый цикл
включить контакт 2, ждать установленное время задержки, выключить его
включить контакт 3, ждать установленное время задержки, выключить его
Повторите эти операции для остальных выходов - с 4 до 9
Затем сделайте то же самое, но в обратном направлении до контакта 3
Окончание бесконечного цикла
Что получилось у Вас? Ни чего страшного нет, если у вас ни чего не получилось. Так как Вы учитесь. Но чтобы сэкономить ваше время ниже приведен код для данной схемы
/*
exercise 0.1 - KITT emulator!
Created 02/04/2010
By John Boxall
http://tronixstuff.com...
Blinks LEDs from output pin 2~9 in a forwards<>backward motion
The circuit:
an LED is connected to each output pin from 2 to 8, thence to a 360 ohm resistor, then to ground (pin 4 on the bottom left of the Arduino Duemilanove).
based on an orginal by H. Barragan for the Wiring i/o board
*/
// The setup() method runs once, when the sketch starts
int del=100; // sets a default delay time, 100 milliseconds (one tenth of a second)
void setup()
{
// initialize the digital pins as outputs:
// later on there will be easier ways to do this
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
// the loop() method repeats indefinitely until you turn off the power
void loop()
{
digitalWrite(2, HIGH); // turn on LED on pin 2
delay(del); // wait (length determined by value of 'del')
digitalWrite(2, LOW); // turn it off
digitalWrite(3, HIGH); // turn on LED on pin 3
delay(del); // wait
digitalWrite(3, LOW); // turn it off
digitalWrite(4, HIGH); // turn on LED on pin 4
delay(del); // wait
digitalWrite(4, LOW); // turn it off
digitalWrite(5, HIGH); // turn on LED on pin 5
delay(del); // wait
digitalWrite(5, LOW); // turn it off
digitalWrite(6, HIGH); // turn on LED on pin 6
delay(del); // wait
digitalWrite(6, LOW); // turn it off
digitalWrite(7, HIGH); // turn on LED on pin 7
delay(del); // wait
digitalWrite(7, LOW); // turn it off
digitalWrite(8, HIGH); // turn on LED on pin 8
delay(del); // wait
digitalWrite(8, LOW); // turn it off
digitalWrite(9, HIGH); // turn on LED on pin 9
delay(del); // wait
digitalWrite(9, LOW); // turn it off
digitalWrite(8, HIGH); // turn on LED on pin 8
delay(del); // wait
digitalWrite(8, LOW); // turn it off
digitalWrite(7, HIGH); // turn on LED on pin 7
delay(del); // wait
digitalWrite(7, LOW); // turn it off
digitalWrite(6, HIGH); // turn on LED on pin 6
delay(del); // wait
digitalWrite(6, LOW); // turn it off
digitalWrite(5, HIGH); // turn on LED on pin 5
delay(del); // wait
digitalWrite(5, LOW); // turn it off
digitalWrite(4, HIGH); // turn on LED on pin 4
delay(del); // wait
digitalWrite(4, LOW); // turn it off
digitalWrite(3, HIGH); // turn on LED on pin 3
delay(del); // wait
digitalWrite(3, LOW); // turn it off
}