[image]

Arduino

Перенос из темы «Идеи для Arduino»
 
1 2 3 4 5 6
+
-
edit
 

Balancer

администратор
★★★★★
Принесли сегодня заказанный Arduino Uno R3.

Поставил IDE (в Ubuntu оно в Центре приложений есть, ни качать ничего самому не надо, ни разбираться — пара кликов и оно уже установлено), проверил на встроенном светодиоде — работает :) Всё очень просто и наглядно, пара минут ушла, чтобы разобраться что к чему и запустить первый тест. Понятно, почему это решение такое популярное в народе.

Шилдов не заказывал, в России дорого, так что буду месяц с китайских магазинов ждать :) Только плата прототипирования для тестов. Даже светодиодов дома нет :D И с проводами напряг (в Китае заказал готовые провода для прототипирования... Дожил :D)
   
+
-
edit
 

Balancer

администратор
★★★★★
Заказал в Китае (сегодня дошёл) Arduino Nano. Удобно для всяких экспериментов втыкать прямо в макетную плату :) Чтобы с лишними проводами болтающимися не мучиться, когда шилды не нужны. Внешне напоминает старую советскую 40-ногую микросхему.

Воткнул в USB сейчас, залил программу—«мигалку» — работает :)

Надо будет подумать, что полезного придумать можно.

Брал за $10.45 с

Правда, по этому лоту теперь доставка не бесплатная. Спасибо Почте России, видимо :) Впрочем, спасибо китайцам, оно уже и за $8.33 есть:

Free shipping! Original Nano 3.0 atmega328 mini version FT232RL imported chips support win7 Win8 for arduino with USB cable-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap cable holder, Buy Quality cable board directly from China board router Suppliers: Notice: The new tracking number for China Post Ordinary Small Packet Plus only can track it have been ship ou // www.aliexpress.com
 
   27.0.1453.11027.0.1453.110

+
-
edit
 

Balancer

администратор
★★★★★
Пришли сегодня Sensor Shield V5.0

$3.74 Arduino Compatible Sensor Shield V5.0 Expansion Board - 100% Arduino compatible at FastTech - Worldwide Free Shipping

Probably the best deal for a Arduino Compatible Sensor Shield V5.0 Expansion Board 100% Arduino compatible USD 3.74 as of 3/3/2015 - Free shipping worldwide on all orders. Prices unbelievably cheap. // www.fasttech.com
 

Самый дешёвый вариант ($5.99) нашёл не на Ali, а в новом для меня FastTech. Выслали, правда, заказ без трек-номера, так что я c 8 апреля был в состоянии неизвестности :) Упаковали не так хорошо, как товары с Ali. Торчащие ноги в пенопласт не сунули, так что чуть-чуть погнулись.

Также пришёл заказ с Ali на индикатор с кнопками:

