[image]

Уроки программирования Arduino

Перенос из темы «Чайные радиоэлектронные вопросы»
 
1 2 3 4 5 6 7 8 9
RU Balancer #15.01.2016 10:56  @Валентин_НН#15.01.2016 10:41
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> В курсе. Но, по-моему, это какая-то мертворожденная затея (обрати внимание - та же Амперка их уже давно не продает)

Про Амперку не скажу, а на Ali их много :)

Хотя, безусловно, продаётся меньше, чем Uno R3. Всё же, вещица не универсальная, а специфическая.

В.Н.> Совершенно непонятно, чем эта Лилипад больше подходит для одежды, чем обычные платы.

Она вдвое меньше Uno и из неё ничего не торчит — плоская :)

   33
RU Валентин_НН #15.01.2016 11:11  @Balancer#15.01.2016 10:56
+
-
edit
 

Валентин_НН

литератор
★★★
Balancer> Она вдвое меньше Uno и из неё ничего не торчит — плоская :)

мне пришла нано без штырьков. тоже, вроде, ничего не торчит особо.
   43.043.0
RU Balancer #15.01.2016 12:25  @Валентин_НН#15.01.2016 11:11
+
-
edit
 

Balancer

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

А, ну, это тоже вариант. Хотя там USB торчит :)

Ещё у Lilypad намного шире диапазон питания, чем даже у Uno (и, тем более, у 5В Nano) —от 2.7 до 5.5В. Можно питать тупо от одного литиевого аккумулятора. И дырки, в отличие от Nano, более удобные для того, чтобы пришивать (стандартные у Nano слишком мелкие).
   33
RU Валентин_НН #15.01.2016 14:36  @Balancer#15.01.2016 12:25
+
+1
-
edit
 

Валентин_НН

литератор
★★★
Balancer> Ещё у Lilypad намного шире диапазон питания, чем даже у Uno (и, тем более, у 5В Nano) —от 2.7 до 5.5В. Можно питать тупо от одного литиевого аккумулятора.
О, а вот это аргумент.
Ладно, уговорил, чёрт языкатый, куплю при случае. Может жена придумает куда приспособить
   43.043.0
LT AleksejLt #16.01.2016 00:11  @Balancer#15.01.2016 10:47
+
-
edit
 

AleksejLt

опытный

Balancer> Лишние контакты же. Снижение надёжности и громоздкость :) Для отладки — просто в макетную плату втыкаешь, а в релизе, 8 ног с шагом 2.54 запаять — там бояться нечего совсем :)

У меня 25вт паяльник, боюсь перегреть микросхемы. Может со временем приобрету на 15вт. Ты каким паяешь?

Balancer> Вот ЖК-индикатор (1602 в виде Arduino-модуля) китайский странно вести себя стал — вместо ярко-белого на синем светит тёмно-серым на синем.

Брал с коллегой на двоих 10 штук :) Получилось по 1.25 евро за штуку. Но он без всяких кнопок, даже пинов нет.

Balancer> Хотя ещё есть вариант, где разъёмы выведены вверх. Можно при отладке втыкать без сенсор-шилда что-нибудь:
Balancer> LCD 1602 + keypad Shield for Arduino LCD display-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Интересный вариант. Только смысл его в виде шилда делать? Сверху всё равно ничего не поставишь - кнопки :)

Я сейчас в поисках подвесного ящика для всякой мелочевки, типа такого. Может есть идеи?
Modular drawer storage box smd storage box SMA SMT component container storage boxes electronic case kit IC boxes-in Storage Boxes & Bins from Home & Garden on Aliexpress.com | Alibaba Group
   43.043.0
RU Balancer #16.01.2016 12:25  @AleksejLt#16.01.2016 00:11
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> У меня 25вт паяльник, боюсь перегреть микросхемы. Может со временем приобрету на 15вт. Ты каким паяешь?

