пятница, 29 января 2016 г.

Настраиваем плату  WeMos D1

Всем привет, и как всегда расскажу что и как у меня тут приключилось за последнее время. Начну с того что пришла ко мне плата WeMos D1 совестимая с Ардуино. Внешний осмотр показал что платы немного отличаются: искал где находиться 13 контакт, и похоже что его нет и схемотехника плат все же отличается. Чем же отличается эта плата? Первое отличие что данный вариант со встроенным Wi-Fi. Это уже значительный прогресс. Прадва придеться еще здесь многому учиться чтобы использовать эту новизну. Остальные технические характеристики ниже:

Технические характеристики WeMos D1 R2
·         11 цифровых входов / выходов. Все выводы  поддерживают interrupt/pwm/I2C/one-wire (за исключением D0)
·         1 аналоговый вход (максимальное входное напряжение 3,3 В)
·         Micro USB разъем
·         Разъем питания (9-24 В)
·         Поддержка Arduino IDE
·         Микроконтроллер ESP-8266EX
·         Частота микроконтроллера 80MHz/160MHz
·         Flash память 4 Мб
·         Программирование через Serial или OTA (беспроводная загрузка программного кода по Wi-Fi)
·         Наличие WI-FI модуля
Теперь давайте настроим Arduino IDE для работы с WeMos D1. Первым делом нужно найти драйвер. Покопался в интернете и нашел. Драйвер можно будет найти на моем Яндекс диске жми сюда (имя файла ch341ser_win.zip)
Вот что нужно сделать:
1.       Запускаем программу Ардуино версия должна быть не ниже 1.6.7
2.       Выбираем ФАЙЛ и в раскрывающемся списке заходим в НАСТРОЙКИ


В строке “Дополнительная ссылка для Менеджера плат” вводим URL:  http://arduino.esp8266.com/stable/package_esp8266com_index.json и жмем на кнопку в конце строки, чтобы убедиться, что адрес был добавлен. Все нажимаем ОК и продолжаем настраивать…

3.       Заходим в Менеджер плат через меню Инструменты.
4.       Находим в списке наш контроллер (подсказка в самом низу он находиться, как говориться по закону….)


5.       Нажимаем УСТАНОВИТЬ. И Все ждем. Ждать пришлось долго, так что примерно на полчаса можно теперь расслабиться.

6.       И вот только после установки вы можете наконец выбрать наш микроконтроллер (появиться в общем списке).

Дальше не забудьте указать в программе на каком порту подключена у вас плата, да и не лишним будет проверить и остальные настройки:






Все можно поздравить вас с успешной установкой драйвера, загрузкой модуля контроллера и настройками. Теперь можно будет приступать к программированию. Но об этом уже я расскажу в следующий раз.  

четверг, 28 января 2016 г.

Делаем бегущие огни из светодиодов

Нам понадобиться:

  1. светодиоды разных цветов - 6 штук
  2. резисторы 220 Ом - 6 штук
  3. плата ардуино
Схема предельно проста: все короткие ножки светодиодов замыкаем и подключаем к GND на плате ардуино. Длинные ножки светодиодв через резистор на 220 Ом будем подключать к цифровым выходам к пинам 2,3,4,5,6,7. На макетной плате все это может быть соброно например таким образом...

далее скетч:


int START = 2; // Начальный пин диода
int COUNT = 6; // Количество диодов
void setup() // Подготовка пинов вывода
{
for (int i = START; i < START + COUNT; i ++) // Цикл инициализации
{
pinMode(i, OUTPUT); // Указываем пин как цифровой выход
}
}
void loop() // Рабочее тело
{
for (int i = START; i < START + COUNT; i ++)
{
digitalWrite(i, HIGH); // Посылаем высокий сигнал (гори!)
delay(200); // ждём 0.2 секунды
digitalWrite(i, LOW); // Гасим диод
}
}

среда, 27 января 2016 г.

Заставим светодиоды мигать с разной частотой.

Перейдем сразу к коду программы или скетчу:
------------------------------
// 13 вывод имеет светодиод, подключенный на большинстве плат Arduino.
// заставим мигать два светодида подключеных последовательно к 13 pin
int led = 13;
int x=5; // используем переменную которая будет влиять на время горения светодиода

void setup() {
  // инициализируем цифровой PIN в качестве выхода.
  pinMode(led, OUTPUT);
digitalWrite(led, HIGH);   // зажигаем светодиоды при первом включении
  delay(3000);    // задежрка на 3 сек (светодиоды при этом продолжают гореть)
  digitalWrite(led, LOW);    // гасим светодиоды
}

// эта часть программы работает в бесконечном цикле
void loop() {
  digitalWrite(led, HIGH);   // зажигаем светодиоды
  delay(x);  // значение переменной Х определят времяя задержки в мс
  digitalWrite(led, LOW);    // гасим светодиоды
  delay(x);               // задержка
x=x+15; // увеличиваем время задержки на 15 мс
  if (x > 300)x=5; // проверяем если переменная Х станет больше 300
// то тогда ей присваиваем начальное значение равное 5

}
-----------------------------
обратите внимание на математический оператор: х=х+15 , это оператор присваивания. Работает он так: к ранее значению переменной х он прибавляет еще 15. И таким образом с каждым новым циклом переменная увеличивается на 15.

Все бы ничего но в бесконечном цикле это привело бы к тому что светодиод начал бы слишком долго светиться и слишком долго не горел (причем до бесконечности). Чтобы избежать этого мы ввели еще и условный оператор:
 if (x > 300)x=5;
работает он так: если значение переменной х меньше 3000 то команда после оператора х=5 (вы уже знаете что это значит, но все же я еще раз напомню что это оператор присваивания) опускаются и не выполняются. И таким образом вновь идет выполнение бесконечного цикла. 
Но как только значение х станет больше 300 (например 315) то условие выполнено и тогда выполниться оператор присваивания: х=5, то есть значение 315 будет "уменьшено" до 5. И цикл снова повторяется. 
То есть оператор усливия  if (x > 300)x=5; является "контрогайкой" которая не дает беконечно увеличивать значения переменной х и тем самым избежим "вечного" цикла мигания светодиода. 

ДЗ
1) что будет если в операторе  if (x > 300)x=5; значение 300 заменить на 100? А что при этом измениться если значение 300 увеличить до 1000?
2) что нужно изменить в схеме и скетче чтобы два светодиода мигали независимо друг от друга с разной частотой?

вторник, 26 января 2016 г.

Ардуино симулятор "Мигалка на двух светодиодах" 

Все начинают свой путь в мир ардуино с простейшего скетча (вы надеюсь помните что это такое? Если нет то подскажу - это наша программа, которая заливается на плату) который заставляет мигать светодиод на плате. Ну скучно же. Давайте для начала попробуем заставить мигать два светодиода. 
А у вас еще нет платы ардуино? Не беда! Давайте познакомлю вас с симулятором ардуино. Все что вам понадобиться для начала это компьютер и выход в интернет. Ссылка на симулятор ардуино здесь. Вот видите как здорово, пока нет еще платы у вас все равно можете заниматься нашими проектами. Ну а если плата есть - то можно собрать уже все как говориться "в живую". 
Вот что у нас должно получиться. Хотя для начала я все же немного расскажу в видео как именно можно работать с симулятором, и как вводить скетч. В общем если вы совсем новичок и только делаете первые шаги то начните с просмотра небольшого видеоролика ниже - очень многое сразу же проясниться. 
Ну а для тех кто уже что-то умеет и знает, можно опустить видео выше и сразу перейти к нашему проекту. Сначала конечно нужно "собрать" на симуляторе схему. Если не знаете как это сделать то еще раз просмотрите видео выше. А в общем у вас должно получиться что-то похожее на фотографии ниже:
Далее конечно же нужно прописать скетч (после просмотра видео выше вы уже точно знаете как это сделать). Но сначала давайте все же я ниже пропишу его отдельно. Вот как он выглядит:

int led1 = 13; int led2 = 10; //инициализация цифрового PIN в качестве выхода для светодиодов 1 и 2

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {       // начало бесконечного цикла
  digitalWrite(led1, HIGH);   // зажигаем LED1 (HIGH логическая единица)
  delay(1000);               // задержка на 1000 мс
  digitalWrite(led1, LOW);    // гасим LED1 (LOW логичемкий ноль)
  delay(500);               // задержка на 500 мс
   digitalWrite(led2, HIGH);   // зажигаем LED2 (HIGH логическая единица)
  delay(1000);               // задержка на 1000 мс
  digitalWrite(led2, LOW);    // гасим LED2 (LOW логичемкий ноль)
  delay(500);               // задержка на 500 мс
}     // цикл выполнен возрат к началу

Далее смотрим итоговое видео что у нас должно получиться в конечном счете.

А теперь ДЗ (домашнее задание):
1. Что нужно изменить в программе чтобы заставить мигать светодиоды чаще?
2. Измените скетч так, чтобы светодиоды мигали с разной частотой (красный через каждые две секунды, зеленый через каждые полсекунды).

Что такое Arduino, или что нам понадобиться для наших занятий?

Arduino — это маленькая плата с маленьким процессором. У неё есть контакты, к которым можно подключать любые устройства: моторчики, лампочки, сенсоры, роутеры, динамики. Затем для управления всем этим, можно написать простую Arduino-программу и залить её на плату через USB. И после чего самые смелые и необычные проекты начинают осуществляться!
Причем Вам не совсем обязательно знать язык прогрммаирования Си+ (на нем пишутся программы или как их еще называют скетчи). Достаточно просто скопировать готовый скетч и залить программу на плату. И все! Все просто! А вот ваши самоделки будут поражать и удивлять многих Ваших друзей и знакомых.
В нашем блоге мы будем развивать тему ардуино, и параллельно ей вести еще небольшой практикум по цифровой технике: "Начала цифровой техники" на базе нашей микросхемы К155ЛА3. Здесь вы узнаете что такое логические элементы, как они работают и конечно же мы будем много экспериментировать. Так шаг за шагом мы соберем свой собственный конструктор.
Что же нам понадобиться в первую очередь? Список для начала будет такой:
1. макетная плата (бредборд)
2. перемычки папа-папа (для макетной платы)
3. источник питания на 5 вольт
4. светодиоды
5. резисторы (на 200 Ом)
6. мультитестер
7. осцилограф
8. микросхема К155ЛА3
9. микросхема 555