Free Shipping LCD Keypad Shield LCD1602 LCD 1602 Module Display For ATMEGA168 ATMEGA328 ATMEGA2560 ATMEGA1280 UNO blue screen-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap atmega168 circuit, Buy Quality display lcd directly from China display display Suppliers:   /* The circuit: * LCD RS pin to digital pin 8 * LCD Enable pin to digital pin 9 * LCD D4 pin to digital pin 4 // www.aliexpress.com
 
$5.89 сейчас, я заказывал за $6.56. Этот пришёл в отличном виде. Но, блин, я обломался. Оба этих шилда не стекируются. Каждый надевается на самый верх (что, в общем, логично). При этом я уже заранее думал индикатор влепить на макетную плату (вместе с Arduino Nano), а он, собака, туда не влезает :) Точнее, влезает, но его ноги оказываются не на информационных дорожках, а на дорожках питания. Надо заказывать большую макетную плату и ждать ещё два месяца :) А пока всё на проводках поболтается…

А, вообще, при заказах надо будет смотреть внимательно, чтобы шилды были стекируемые. Типа такого:


Кстати, только сегодня, пытаясь засунуть шилд с индикатором в макетную плату, обратил внимания, что у Ардуино метрический шаг ножек :) 2.5 мм. Сразу вспомнилось, как Z80 запихивали в советские метрические платы :)
   27.0.1453.11027.0.1453.110

RU Серокой #19.06.2013 13:20  @Balancer#19.06.2013 12:41
+
-
edit
 

Серокой

координатор
★★★★
Balancer> у Ардуино метрический шаг ножек :) 2.5 мм.
Странно, полоски штырей 2,54 мм. Неуж они специально сделали для втыкания метрический?
А вообще уже давно микросхемы перешли на метрический. 0,5 мм шаг, например. Хотя тоже анархия )
   
RU Balancer #19.06.2013 16:57  @Серокой#19.06.2013 13:20
+
-
edit
 

Balancer

администратор
★★★★★
Серокой> Странно, полоски штырей 2,54 мм. Неуж они специально сделали для втыкания метрический?

Я так понял, что Arduino — девайс итальянской разработки, а в Италии — метрический шаг. Посмотрел — и оригинальный итальянский Arduino, и все китайские шилды — все метрические.

А вот макетная плата, «как и положено» — дюймовая, 2.54мм. Что интересно, китайский Arduino Nano — с ножками 2.54 мм, а то бы давно заметил нестыковку. А так — воткнул его в макетную плату и сидит там.

Серокой> А вообще уже давно микросхемы перешли на метрический. 0,5 мм шаг, например

Ну, я за ними перестал следить ещё во времена 2.54 и 1.27мм :) Думал, наоборот, сейчас все поголовно на дюймовых сидят.
   27.0.1453.11027.0.1453.110
RU Balancer #19.06.2013 17:04  @Balancer#19.06.2013 16:57
+
-
edit
 

Balancer

администратор
★★★★★
Кстати, забавно. У самого этого индикатора, без шилда, шаг дюймовый :)

Так что шилд ещё и задачу адаптации ножек играет :D
   27.0.1453.11027.0.1453.110
+
+1
-
edit
 

Balancer

администратор
★★★★★
Есть какое-то извращённое удовольствие после сотен тысяч строк на высокоуровневых языках поковыряться на низком (пусть и относительно) уровне :)
code c
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
  3.  
  4. void setup()
  5. {
  6.   lcd.clear();
  7.   lcd.begin(16, 2);
  8.   lcd.print("Hello Airbase!");
  9. }
  10.  
  11. void loop()
  12. {
  13. }
   27.0.1453.11027.0.1453.110
+
+1
-
edit
 

Balancer

администратор
★★★★★
А так — пока слепил гляделку портов:
code c
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
  3.  
  4. int adc_key_val[5] = { 50, 200, 400, 600, 800 };
  5. int in_shift = 0;
  6.  
  7. int NUM_KEYS = 5;
  8. int adc_key_in;
  9. int key=-1;
  10. int oldkey=-1;
  11.  
  12. enum {
  13.   KEY_RIGHT,
  14.   KEY_UP,
  15.   KEY_DOWN,
  16.   KEY_LEFT,
  17.   KEY_SELECT
  18. };
  19.  
  20. void setup()
  21. {
  22.   lcd.clear();
  23.   lcd.begin(16, 2);
  24. }
  25.  
  26. void loop()
  27. {
  28.   adc_key_in = analogRead(0); // read the value from the sensor
  29.   key = get_key(adc_key_in); // convert into key press
  30.  
  31.   int i1 = (1+in_shift)%8;
  32.   int i2 = (2+in_shift)%8;
  33.   show_value(0, 0, 7, String("A")+i1+"=", analogRead(i1));
  34.   show_value(0, 1, 7, String("A")+i2+"=", analogRead(i2));
  35.   show_value(9, 0, 4, String("D")+i1+"=", digitalRead(i1));
  36.   show_value(9, 1, 4, String("D")+i2+"=", digitalRead(i2));
  37.  
  38.   if (key != oldkey) // if keypress is detected
  39.   {
  40.     delay(50); // wait for debounce time
  41.     adc_key_in = analogRead(0); // read the value from the sensor
  42.     key = get_key(adc_key_in); // convert into key press
  43.     if (key != oldkey)
  44.     {
  45.       oldkey = key;
  46.       if(key == KEY_DOWN)
  47.           in_shift ++;
  48.       if(key == KEY_UP)
  49.           in_shift --;
  50.     }
  51.   }
  52.   delay(50);
  53. }
  54.  
  55. // Convert ADC value to key number
  56. int get_key(unsigned int input)
  57. {
  58.   int k;
  59.  
  60.   for (k = 0; k < NUM_KEYS; k++)
  61.   {
  62.     if (input < adc_key_val[k])
  63.     {
  64.       return k;
  65.     }
  66.   }
  67.  
  68.   if (k >= NUM_KEYS)k = -1; // No valid key pressed
  69.   return k;
  70. }
  71.  
  72. void show_value(int x, int y, int pad, String prompt, int value)
  73. {
  74.   lcd.setCursor(x, y);
  75.   lcd.print(prompt);
  76.   int plen = prompt.length();
  77.   for(int p=plen; p<pad; p++)
  78.     lcd.print(" ");
  79.  
  80.   int vpos = x+plen;
  81.  
  82.   String v = String(value);
  83.   int vlen = v.length();
  84.   if(plen + vlen < pad)
  85.       lcd.setCursor(x+pad-vlen, y);
  86.   else
  87.       lcd.setCursor(x+plen, y);
  88.   lcd.print(v);
  89. }

Можно листать входы кнопками «вверх» и «вниз» :)
   27.0.1453.11027.0.1453.110
RU Balancer #19.06.2013 17:22  @Balancer#19.06.2013 17:18
+
-
edit
 

Balancer

администратор
★★★★★
Смущают только размеры, блин. Такая простенькая программа — уже 5.5 кбайт.
   27.0.1453.11027.0.1453.110
RU Серокой #19.06.2013 17:26  @Balancer#19.06.2013 17:22
+
-
edit
 

Серокой

координатор
★★★★
Balancer> Смущают только размеры, блин. Такая простенькая программа — уже 5.5 кбайт.

Да-да, мой первый AVR2313 - 2Кб, и ничего, влезало. :)
А здесь наверное отладчики всякие встроенные, типа монитор, жрут место?
   
RU Balancer #19.06.2013 17:37  @Серокой#19.06.2013 17:26
+
-
edit
 

Balancer

администратор
★★★★★
Серокой> А здесь наверное отладчики всякие встроенные, типа монитор, жрут место?

Да нет, вроде. Первый пример, с Hello world весит около 2.5кбайт. Т.е. основной рантайм где-то столько и занимает. Получается, что такая простенькая программа «чистыми» весит около 3 кбайт.

Попробовать, что ли, разобраться, как туда Форт воткнуть? :)
   27.0.1453.11027.0.1453.110
+
-
edit
 

hcube

старожил
★★
Balancer> Смущают только размеры, блин. Такая простенькая программа — уже 5.5 кбайт.

Это потому, что ты фактически тащишь туда полные высокоуровневые библиотеки с sprinf и т.д. Если бы написал процедуры инициализации LCD и запихивания туда циферок ручками - программа была бы сильно меньше.

Кстати у меня валяется уйма платок под 8 и 128 меги, которые были именно как макетки сделаны - хочешь что-то спаять - могу отдать, все равно без дела пылятся. И контроллеров тоже насыплю.
   10.010.0
Это сообщение редактировалось 19.06.2013 в 18:15
+
-
edit
 

Balancer

администратор
★★★★★
Кстати, заметил тут... «Правильные» шилды под Arduino — точно стекируемые. Такие:

На таких коннекторах:

А вот китайские, можно сказать, что вообще все — на простой паре раздельных мама+папа, напаянных со смещением:
   27.0.1453.11027.0.1453.110
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Это потому, что ты фактически тащишь туда полные высокоуровневые библиотеки с sprinf и т.д. Если бы написал процедуры инициализации LCD

sprintf там нету, вся инициализация LCD есть в 2.5-килобайтном «Hello world» :)

hcube> хочешь что-то спаять - могу отдать

Не. Паять не интересно уже :) Хотя иногда паяльник и приходится брать…
   27.0.1453.11027.0.1453.110
+
-
edit
 

Balancer

администратор
★★★★★
Продолжаю развлекаться :) Подцепил ещё весной купленный и так до сих пор без дела валявшийся DHT-датчик, сенсор влажности и температуры, работающий по I2C.

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

code cpp
  1. #include <dht.h>
  2.  
  3. #include <LiquidCrystal.h>
  4. LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
  5. DHT dht = DHT();
  6.  
  7. void setup()
  8. {
  9.   dht.attach(A1);
  10.   lcd.clear();
  11.   lcd.begin(16, 2);
  12. }
  13.  
  14. void loop()
  15. {
  16.   int last_t = 999;
  17.   int last_h = 999;
  18.  
  19.   dht.update();
  20.   switch(dht.getLastError())
  21.   {
  22.     case DHT_ERROR_OK:
  23.       last_t = dht.getTemperatureInt();
  24.       last_h = dht.getHumidityInt();
  25.     case DHT_ERROR_READ_TIMEOUT:
  26. //    Таймаут не является ошибкой. Показываем прежнее значение.
  27.       show_value(0, 0, 12, "Temp  = ", String(last_t)+"C");
  28.       show_value(0, 1, 12, "Humid = ", String(last_h)+"%");
  29.       break;
  30.  
  31.     case DHT_ERROR_START_FAILED_1:
  32.       message("Start failed 1");
  33.       break;
  34.     case DHT_ERROR_START_FAILED_2:
  35.       message("Start failed 2");
  36.       break;
  37.     case DHT_ERROR_CHECKSUM_FAILURE:
  38.       message("Checksum error");
  39.       break;
  40.   }
  41.  
  42.   delay(2000);
  43. }
  44.  
  45. void message(String msg)
  46. {
  47.   lcd.clear();
  48.   lcd.setCursor(0, 0);
  49.   lcd.print(msg);
  50. }
  51.  
  52. void show_value(int x, int y, int pad, String prompt, String value)
  53. {
  54.   lcd.setCursor(x, y);
  55.   lcd.print(prompt);
  56.   int plen = prompt.length();
  57.   for(int p=plen; p<pad; p++)
  58.     lcd.print(" ");
  59.  
  60.   int vpos = x+plen;
  61.  
  62.   String v = String(value);
  63.   int vlen = v.length();
  64.   if(plen + vlen < pad)
  65.     lcd.setCursor(x+pad-vlen, y);
  66.   else
  67.     lcd.setCursor(x+plen, y);
  68.   lcd.print(v);
  69. }


Материалы:

Подключение датчика температуры и влажности DHT11 к Arduino — Амперка / Вики

В этой статье рассматривается работа с сенсором температуры и влажности, сделанном на базе датчика DHT11. Этот сенсор имеет цифровой сигнал. И температура и влажность отдаются им по одному сигнальному проводу (S). DHT11 общается с принимающей стороной, такой как Arduino по собственному протоколу. Коммуникация двунаправлена и в общих чертах выглядит так: Благодаря тому, что сенсор делает измерения только по запросу, достигается энергоэффективность: пока общения нет, датчик потребляет очень небольшой ток. Сенсор имеет стандартный 3-проводной интерфейс и поэтому может быть легко подключен к IO Shield. // Дальше — wiki.amperka.ru
 
http://electronics-lab.ru/blog/mcu/46.html
   27.0.1453.11027.0.1453.110
+
-
edit
 

Balancer

администратор
★★★★★
Arduino
Выпустили Arduino Yún со встроенными Wi-Fi и Ethernet. Для того, чтобы 16-битный 16МГц ATmega с 2.5кБ ОЗУ получил сетевой функционал, к нему (в качестве обвязки) поставили 400МГц Atheros AR9331 c 64Мб DDR2 и Linux на борту.

Обалдеть.

Всё равно что для облегчения перевозки прицепа на Запорожце выделить к нему в комплект фуру :)

// habrahabr.ru

// Транслировано с juick.com
   

+
-
edit
 
+
-
edit
 
RU Бывший генералиссимус #15.01.2014 17:46  @Balancer#08.01.2014 14:15
+
-
edit
 
Balancer> http://habrahabr.ru/company/kolibrios/blog/203948/

В начале 2000-х много имел дело с поделиями DM&P. И Vortex, как раз, оставил скорее негативное ощущение. Так что, была б возможность купить Галилео без наценки, купил бы именно его.
а вот более ранний DM&P-шный процессор, M6117D, мне нравился. Но, к сожалению, сейчас 386SX-40 - это "ни о чём", и памяти всего 4 мегабайта :)
   11.011.0
+
-
edit
 

Balancer

администратор
★★★★★
Давно не флудил по теме :)

Заказал тут по случаю сперва цветной графический индикатор 128x160:
http://www.aliexpress.com/item/.../1489115163.html
Подключил без проблем, соединений минимум:



Только в штатных библиотеках русского нет, но не сложно переписать на использование своего шрифта. Работает достаточно шустро, даже что-то типа простенького осциллографа на два канала изобразил :)



Это на фото 50Гц наводки с 5-см провода.
   34.0.1847.11634.0.1847.116
+
-
edit
 

Balancer

администратор
★★★★★
А ещё я спалил свой Arduino Nano (на фотке выше который). Не весь, но с питанием проблемы. Если от USB только включать, то светодиоды светятся, мигает и... всё. По USB детектится, но как неопознанное устройство, периферию не тянет никакую. Спалил, запитав от его 5В выхода штук 7 светодиодов. Что странно, по паспорту 0.5А выдавать должен...

Теперь для работы приходится запитывать внешним напряжением. Тогда всё работает.

Заказал ещё один китайский Nano, благо, цены совсем смешные стали, но пока ещё в пути :)
http://www.aliexpress.com/item/.../1702563979.html
   34.0.1847.11634.0.1847.116
+
-
edit
 

Balancer

администратор
★★★★★
Однако, индикатор 128x160 как-то маловат, так что заказал я и здоровый 3.2" 240x320, да ещё и с тачем :)
http://www.aliexpress.com/item/.../943009595.html
Однако, уже не дёшево, почти 450 рублей! :D

Получил, приличная игрушка. Большой такой. Можно уже что-то серьёзное замутить. И вот тут немного обломался. Шина данных у него параллельная. На мои Arduino UNO/Nano подсоединить можно, но если с тачем, то будут задействованы все выходы. Для подсоединения датчиков места не останется. Если как расширенный индикатор для работы через USB, то ещё ничего... Но все примеры рассчитаны на более разлапистые Arduino Mega/Mega 2560 и Arduino Due. При чём, не иначе как из-за большого объёма их памяти, тесты и демки на Uno/Nano не влезут. Надо разбираться и ковыряться самому практически с нуля. Ну и проводов целый жгут выводить :)

В общем, пока заморачиваться не стал. То ли когда время будет с Uno своим повожусь, то ли китайский клон Due закажу:
http://www.aliexpress.com/item/.../1611618342.html
Благо, $16 не так много за 84Mhz/96k SRAM/512k Flash.
   34.0.1847.11634.0.1847.116
+
-
edit
 

Balancer

администратор
★★★★★
Кстати, интересный вариант попался:
http://www.aliexpress.com/item/.../1751922704.html
Фишка в том, что рядом с каждым стандартным выходом разведено ещё посадочное место для сенсора (сигнал/питание/земля).



Удобно, когда надо сенсоры вешать и не хочется заморачиваться сенсор-шилдом. Думаю, вот, не взять ли такой про запас :)
   34.0.1847.11634.0.1847.116
RU Ропот #20.04.2014 21:57  @Balancer#18.04.2014 03:54
+
-
edit
 

Ропот

опытный

Balancer> А ещё я спалил свой Arduino Nano (на фотке выше который).
Себе заказывал сразу два dreamer nano v4.0, на подобный случай :)
http://ru.aliexpress.com/item/.../1776526135.html
   22
RU Balancer #21.04.2014 12:04  @Ропот#20.04.2014 21:57
+
-
edit
 

Balancer

администратор
★★★★★
Ропот> Себе заказывал сразу два dreamer nano v4.0, на подобный случай :)

А в чём у него прикол? Как вижу по характеристикам, только SRAM на 0.5кБ больше, да входов выходов по спецификации больше, а по распиновке непонятно — что там с ними? :)
   3434
1 2 3 4 5 6

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