60Вт :) Но с регулируемой температурой. Я вот такой брал:

220V 240V AC 60W 200 450 degree Temperature Adjustable Electric Soldering Iron Station Tool Kit + 4pc Extra Soldering Tips 907-in Electric Soldering Irons from Industry & Business on Aliexpress.com | Alibaba Group

Cheap tip brush, Buy Quality iron tip directly from China tip tap Suppliers:   Quick Overview: 200-450°C 220V 60W Temperature Adjust Soldering Iron Electric Welding 4 Tip 907 &nbsp // www.aliexpress.com
 

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

AleksejLt> Брал с коллегой на двоих 10 штук :) Получилось по 1.25 евро за штуку. Но он без всяких кнопок, даже пинов нет.

Это голый индикатор. А то — шилд :) Кстати, к голому индикатору полезно припаять такой модуль:

retail sale drop shipping IIC/I2C / Interface LCD 1602 2004 LCD Adapter Plate for Arduino-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap plate resistor, Buy Quality plate directly from China adapter 48v Suppliers: Notice: The new tracking number for China Post Ordinary Small Packet Plus only can track it have been ship out of // www.aliexpress.com
 

прямо ряд в ряд, получается такое:

И индикатор можно цеплять с данными по одному последовательному i²C проводу.

AleksejLt> Интересный вариант. Только смысл его в виде шилда делать? Сверху всё равно ничего не поставишь - кнопки :)

Смысл, когда при отладке нужно дополнительные сенсоры вешать. Так приходится втыкать сенсор-шилд между Ардуино и дисплеем.

AleksejLt> Я сейчас в поисках подвесного ящика для всякой мелочевки, типа такого. Может есть идеи?

Не, у меня в коробках раскидано по шкафам и полкам, вешать всё равно некуда :)
   33
LT AleksejLt #16.01.2016 17:27  @Balancer#16.01.2016 12:25
+
-
edit
 

AleksejLt

опытный

Balancer> 60Вт :) Но с регулируемой температурой.

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

Balancer> Выбирал в первую очередь из наличия плоского жала в комплекте. Я коническими паять так и не привык.

А я наоборот. Хотя в детстве был Г-образный советский паяльник, вроде, плоский.

Balancer> И индикатор можно цеплять с данными по одному последовательному i²C проводу.

Я не заморачиваюсь по поводу пользовательского интерфейса :) У меня таймер для кухни показывает время в двоичной системе.

Balancer> Не, у меня в коробках раскидано по шкафам и полкам, вешать всё равно некуда :)

У меня на подоконниках, но жена слегка недовольна :)
   43.043.0
RU Валентин_НН #23.01.2016 15:41  @Balancer#16.01.2016 12:25
+
-
edit
 

Валентин_НН

литератор
★★★
Balancer> прямо ряд в ряд, получается такое:
Balancer> lcd 1602 lcd display IIC/I2C 1602 Serial Blue Backlight LCD Display for arduino 2560 UNO AVR Free Shipping Dropshipping-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group
Balancer> И индикатор можно цеплять с данными по одному последовательному i²C проводу.

а если прицепить такой дисплей, то управлять им надо будет как-то более по другому, чем через стандартную библиотеку #include <LiquidCrystal.h>?
   43.043.0
RU Balancer #23.01.2016 17:00  @Валентин_НН#23.01.2016 15:41
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> а если прицепить такой дисплей, то управлять им надо будет как-то более по другому, чем через стандартную библиотеку #include ?

Там другая стандартная библиотека :) Типа (не проверял — адаптер такой есть, но пока не припаян к индикатору, а индикатор с готовым адаптером ещё в пути):
code cpp
  1. lcd.setCursor(0,0);
  2. lcd.print("Hello, world!");


Вот примеры использования:

Уменьшаем количество проводов в Arduino — I2C LCD экран и RTC часы по двум проводам

Совсем недавно познакомился с Ардуино, поэтому многим мои примеры покажутся простыми. Однако таким же новичкам, как я, данная информация будет полезна и... // geektimes.ru
 

Подключение LCD экрана LCM 1602 с I2C к Arduino | Блог Сизова Сергея

Спасибо! Как раз осваиваю азы ардуино, ваш код пришелся очень кстати. Спасибо!!! Всё заработало!!! Пока не поменял библиотеку компилировал с ошибкой. Arduino: 1.6.4 (Windows XP), Плата»Arduino Uno» Изменена опция сборки, пересобираем все sketch_may27e.ino:3:31: fatal error: LiquidCrystal_I2C.h: No such file or directory compilation terminated. Ошибка компиляции. Что это за ошибка??? Компилятор не может найти файл библиотеки LiquidCrystal_I2C.h, библиотека подключена? Это можно посмотреть Скетч-Импортировать библиотеку А почему в скетче не указаны пины к которым подключен I2C? // Дальше — sizovsergey.ru
 

О, кстати, о тестировании и подключении — можно на макетной же плате собрать :D



А то я в уме держал сразу на индикатор паять для сторонних устройств.
   33
RU Валентин_НН #23.01.2016 21:16  @Balancer#23.01.2016 17:00
+
+1
-
edit
 

Валентин_НН

литератор
★★★
В.Н.>> а если прицепить такой дисплей, то управлять им надо будет как-то более по другому, чем через стандартную библиотеку #include ?
Balancer> Там другая стандартная библиотека :)
О, и тут уже позаботились. Остается только сесть и программировать. Блин, будь я Путиным, ну ладно, Медведевым - я бы всех обязал освоить программирование микроконтроллеров. Пусть и еа базовом уровне. Не написал прогу - фиг тебе, а не паспорт
   
RU Balancer #23.01.2016 22:22  @Валентин_НН#23.01.2016 21:16
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> О, и тут уже позаботились. Остается только сесть и программировать.

Сейчас попробовал через такой i²C адаптер подключить LCD 1602 к ESP8267 — что-то сходу не вышло. Потом процесс разбирательства уткнулся грамм в 200 бурбона.

В.Н.> Не написал прогу - фиг тебе, а не паспорт

Ну, хоть тут мне беспокоиться не о чем :)
   33
RU Валентин_НН #24.01.2016 10:53  @Balancer#23.01.2016 22:22
+
-
edit
 

Валентин_НН

литератор
★★★
Balancer> Потом процесс разбирательства уткнулся грамм в 200 бурбона.
Мадам, Вы кокотка :D "грамм двести"...
Писал бы уж прямо - хлопнул стакан бурбона :D
   
RU Balancer #24.01.2016 10:58  @Валентин_НН#24.01.2016 10:53
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> Писал бы уж прямо - хлопнул стакан бурбона :D

Ну не за раз же! А захода в три-четыре и по глоточку :)
   33

RU Balancer #27.01.2016 18:29  @Balancer#23.01.2016 17:00
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> О, кстати, о тестировании и подключении — можно на макетной же плате собрать :D

Блин. Три дня в фоновом режиме голову ломал, почему не работает. И уже с ESP8266 для однозначности перенёс на Arduino Nano, запитав от 5В. И перепробовал четыре разных библиотеки в разных конфигурациях. Фигвам. Подсветка светится и всё тут. С некоторыми скетчами мигает при старте. Голый экран...

Выручило гуляние по комментариям (у других продавцов, но с такими же девайсами). Нашёл такой совет:

If you see blinking backlight, but don't see symbols - use screwdriver and rotate potentiometer clockwise.
 


Полез искать, что же это за потенциометр:

I2C LCD1602(Blue) - Elecrow

An LCD display that can display a max of 16x2 charactors. with the help of the I2C bus convertor and related libraries, you can easily use this module with just 2 wires. Model: DLC11602A Connect the I2C LCD1602 to the I2C port of Arduino(SDAA4 and SCLA5) and power this module with 5V voltage as belows: After connecting the hardware, Downloadthe "Hello World" demo to your Arduino board. you can refer to Here to learn how to download the sketchs. You can also make the LCD to display your own chars or logos as you like, you need to constrat your own chars in your program, as the method in the "CustomChars" demo. // Дальше — www.elecrow.com
 


Оказывается — контрастность :) Покрутил. В одну сторону становится просто голый чистый экран (как у меня по умолчанию и было). В другую — все пиксели всех позиций светятся, независимо от активации. В средних положениях — то, что надо :)
   33
RU Валентин_НН #27.01.2016 20:05  @Balancer#27.01.2016 18:29
+
-
edit
 

Валентин_НН

литератор
★★★
Balancer> Блин. Три дня в фоновом режиме голову ломал, почему не работает.
Balancer> ...
Balancer> Оказывается — контрастность
Уфф. от сердца отлегло. значит я не одинок :)
   43.043.0
NO Balancer #27.01.2016 20:49  @Валентин_НН#27.01.2016 20:05
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> Уфф. от сердца отлегло. значит я не одинок :)

Такая же фигня была? :)
   33
RU Валентин_НН #27.01.2016 21:30  @Balancer#27.01.2016 20:49
+
-
edit
 

Валентин_НН

литератор
★★★
Balancer> Такая же фигня была? :)

у меня все освоение ардуины из такой фигни состоит
   43.043.0

RU Валентин_НН #20.03.2016 17:16
+
-
edit
 

Валентин_НН

литератор
★★★
у меня тут назрела кучка дурацких вопросов
1
в каких случаях надо писать
#define ledNum 13
а в каких
unsigned char ledNum=13;
ну или не unsigned, а любой другой тип?

ПС. Сам вспомнил.
define, это если значение не меняется.

блин, как плохо заниматься этим делом раз от разу. Чуть не с нуля приходится каждый раз всё вспоминать
   45.045.0
Это сообщение редактировалось 20.03.2016 в 17:39
RU Валентин_НН #20.03.2016 19:11  @Валентин_НН#20.03.2016 17:16
+
-
edit
 

Валентин_НН

литератор
★★★
В.Н.> у меня тут назрела кучка дурацких вопросов
В.Н.> 1
2

code c
  1. Ipos += 1;
  2.     // wrap around at end
  3.     if( Ipos >= NUM_LEDS) {
  4.       Ipos -= NUM_LEDS;  
  5.     }

почему при достижении Ipos значения NUM_LED, его просто не обнулить? в этом есть какой-то особый смысл или просто автору захотелось написать именно так?
   42.0.2311.13542.0.2311.135
NO JackSmith #20.03.2016 19:30  @Валентин_НН#20.03.2016 17:16
+
+1
-
edit
 

JackSmith

втянувшийся

В.Н.> ПС. Сам вспомнил.
В.Н.> define, это если значение не меняется.
если переменная не будет меняться в теле программы, то компилятор просто выполнит подстановку так же как в случае использования #define

правда если переменная будет объявлена как глобальная, это приведет к избыточному коду, т.к. так как обращение к таким переменным происходит по 16-битному адресу.

AVR035: эффективное кодирование на C для 8-битных AVR | avr | programming

Приемы уменьшения размера кода и повышения быстродействия программы на языке C для микроконтроллера AVR. // microsin.net
 
Следующий пример иллюстрирует разницу в размере кода и скорости работы кода для локальных переменных в сравнении с глобальными.
 

code text
  1. char global; /* Это глобальная переменная */
  2.  
  3. void C_task main(void)
  4. {
  5.    char local;    /* Это локальная переменная */
  6.    global -= 45;  /* Вычитание из глобальной переменной */
  7.    // LDS R16,LWRD(global) ; загрузка переменной из SRAM в регистр R16
  8.    // SUBI R16,LOW(45) ; выполнение вычитания
  9.    // STS LWRD(global),R16 ; сохранение данных обратно в SRAM
  10.    local -= 34;   /* Вычитание из локальной переменной */
  11.    // SUBI R16,LOW(34) ; выполнение вычитания напрямую из локальной
  12.    // ; переменной в регистре R16
  13. }

