Ардуино

Аrduino для начинающих

Стартовый набор Ардуино

Допустим я новичок, что мне купить для самостоятельного изучения системы Ардуино? Такой вопрос актуален и очень интересен. Давай те же рассмотри, что купить новичку для ознакомления с этой темой. Составим список, который желательно купить себе для изучения:

  • Плата Ардуино – как вы все поняли, платы от этой компании бывают разные, но чаще всего берут UNO или Nano. Плата Arduino Nano по своим размер маленькая, а соответственно не требует много место и дешевле, для базового ознакомления как раз таки она подойдёт. UNO как раз таки стандартная плата, которая имеет много разъёмов и она универсальна. Для вашего удобства, Ардуино создали макетную плату. Она полностью универсально и в ней не нужно ничего паять. Все элементы провода просто вставляются в отверстия. Для начинающих пользователей данной системы подойдёт отлично. В такую макетную плату вставляется и сама плата Arduino.
  • Различные модули и датчики – конечно же без них сложно представить Ардуино, ведь для этих приборов она и предназначена. Существует огромный выбор датчиков и модулей. Всё зависит от ваших потребностей и бюджета. Из полезных, можно выделить датчик измеряющий давление, температуру и влажность, датчик измеряющий дальность до предмета и другое множество полезных модулей.
  • Компоненты – сюда относят резисторы, конденсаторы, диоды, кнопки, светодиоды, транзисторы, фотодиоды и остальные мелкие составляющие приборов.

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

Мобильные роботы на базе Arduino. Момот М.В.

Мобильные роботы на базе Arduino

Аннотация

Пособие для начинающих изобретателей создано в виде практических опытов по созданию роботов своими руками. Модель реализуется на базе платформы Ардуино. Проекты расположены по уровню сложности от простых к интеллектуальным. В книге описано, как управлять различными моторами, как правильно собирать робота, как его программировать. Расписаны основные функции и способы управления роботом.  Собранное изделие способно обходить препятствия, проходить лабиринты, определять цвета, ориентироваться по компасу. Дополнительно с книгой идет архив с деталями робота, которые распечатываются на 3D принтере, рисунки, коды и нужные библиотеки.

Электроника. Твой первый квадрокоптер. Теория и практика. Яценков В.С.

Электроника. Твой первый квадрокоптер. Теория и практика

Аннотация

Книга Яценкова В.С. подходит для людей, имеющих опыт работы с платформой Ардуино. Здесь в понятной форме изложены практические аспекты создания и управления квадрокоптером. Пошагово расписаны все этапы сборки – выбор нужных частей и их стоимость, настройка программного обеспечения, программирование в Arduino IDE, ремонт в случае аварии

Огромное внимание автор уделяет типичным ошибкам, которые совершают начинающие конструкторы. Подробно изложен процесс отладки системы ODS, беспроводного канала Bluetooth и различных навигационных систем. Имеются рекомендации по выбору оборудования FPV, обзор программ для ПК и телефонов, которые используются при работе коптера

Имеются рекомендации по выбору оборудования FPV, обзор программ для ПК и телефонов, которые используются при работе коптера.

BangBangEducation

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

Широкий спектр датчиков и актуаторов позволит добавить интерактивности практически в любую систему, а основы взаимодействия и работы, изучаемые на курсе, позволят сделать это просто, используя системы визуального программирования.

Курс состоит из нескольких модулей. Первый — вводный, его необходимо пройти всем: на нем слушатели подготовят контроллер для дальнейшей работы.

Все последующие модули также рекомендуется пройти, но можно начать с той среды программирования, которая вам близка или уже знакома. Разбираемые среды программирования: TouchDesigner, Ableton (Max), Max/MSP, PureData и Processing.

Кому подойдет курс: всем, кто решил начать изучать Arduino, но пока не хочет программировать на C++.

Для обучения на базе плат расширения нам понадобятся детали/модули:

• Arduino UNO / Mega • соответствующий вашей плате кабель USB • Плата расширения* • Аналоговый модуль потенциометра* • Модуль кнопка* Опционально: • Сервопривод • Блок питания для сервопривода • Датчик уровня шума* • Инфракрасный дальномер Sharp (10−80 см)

eSchool

Это начальный курс по программированию микроконтроллеров Arduino. Рекомендуется к изучению в 6-8 классах. В качестве программной среды будет выступать Arduino IDE с установленным плагином ArduBlock.

Перед прохождением данного курса, настоятельно рекомендуется изучить курсы по программированию в Scratch, так как программирование с использованием визуальной оболочки ArduBlock очень схоже с программированием в среде Scratch.

Для самостоятельного изучения курса понадобится набор Arduino upgraded learning KIT.

Курс состоит из 13 базовых занятий. Внутри курса есть памятки по каждому из компонентов используемого набора Arduino и рекомендации по работе с ними. В конце курса приведены полезные и интересные проекты для самостоятельной реализации. Раздел самостоятельных проектов постоянно пополняется.

Центр при МГТУ им. Баумана

Платформа Arduino имеет открытую архитектуру и простой язык программирования. Она легко программируется через USB. Подключая к платформе разные датчики, вы можете получать информацию об окружающем мире (к примеру, температуру воздуха в разных частях города), отправлять данные на компьютер, а также управлять другими подключенными элементами.

Зная механизм работы устройств на Arduino, можно конструировать робототехнику и разную электронику. Изучение платформы помогает понять, по какому принципу работает «умный» дом.

Во время занятий вы получите базовые представления о программировании микроконтроллеров, робототехнике и электронике. Вы увидите, что представляют собой простейшие программы для микроконтроллеров и соберете рабочие схемы ЖК-дисплеев, температурных датчиков, систем светодиодов и многого другого. Лабораторные работы занимают 70% занятий – у вас будет много времени на увлекательные эксперименты и открытия.

Курс будет полезен:

  • всем, кто хочет преподавать робототехнику в школе или вузе;
  • всем, кто интересуется робототехникой и электроникой;
  • всем, кто занимается автоматизацией в работе или быту;
  • всем, кому интересна идея «интернета вещей».

Программирование Arduino

Теперь, когда необходимая нам схема собрана, мы можем начать программирование платы Arduino UNO. Полный текст программы будет приведен в конце статьи, в этом разделе будет дано объяснение некоторых участков кода этой программы.

В каждой программе для Arduino должны обязательно присутствовать две функции – это функции void setup () и void loop (), иногда их называют «абсолютным минимумом», необходимым для написания программы. Все операции, которые мы запишем внутри void setup (), исполнятся только один раз, а операции, которые мы запишем внутри void loop () – будут исполняться снова и снова. Пример этих функций показан в коде ниже – именно в таком виде они создаются когда вы выбираете пункт меню File -> New.

Arduino

void setup() {
// put your setup code here, to run once:
}

void loop() {
// put your main code here, to run repeatedly:
}

1
2
3
4
5
6
7

voidsetup(){

// put your setup code here, to run once:

}
 

voidloop(){

// put your main code here, to run repeatedly:

}

Начнем писать программу в функции setup (). Обычно в этой функции объявляются названия пинов (контактов). В нашей программе нам необходимо объявить всего два контакта: контакт 2 в качестве входного контакта и контакт 3 в качестве выходного контакта. Это можно сделать с помощью следующих строчек кода:

Arduino

pinMode(2,INPUT);
pinMode (3,OUTPUT);

1
2

pinMode(2,INPUT);

pinMode(3,OUTPUT);

Но здесь необходимо внести небольшое изменение в программу – нам желательно чтобы контакт 2, который мы объявили в качестве входного контакта, никогда не был бы в «плавающем» состоянии. Это означает что входной контакт должен быть всегда подсоединен либо к +5 В, либо к земле. А в нашем случае при нажатии кнопки он будет подсоединен к земле, а при отжатой кнопке он будет находиться в плавающем состоянии. Чтобы исключить это нам необходимо задействовать внутренний подтягивающий резистор, который находится внутри микроконтроллера ATmega 328 (то есть снаружи мы этот резистор не видим). Для его задействования необходимо написать соответствующую строчку кода в программе.

С помощью этой строчки кода контакт 2 будет подключаться через подтягивающий резистор к напряжению +5 В всегда когда он не подсоединен к земле. То есть мы должны в одной из написанных нами строчек кода изменить слово INPUT на слово INPUT_PULLUP как показано ниже.

Arduino

pinMode(2,INPUT_PULLUP);

1 pinMode(2,INPUT_PULLUP);

Теперь, когда мы закончили с функцией setup (), перейдем к функции loop (). В этой функции мы должны проверять не подсоединен ли контакт 2 к земле (то есть на его входе низкий уровень – LOW) и если он подсоединен в земле, то мы должны зажечь светодиод при помощи подачи на контакт 3 высокого уровня (HIGH). А если контакт 2 не подсоединен к земле (то есть кнопка не нажата), то мы должны держать светодиод в выключенном состоянии при помощи подачи на контакт 3 низкого уровня (LOW). В программе это будет выглядеть следующим образом:

Arduino

if (digitalRead(2) == LOW)
{
digitalWrite(3,HIGH);
}

else
{
digitalWrite(3,LOW);
}

1
2
3
4
5
6
7
8
9

if(digitalRead(2)==LOW)

{

digitalWrite(3,HIGH);

}

else

{

digitalWrite(3,LOW);

}

В этих строчках кода оператор digitalRead() используется для проверки статуса (состояния) входного контакта. Если контакт подсоединен к земле, то оператор digitalRead() возвратит значение LOW, а если оператор подсоединен к +5 В, то оператор возвратит значение HIGH.

Аналогично, оператор digitalWrite() используется для установки состояния выходного контакта. Если мы установим контакт в состояние HIGH, то на его выходе будет напряжение +5 В, а если мы установим контакт в LOW, то на его выходе будет 0 В.

Таким образом в нашей программе когда мы нажимаем кнопку на контакт 2 будет подана земля и, соответственно, на контакт 3 мы подаем высокий уровень +5 В (HIGH) чтобы зажечь светодиод. Если условие не выполняется – то есть на контакт 2 не подана земля, то мы на контакт 3 подаем низкий уровень 0 В (LOW) чтобы выключить светодиод.

На этом наша программа закончена, теперь загрузим код программы на нашу плату Arduino таким же образом как ранее мы загружали код программы мигания светодиодом.

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

Синий кабель для программирования может выполнять следующие три функции:

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.

В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет. Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером

В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.

Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.

Arduino+

На сайте представлены текстовые и видеоуроки по Ардуино. Большая часть из них бесплатная. Подойдут даже совсем новичку, который первый раз слышит об Ардуино.

Автор подробно и довольно понятно рассказывает, что такое Ардуино, как его использовать и как программировать. Из уроков также ребенок или взрослый может узнать, как подключать и управлять датчиками, как подключить микроконтроллер к компьютеру.

Из следующего курса учащийся узнает, как программировать на Python, как выглядит программное обеспечение Ардуино, как использовать внешние компоненты и макетную плату и многое другое.

Уроки Arduino от светофора до 3D-принтера

1. Как собрать схему на макетной плате

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

2. Как передать знания о собранной схеме

Принципиальная схема – это способ зафиксировать и передать знание об устройстве электрической цепи. Точно так же как с помощью языка, на котором мы говорим с использованием слов, которые обозначают различные понятия и предметы, мы можем описать любом человеку, владеющему этим языком…

3. Измерение параметров электричества

Когда мы рассматривали нашу модель с ручным управлением, я упоминал такие понятия, как напряжение, сопротивление и сила тока. Это базовые характеристики любой электрической цепи, и сейчас мы вспомним, как их измерять…

4. Автоматизируй это

Давайте подумаем, как это работу можно автоматизировать. Кто вместо человека может нажимать на кнопку? На наше счастье, уже много десятков лет назад были придуманы транзисторы…

5. Встречаем Arduino

Что же такое Arduino? Это вот такие платы, которые можно запрограммировать на взаимодействие с любыми электронными устройствами. Теперь на картинке я вам покажу части платы, которые вас будут интересовать. Ну во-первых, чтобы вы знали, вот это является мозгом вашего устройства. Это микроконтроллер…

6. Среда разработки Arduino IDE

На официальном сайте arduino.cc в разделе «Download» вы можете найти самую свежую стабильную версию так называемой интегрированной среды разработки Arduino IDE. Пожалуйста, найдите версию для вашей операционной системы и установите ее…

7. Загрузка первой программы в Arduino

Теперь давайте найдем очень полезный раздел «Образцы», которым мы регулярно будем пользоваться. И в разделе Basics откроем пример Blink. Множество этих образцов уже поставляются вместе со средой разработки…

8. Совместная работа переводчиков

Вы только что загрузили первый скетч. Надеюсь, что он у вас работает, и теперь нужно понять, что это за фокусы происходят. Самое первое, что нужно запомнить: никакой магии здесь нет — просто очень много людей постарались подготовить для вас почву, чтобы вам вот таким вот легким движением можно было заставить целое устройство работать…

9. Первый взгляд на программу Arduino

Теперь посмотрим внимательнее на тот пример из образцов, которые мы недавно загрузили в плату, пример Blink

Сначала я хочу обратить ваше внимание на то, что у любого языка программирования есть определенный набор правил, которые следует соблюдать, для того чтобы компилятор понял, что вы имели в виду. Так называемый «синтаксис»

Точно так же как при написании сочинения на русском языке мы используем знаки препинания, разбиение на абзацы и прочие приемы, повышающие читабельность текста, у среды разработки, у языка программирования…

Написание скетча

Для начинающих стоит начать с основных программ в языке Arduino. Здесь рассмотрим написание скетча Ардуино с нуля. Простой скетч написать не так уж сложно

Важно понять данную тему и разобраться с основными функциями и командами в данном языке. Основные функции в изучении системы программирования Ардуино:

  • pinMode(PIN, type) – задаём нужный пин подключения проводами к модулю, компоненту или датчику.
  • digitalWrite(PIN, state) – с помощью этой командой устанавливаем состояние на каком-либо пине, может быть значение либо один либо ноль.
  • digitalRead(PIN) – возвращение в прежние состояние входа, может быть значение либо один либо ноль.
  • delay(ms) – остановка процесса, на определенное время, к примеру со светодиодом, мигание, то есть светодиод горит, а вводя эту функцию, он на несколько миллисекунд приостановит свою работу, тем самым осуществит мигание.
  • analogWrite(PIN, state) – установка нужного напряжение на выходе пина, выставляется до значения 255, а минимальное значение – ноль.
  • analogRead(PIN) – возвращает прежнее значение напряжение на пине, значение составляет от нуля до 1023.

Разберём на примере, самое простое это сделать схему со светодиодом. Чтобы сделать так, чтобы светодиод загорался при нажатии на кнопку, добавим некоторые команды и изменим код, получаем:

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

Начало работы с Ардуино

Говоря бытовым языком, Ардуино – это электронная плата, в которую можно воткнуть множество разных устройств и заставить их работать вместе с помощью программы, написанной на языке Ардуино в специальной среде программирования.

Чаще всего плата выглядит вот так:

На рисунке показана одна из плат Ардуино – Arduino Uno. Мы изучим ее подробнее на следующих уроках.

В плату можно втыкать провода и подключать множество разных элементов. Чаще всего, для соединения используется макетная плата для монтажа без пайки. Можно добавлять светодиоды, датчики, кнопки, двигатели, модули связи, реле и создавать сотни вариантов интересных проектов умных устройств. Плата Ардуино – это умная розетка, которая будет включать и выключать все присоединенное в зависимости от того, как ее запрограммировали.

Вся работа над проектом разбивается на следующие этапы:

  1. Придумываем идею и проектируем.
  2. Собираем электрическую схему. Тут нам пригодится макетная плата, упрощающая монтаж элементов. Безусловно, понадобятся навыки работы с электронными приборами и умение пользоваться мультиметром.
  3. Подключаем плату Arduino к компьютеру через USB.
  4. Пишем программу и записываем ее в плату буквально нажатием одной кнопки на экране в специальной среде программирования Arduino.
  5. Отсоединяем от компьютера.  Теперь устройство будет работать автономно – при включении питания оно будет управляться той программой, которую мы в него записали.

Программа и среда программирования выглядят вот так:

На экране показана программа (на сленге ардуинщиков текст программы называется “скетч”), которая будет мигать лампочкой, подсоединенной к 13 входу на плате Ардуино UNO. Как видим, программа вполне проста и состоит из понятных для знающих английский язык инструкций. В языке программирования Arduino используется свой диалект языка C++, но все возможности C++ поддерживаются.

Есть и другой вариант написания кода – визуальный редактор. Тут не нужно ничего писать – можно просто перемещать блоки и складывать из них нужный алгоритм. Программа загрузится в подключенную плату одним нажатием кнопки мыши!

Визуальную среду рекомендуется использовать школьникам младших классов, более старшим инженерам лучше сразу изучать “настоящий” Ардуино – это довольно просто, к тому же знания C++ никому не повредят.

В целом все выглядит довольно понятно, не так ли? Осталось разобраться в деталях.

Отличаем подделку Ардуино от оригинала

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

Иногда, продавцы специально продают поддельные платы вместо оригинальных, а как отличить? Существует специальный список, где содержатся официальный магазины, которые перепродают платы Ардуино, стоит для начала найти плату в нём. Если же данного магазина в списке нет, то следует насторожиться и лучше не покупать у этого продавца

Следует обратить внимание и на цену устройства. Оригинальные платы Ардуино поставляются в коробочках, вместе с инструкцией и наклейками

Поддельные, в частности случаев поставляются просто в запечатанных пакетиках. Если посмотреть на колодки, куда припаиваются провода, то у них дублируются надписи на корпусе колодок сбоку. Шрифт у оригинальной платы чётки и без размытий, в отличии от подделок. Можно заметить и по самому качеству платы и по надписям, что это сделано руками поддельщиков, так как их оборудование не такое точно как у оригинального производителя Ардуино.

Нужно понимать, что если нацелено покупать поддельную плату, то велик риск, что придёт плата которая не работает во все и очень сильно ограничен  функционал. А это значит, что о качестве изделия не может идти никакой речи. К тому же нужно понимать, что если плата дешёвая, то компоненты и программное обеспечение тоже дешёвые, а это значит, велик риск получить неисправность одного из элементов на плате. При этом плата в устройстве быстро выйдет из строя. Чип может быть заблокированным системой вашего компьютера, в целях защиты от пиратства.

Понятие Ардуино для начинающих

Ардуино представляет из себя плату, в которую вводится скетч с помощью программы и компьютера. Ардуино является как бы головой собранного устройства и отвечает за многие процессы, в том числе это приём информации и передачи этой информации пользователю. Разберём пример для начинающих. Если мы возьмём ультразвуковой датчик, то он будет излучать ультразвук, который поможет прибору определить расстояние до какого-либо предмета. Информация будет передаваться на плату Ардуино, тем временем сама плата выведет нужное значение на дисплей. Её можно скачать с официального сайта: www.arduino.cc

Ардуино удобна для новичков по нескольким причинам, в том числе это простота использования. Для использования платы Ардуино не требуются дополнительные закупки аппаратуры к ней, сам скетч-код очень простой и пишется на упрощенном программном языке C++. Плата позволяет каждый раз усовершенствовать ваше устройство, можно добавлять как функционал, так и новые элементы, соответственно получать больше информации используя устройство. Работа с Ардуино начинается с написания первого скетча.

Прошивка Arduino

Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Подводим итоги урока

В этой короткой начальной статье мы с вами узнали, что такое Ардуино, почему эту технологию называют именно так, как выглядят типичные проекты с использованием контроллеров Arduino. Начать создавать интересные технические проекты очень просто – для этого не обязательно быть электронщиком. Просто возьмите плату ардуино, соберите с ее помощью нужную электронную схему (можно найти много готовых примеров в интернете), подключите контроллер к компьютеру и загрузите программу. Умное устройство готово!

В следующих уроках мы с вами узнаем, как работает контроллер, разберем устройство платы Arduino Uno и запустим свой первый проект.

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: