Урок девятый.Ультразвуковой дальномер.Часть 1

В прошлых уроках мы занимались в основном простыми схемами без применения крутых датчиков.Сегодня мы наверстаем это.Сделаем ультразвуковой дальномер с дистанцией до 3 метров.Для эксперимента мы взяли ультразвуковой датчик  HC-SR04

http://electromicro.ru/market/datchiki_i_sensory/31/

Соберем простую схему ниже:

Безымянный10

Запрограммируем следующим кодом:

int echoPin = 12; // Эхо живет на 12 пине
int trigPin = 13; // Сигнал живет на 13 пине

void setup() {
Serial.begin (9600); // Настраиваем порт.Необходимо всегда писать данную строку если хотите что либо выводить в консоль или монитор порта
pinMode(trigPin, OUTPUT); // настраиваем на выход
pinMode(echoPin, INPUT); // настраиваем на выход
}

void loop() {
int duration, cm; // обзываем
digitalWrite(trigPin, LOW); // Подаем низкий сигнал
delayMicroseconds(2); // Ждем
digitalWrite(trigPin, HIGH); // Подаем высокий сигнал.Тем самым имитируя подачу импульса на встречу с объектом.
delayMicroseconds(10); // Ждем
digitalWrite(trigPin, LOW); // Снова низкий сигнал.
duration = pulseIn(echoPin, HIGH); // Измеряем дистанцию по отбежавшим от объекта волнам.
cm = duration / 58;// Делим на 58.Необходимо для преобразования сигнала в сантиметры
Serial.print(cm); // Выводим на экран cm
Serial.println(» cm»); // Выводим на экран cm
delay(100);// Ждем 100 мили секунд
}

Если вы хотите подробнее рассмотреть принцип работы ультразвукового дальномера, то советую почитать http://robotosha.ru/electronics/how-works-ultrasound-meter.html

Внимание.Радиус действия дальномера 15 градусов.Выходя из диапазона вы становитесь невидимкой.

 

Урок восьмой.Управление светодиодом с помощью фоторезистора

В продолжении наших уроков мы расскажем как сделать ночник.Когда значение освещенности менее 500, ночник включается.Если же больше, то отключается или совсем  не горит.

Соберем схему на рисунку:

Безымянный8

Первый резистор помеченный как R 220 Ом.А второй 4.7 кОм.

Запрограммируем следующим кодом arduino:

int sensorsunPin = A0;// Подключаем фоторезистор
unsigned int sensorsunValue = 0; // назначаем переменную

void setup()
{
pinMode(13, OUTPUT);// Подключаем светодиод
}

void loop()
{
sensorsunValue = analogRead(sensorsunPin); // считываем значение с фоторезистора
if(sensorsunValue<500) digitalWrite(13, HIGH); // при сигнале до 500.Включаем светодиод
else digitalWrite(13, LOW); // если от 500.То,выключаем светодиод
}

Если хотите изменить значения перехода включения светодиода, то поменяйте в коде число 500 на любое от 0 до 1023.

 

Урок пятый.Делаем первый шаг к клавиатуре.

Сегодня мы рассмотрим чтение данных с кнопки с помощью arduino и уже изученном ранее «мониторе порта».Это будет первый шаг к созданию клавиатуры на arduino.Для урока нам понадобится комплектующие из прошлого урока и одна кнопка без фиксации, а также резистор на 10кОм. Соберем схему

кнопка

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

Зальем на arduino следующий код:

const byte PIN_BUTTON = 6;//Обозначим пин номер 6 как пин кнопки и создадим переменную PIN_BUTTON

void setup() {
Serial.begin(9600);//настроим порт
pinMode(PIN_BUTTON, INPUT);//обозначим как порт только на вход
digitalWrite(PIN_BUTTON, HIGH);//Обозначим как цифровой пин
}
void loop() {
Serial.print(«l:»);//Выведем символ при нажатии на кнопку
Serial.print(digitalRead(PIN_BUTTON));//Считываем и выводим в консоль данные

Serial.println();
}

Наслаждаемся результатом!

Урок седьмой.Сборка клавиатуры

В прошлом уроке мы подключали пять кнопок и с помощью них водили секретное слово.Теперь подключим arduino еще и потенциометр из прошлых уроков.Всего в нашем проекте задействовано 10 кнопок и потенциометра.Соберем схему внизу:

клавиатура

Запрограммируем следующим кодом:

const byte PIN_BUTTON_P = 2;//Кнопка с буквой «P» на 2 пине
const byte PIN_BUTTON_Y = 3;//Кнопка с буквой «Y» на 3 пине
const byte PIN_BUTTON_T = 4;//Кнопка с буквой «T» на 4 пине
const byte PIN_BUTTON_I = 5;//Кнопка с буквой «I» на 5 пине
const byte PIN_BUTTON_N = 6;//Кнопка с буквой «N» на 6 пине
const byte PIN_BUTTON_X = 7;//Кнопка с буквой «X» на 7 пине
const byte PIN_BUTTON_1 = 8;//Кнопка с цифрой «1» на 8 пине
const byte PIN_BUTTON_5 = 9;//Кнопка с цифрой «5» на 9 пине
const byte PIN_BUTTON_L = 10;//Кнопка с буквой «L» на 10 пине
const byte PIN_BUTTON_O = 11;//Кнопка с буквой «0» на 11 пине

void setup() {
Serial.begin(9600);//Настраиваем порт

pinMode(PIN_BUTTON_P, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_P, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_Y, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_Y, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_T, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_T, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_I, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_I, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_N, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_N, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_X, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_X, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_1, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_1, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_5, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_5, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_L, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_L, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_O, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_O, HIGH);//Внутренняя подтяжка в качестве безопасности
}

void loop() {

int sensorValue = analogRead(A0);//обозначаем что пин А0 предназначен для приёма аналового сигнала
Serial.println(sensorValue);//вывод значений от 0 до 1023.
delay(1);

int sensorValue2 = analogRead(A1);//обозначаем что пин А0 предназначен для приёма аналового сигнала
Serial.println(sensorValue2);//вывод значений от 0 до 1023.
delay(1);

int sensorValue3 = analogRead(A2);//обозначаем что пин А0 предназначен для приёма аналового сигнала
Serial.println(sensorValue3);//вывод значений от 0 до 1023.
delay(1);

Serial.print(«p:»);//Вывод буквы «P»
Serial.print(digitalRead(PIN_BUTTON_P));//При нажатии на кнопку с буквой «Р» выводится в мониторе порта буква «Р»
Serial.print(» «);//Перевод строки

Serial.print(«y:»);//Вывод буквы «Y»
Serial.print(digitalRead(PIN_BUTTON_Y));//При нажатии на кнопку с буквой «Y» выводится в мониторе порта буква «Y»
Serial.print(» «);//Перевод строки

Serial.print(«t:»);//Вывод буквы «T»
Serial.print(digitalRead(PIN_BUTTON_T));//При нажатии на кнопку с буквой «T» выводится в мониторе порта буква «T»
Serial.print(» «);//Перевод строки

Serial.print(«i:»);//Вывод буквы «I»
Serial.print(digitalRead(PIN_BUTTON_I));//При нажатии на кнопку с буквой «I» выводится в мониторе порта буква «I»
Serial.print(» «);//Перевод строки

Serial.print(«n:»);//Вывод буквы «N»
Serial.print(digitalRead(PIN_BUTTON_N));//При нажатии на кнопку с буквой «N» выводится в мониторе порта буква «N»
Serial.print(» «);//Перевод строки

Serial.print(«x:»);//Вывод буквы «P»
Serial.print(digitalRead(PIN_BUTTON_X));//При нажатии на кнопку с буквой «Р» выводится в мониторе порта буква «Р»
Serial.print(» «);//Перевод строки

Serial.print(«1:»);//Вывод буквы «Y»
Serial.print(digitalRead(PIN_BUTTON_1));//При нажатии на кнопку с буквой «Y» выводится в мониторе порта буква «Y»
Serial.print(» «);//Перевод строки

Serial.print(«5:»);//Вывод цифры «5»
Serial.print(digitalRead(PIN_BUTTON_5));//При нажатии на кнопку с цифроой «» выводится в мониторе порта цифра 5
Serial.print(» «);//Перевод строки

Serial.print(«l:»);//Вывод буквы «L»
Serial.print(digitalRead(PIN_BUTTON_L));//При нажатии на кнопку с буквой «L» выводится в мониторе порта буква «L»
Serial.print(» «);//Перевод строки

Serial.print(«o:»);//Вывод буквы «O»
Serial.print(digitalRead(PIN_BUTTON_O));//При нажатии на кнопку с буквой «O» выводится в мониторе порта буква «O»
Serial.print(» «);//Перевод строки

Serial.println();//Закончили
}

Теперь переходим к новым урокам.

Урок шестой.Подключение нескольких кнопок.

В предыдущем уроке мы рассмотрели вывод буквы при нажатии кнопки.Теперь мы немного увеличим схему и с помощью нее ведем слово.

Соберем схему внизу:

Безымянный

Теперь запрограммируем arduino следующим кодом:

const byte PIN_BUTTON_P = 2;//Кнопка с буквой «P» на 2 пине
const byte PIN_BUTTON_Y = 5;//Кнопка с буквой «Y» на 5 пине
const byte PIN_BUTTON_T = 8;//Кнопка с буквой «T» на 8 пине
const byte PIN_BUTTON_I = 10;//Кнопка с буквой «I» на 10 пине
const byte PIN_BUTTON_N = 13;//Кнопка с буквой «N» на 13 пине

void setup() {
Serial.begin(9600);//Настраиваем порт

pinMode(PIN_BUTTON_P, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_RIGHT, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_Y, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_LEFT, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_T, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_UP, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_I, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_DOWN, HIGH);//Внутренняя подтяжка в качестве безопасности

pinMode(PIN_BUTTON_N, INPUT);//Назначения пина на выход
digitalWrite(PIN_BUTTON_SELECT, HIGH);//Внутренняя подтяжка в качестве безопасности
}

void loop() {
Serial.print(«p:»);//Вывод буквы «P»
Serial.print(digitalRead(PIN_BUTTON_P));//При нажатии на кнопку с буквой «Р» выводится в мониторе порта буква «Р»
Serial.print(» «);//Перевод строки

Serial.print(«y:»);//Вывод буквы «Y»
Serial.print(digitalRead(PIN_BUTTON_Y));//При нажатии на кнопку с буквой «Y» выводится в мониторе порта буква «Y»
Serial.print(» «);//Перевод строки

Serial.print(«t:»);//Вывод буквы «T»
Serial.print(digitalRead(PIN_BUTTON_T));//При нажатии на кнопку с буквой «T» выводится в мониторе порта буква «T»
Serial.print(» «);//Перевод строки

Serial.print(«i:»);//Вывод буквы «I»
Serial.print(digitalRead(PIN_BUTTON_I));//При нажатии на кнопку с буквой «I» выводится в мониторе порта буква «I»
Serial.print(» «);//Перевод строки

Serial.print(«n:»);//Вывод буквы «N»
Serial.print(digitalRead(PIN_BUTTON_N));//При нажатии на кнопку с буквой «N» выводится в мониторе порта буква «N»
Serial.print(» «);//Перевод строки

Serial.println();//Закончили
}

Теперь в «Мониторе порта» можно наблюдать набор слова по вертикали.

 

Урок четвертый.Вывод значений потенциометра

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

1.arduino uno

http://electromicro.ru/market/lementy_shem/tranzistor..

2.Макетная плата    http://electromicro.ru/market/komplektuyuwie/maketnay..

3.Потенциометр на 10кОм

4.Провода

http://electromicro.ru/market/komplektuyuwie/5/

 

Соберем схему в приложении.Потенциометр подключаем к пину a0.

потенциометр

Запрограммируйте arduino следующей программой.

void setup() {
Serial.begin(9600);//настраиваем порт
}
void loop() {
int sensorValue = analogRead(A0);//обозначаем что пин А0 предназначен для приёма аналового сигнала
Serial.println(sensorValue);//вывод значений от 0 до 1023.
delay(1);
}

Теперь значения сопротивления резистора выводятся в «монитор порта» от 0 до 1023.Как задать значения от 0 до 100 читайте в следующем уроке.

Урок третий.Работа с несколькими светодиодами.

В этом уроке мы рассмотрим работу с несколькими исполнительными устройствами, а в нашем случае это три светодиода.Для урока нам понадобиться

1.arduino uno

http://electromicro.ru/market/lementy_shem/tranzistor..

2.Макетная платаhttp://electromicro.ru/market/komplektuyuwie/maketnay..

3.Светодиоды 3 штуки

http://electromicro.ru/market/komplektuyuwie/svetodio..

4.Провода

http://electromicro.ru/market/komplektuyuwie/5/

5.Резистор на 220 Ом  3 штуки

Соединим все по схеме
Безымянный

Прошиваем arduino следующим кодом:

int val = 0;//Первый светодиод с постоянной
int val2 = 0;//Второй светодиод с постоянной
int val3 = 0;//Третий светодиод с постоянной
void setup() {
Serial.begin(9600); Настраиваем порт
}
void loop() {
if (Serial.available() > 0) {
val = Serial.read();
if (val==’H’) digitalWrite(12,HIGH);//При нажатии клавиши «H» включается светодиод подключенный к 12 пину
if (val==’L’) digitalWrite(12,LOW);//При нажатии клавиши «L» выключается светодиод подключенный к 12 пину
if (val==’Q’) digitalWrite(11,HIGH);//При нажатии клавиши «Q» включается светодиод подключенный к 11 пину
if (val==’W’) digitalWrite(11,LOW);//При нажатии клавиши «W» выключается светодиод подключенный к 11 пину
if (val==’A’) digitalWrite(10,HIGH);//При нажатии клавиши «A» включается светодиод подключенный к 10 пину
if (val==’S’) digitalWrite(10,LOW);//При нажатии клавиши «S» выключается светодиод подключенный к 10 пину
}
}

Теперь можно с помощью компьютера управлять тремя светодиодами.

Урок второй.Управление светодиодом с помощью компьютера

В первом уроке мы собрали схему и сделали мигающий фонарь.Теперь используя схему фонарика на макетной плате мы будем управлять светодиодом с компьютера.

Запрограммируем arduino следующим кодом

int val = 0;//объявляем переменную

void setup() {
Serial.begin(9600); //настраиваем порт
}

void loop() {
if (Serial.available() > 0) {
val = Serial.read();//cчитываем команды
if (val==’W’) digitalWrite(10,HIGH);//Включаем при нажатии клавиши w в строке монитора порта
if (val==’S’) digitalWrite(10,LOW);//Выключаем при нажатии клавиши s в строке монитора порта
}
}

Для ввода команд откройте «Монитор порта» arduno, который находиться во вкладе «инструменты»

Безымянный1

Безымянный5

Теперь в окне программы вводите буквы и наблюдайте за светодиодом.

Урок первый.Сделаем мигающий фонарик.

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

Для данного урока нам понадобиться

1.arduino uno

http://electromicro.ru/market/lementy_shem/tranzistor_02-1101/

2.Макетная плата  http://electromicro.ru/market/komplektuyuwie/maketnaya_plata_na_400_pinov/

3.Светодиод

http://electromicro.ru/market/komplektuyuwie/svetodiod_krasnyj_5mm/

4.Провода

http://electromicro.ru/market/komplektuyuwie/5/

5.Резистор на 220 Ом

Соберем схему

светодиодик

Запрограммируем arduino следующим кодом

void setup() {
pinMode(8, OUTPUT);//Инициализируем пин.Обозначем что 8 пин занят под вывод сигнала.
}
void loop() {
digitalWrite(8, HIGH);//Включаем
delay(500);//Ждем половину секунды.Все единицы указаны в милисекундах
digitalWrite(8, LOW);//Выключаем
delay(1500);//Ждем полторы секунды
}

Не забываем выбрать в качестве платы arduino uno.И радуемся результату

 

Прошивка arduino

Сегодня мы рассмотрим прошивку первой программой arduino.Ранее мы уже рассматривали установку arduino ide.

Запускаем программу.При старте должно появиться окно с информацией

Безымянный6

После этого переходим в раздел инструменты.

Безымянный1


Наводим мышью на подраздел плата.Выбираем свою arduino

Безымянный5

Выбираем порт.Внимание.Вы сможете выбрать порт только когда подключите arduino в начале старта программы к компьютеру.Порт выбираете первый по списку.

А теперь напишем первую программу.Это программа blink предназначена для проверки плат arduino.

void setup() {

pinMode(13, OUTPUT); //Назначаем порт
}
void loop() {
digitalWrite(13, HIGH);  //Включаем встроенный светодиод
delay(1000); //Ждем ровно секунду
digitalWrite(13, LOW); //Выключаем светодиод
delay(1000); //Ждем ровно секунду
}

После написания программы нажимаем кнопку рядом с кнопкой — галочкойБезымянный7

Ждем

Безымянный3

Если все прошло успешно, то по окончанию процесса в нижнем окне программы должно появится размер программы.Внимание.Если в процессе прошивки плата сильно греется.Срочно отключите ее от компьютера.И обратитесь в техническую поддержку по адресу tech.electromicro@bk.ru

Безымянный4