Обратите внимание, что инструкции LDS и STS (загрузка из SRAM и сохранение в SRAM) используются для для доступа к переменной в SRAM. Эти инструкции занимают 2 слова инструкций, и выполняются за 2 цикла тактовой частоты. Для этого примера получается следующее: для глобальной переменной 10 байт кода и 5 циклов, для локальной переменной 2 байта кода и 1 цикл.
 
   43.043.0
20.03.2016 19:39, Валентин_НН: +1: за несение света в массы
RU Валентин_НН #15.12.2018 12:38
+
-
edit
 

Валентин_НН

литератор
★★★
не очень понимаю, для чего нужен такой код

int distance = analogRead (DIST);
distance = map (distance,minVal,maxVal,0,8);
distance = constrain (distance,0,8);


в первой строке получаем значение с датчика.
во второй строке мы "масштабируем" полученное значение до диапазона от нуля до восьми
а третья строка для чего? constrain нужен (няп), чтобы отбросить значения, выходящие за указанный диапазон. Но у нас не может получиться таких значений, т.к. мы диапазон задали в предыдущей строке.
так зачем тогда нужен constrain ?
   1818
?? Balancer #15.12.2018 12:43  @Валентин_НН#15.12.2018 12:38
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> так зачем тогда нужен constrain ?

Чтобы наверняка!! :)
   55
RU Валентин_НН #15.12.2018 12:46  @Balancer#15.12.2018 12:43
+
-
edit
 

Валентин_НН

литератор
★★★
В.Н.>> так зачем тогда нужен constrain ?
Balancer> Чтобы наверняка!! :)
Точно?
просто это пример из великого и ужасного Джереми Блума, которого советуют всяким ардуино-новичкам.
выходит, что в данном случае код просто избыточен? я правильно понял?
   1818
?? Balancer #15.12.2018 12:57  @Валентин_НН#15.12.2018 12:46
+
-
edit
 

Balancer

администратор
★★★★★
В.Н.> выходит, что в данном случае код просто избыточен? я правильно понял?

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

...

Кстати, а есть гарантия, что distance будет в районе [minVal, maxVal]? В примере про эти значения ничего не сказано. Если minVal > 0, а maxVal < 1023, то результат map в общем случае может выйти за пределы [0, 8]. Тогда ограничение имеет смысл.
   55
RU Валентин_НН #15.12.2018 13:44  @Balancer#15.12.2018 12:57
+
-
edit
 

Валентин_НН

литератор
★★★
В.Н.>> выходит, что в данном случае код просто избыточен? я правильно понял?
Balancer> Ну, может, приучают ставить проверки. Вдруг, в другой раз, данные не будут заранее нормированы.
онн б тогда хоть объяснил, для чего он так поступает. Чтоб было понимание процесса, а не просто "делай как я"
кстати, спасибо, что акцентировал внимание на необходимости проверок входных данных.
наверное, это первое чему учат всяких программистов - быть готовым к тому, что какая-нибудь переменная/функция выкинет какой-нить GOGI-трюк и сделает не то, что ты ожидаешь от неё.

Balancer> ...
Balancer> Кстати, а есть гарантия, что distance будет в районе [minVal, maxVal]? В примере про эти значения ничего не сказано. Если minVal > 0, а maxVal < 1023, то результат map в общем случае может выйти за пределы [0, 8]. Тогда ограничение имеет смысл.
а тут, извини, не понял почему так.
в примере значения заданы min=0, а max=500. но почему это может привести к выходу за пределы диапазона?
   1818
1 2 3 4 5 6 7 8 9

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru