Znáte poradnu, která zná odpověď na každou otázku? Zapamatujte si www.poradte.cz Určitě se vám bude hodit.
Arduino a jiná zvěrstva

vytvoření menu pomoci knihovny MENUSYSTEM - 1

27. září 2014 | 21.45 | rubrika: Arduino

Potřeboval jsem udělat jednoduché menu pro Dinduino a během hledání jsem narazil na knihovnu MENUSYSTEM z webové stránky : github.com/jonblack/arduino-menusystem

Nejen, že má jednoduché vytváření menu pomocí pár příkazů, ale hlavně jako jedna z mála knihoven umí periodicky zobrazit menu. To je důležité pro zobrazení aktuálních dat (čas, teplota, ...).

Tady je příklad je jednoduchého menu s podrobnějšícm komentářem:

#include <MenuSystem.h>

// promenne pro menu
MenuSystem ms; // instance objektu ms
Menu mm("");   // nazev menu (root)
MenuItem mm_mi1("Item 1"); // 1.polozka
MenuItem mm_mi2("Item 2"); // 2.polozka
MenuItem mm_mi3("Item 3"); // 3.polozka

// nastavene funkce pro vyber polozky
// nutne nasatvit pred udani struktury menu
//-----------------------------------------
// co se provede pri vyberu 1. polozky
void on_item1_selected(MenuItem* p_menu_item)
{
  Serial.println("Item1 Selected");
}
// co se provede pri vyberu 2. polozky
void on_item2_selected(MenuItem* p_menu_item)
{
  Serial.println("Item2 Selected");
}
// co se provede pri vyberu 3. polozky
void on_item3_selected(MenuItem* p_menu_item)
{
  Serial.println("Item3 Selected");
}

// uvodni nastaveni
void setup()
{
  Serial.begin(9600);
  // nastaveni struktury menu
  // add.item pridava dalsi polozku do menu (nazev polozky menu, & + jmeno volane funkce pri vyberu)
  mm.add_item(&mm_mi1, &on_item1_selected);
  mm.add_item(&mm_mi2, &on_item2_selected);
  mm.add_item(&mm_mi3, &on_item3_selected);
  ms.set_root_menu(&mm);
  // zobraz napovedu
  help();
}

// nekonecna smycka programu
void loop()
{
  // volani funkce pro pohyb v menu
  ovladani();
 
  // zobrazeni menu
  Menu const* cp_menu = ms.get_current_menu();
  Serial.println("----------------");
  Serial.println(cp_menu->get_selected()->get_name());
  Serial.println("----------------");
  Serial.println("");
 
  // Wait for two seconds so the output is viewable
  delay(2000);
}


void ovladani() {
  // resi pohyb po menu
  // aktualne z prikazoveho radku
  if (Serial.available()) {
    byte read = Serial.read();
    switch (read) {
      case 'w': ms.prev(); break; // nahoru
      case 's': ms.next(); break; // dolu
      case 'a': ms.back(); break; // zpet - nepouzito
      case 'd': ms.select(); break; // vyber - nepouzito
      case 'h': help(); break; // napoveda
    }
  }
}

void help() {
  Serial.println("*");
  Serial.println("* w - nahoru   *");  
  Serial.println("* s - dolu     *");
  Serial.println("* a - zpet     *");
  Serial.println("* d - vyber    *");
  Serial.println("* h - napoveda *");  
  Serial.println("*");
}

žádné komentáře | přidat komentář

DINDUINO 6/2014 - oživení

30. červen 2014 | 14.59 | rubrika: Arduino

A jakpak tomu vdechnout život?

Použil jsem tady programování přes SPI/ISP/ICSP. Podrobnější popis tohoto řešní je zde:

arduino.cc/en/Tutorial/ArduinoISP

Zapojení Arduina jako programatoru:

dinduino_6_2014_programováni.j

Ještě textově:

Arduino DINDUINO

POPIS

10 RST RESET
11 MOSI DATA
12 MISO DATA
13 SCK HODINY
GND GND ZEM

Mám navíc vypnutý automacký Reset (to standaradní Arduino neumí a musí se u něj dát kondenzátor 10-470u mezi Reset (+) a zem (-)).

Používám prostředí Arduino 1.01 a 1.05 a jako typ Arduina mám Arduino MINI /w Atmega 328.

Typ programatoru Arduino as ISP.

Nahrávám pomoci File > Upload Using Programmer .

První program : www.pise.cz/blog/ftp/posjirka/dinduino_6_2014_zakl.ino

dinduino_6_2014_program1

dinduino_6_2014_program2

žádné komentáře | přidat komentář

DINDUINO 6/2014 - stavba

30. červen 2014 | 13.56 | rubrika: Arduino

Jak tedy na sestaveni?

Takhle vypadá návrh PCB a osazeni:

dinduino_6_2014_ALL

Jelikož jsem trochu limitovaný velikostí obrázků je vše ve velikosti formátu A5.

Tady máme PCB :

www.pise.cz/blog/ftp/posjirka/dinduino_6_2014_bott.pdf

a osazení součástek + čelni panel

www.pise.cz/blog/ftp/posjirka/dinduino_6_2014_souc.png

Začal jsem nejdřív panelem LCD:

- první na řadě jsou drátové propojky (je jich tady celkem 5 !!!)

- osadil jsem odpory (R1-R8) a odporovou síť (R10) , kterou jsem musel upravit protože nechi zbytečně ztrácet 5 mA tak jsem odstřihul 2. pin a taky 9. pin protože jsem sehnal pouze 8 odporovou síť

- potom kondenzátory (C1, C2) a krystal (Q1)

- další byly hřebínky pro LCD display (ty jsem posadil o 1 mm níž a po zapájení oddělal plastové držáky)

- hřebínky pro X1 (4. pin později odstranit, bude sloužit jako zámek konektoru)

- potom LED diody (LED1 - LED3)

- tlačítka (SW1 - SW4) - SW2/RESET je schválně nižší aby nedošlo k resetu.

- nakonec přijde Atmega 328 (bez patice přímo do PCB).

Po otestování funkce (nahráním prvního programu přes SPI/ISP ale o tom až později v oživování) jsem připájel ze strany spojů izolované drátky jako X2.

Je to sice trochu nešťastné řešení, ale nesehnal jsem dost dlouhý hřebínek.

Další na řadě je modul BASE:

- tady je to podobné, nejdřív drátová propojka, potom odpory (R11, R12) pak keramické kondenzátory

- další jsou svorkovnice a patice na pojistku

- stabilizátory a el. kondenzátory a nakonec trafo + propojky s LCD panelem.

Výsledek je asi takový (ještě nemám podsvícený LCD, správnou velikost dist. sloupků a trafo ma 3VA):

dinduino_6_2014_foto_3

dinduino_6_2014_foto_2

dinduino_6_2014_foto_1

Ještě by to chtělo seznam součástek:

LCD1 WH0802A1-YGH-ET 2x8 zn LCD 1
LCD1 XINYA BL820GD zabrousit na 7mm PATICE LCD 1
LCD1 XINYA S1G20 1x20 pin PATICE PCB 1
IO1 ATMEGA328P-PU PROCESOR 1
LED1 LED 3MM RED 3000/30° 3mm RED CHYBA 1
LED2 LED 3MM YELLOW 5000/20° 3mm YELLOW RELE1 1
LED3 LED 3MM YELLOW 5000/20° 3mm YELLOW RELE2 1
R1 RR W1 33R 33R 1
R2 RR W1 10K 10k 1
R3 RR W1 470R 470R 1
R4 RR W1 470R 470R 1
R5 RR W1 470R 470R 1
R6 RR W1 10K 10k 1
R7 RR W1 10K 10k 1
R8 RR W1 10K 10k 1
R10 RR 8X4K7 2% (8)7x4k7 1
SW1 TACTM-619P-F MENU 1
SW2 TC-0102-T-A00 RESET 1
SW3 TACTM-619P-F PLUS 1
SW4 TACTM-619P-F MINUS 1
x2 viz LCD1 SPI 1
x1 IZOLOVANÝ DRÁT PROPOJ 1
C1 CK 18p/50V 18p 1
C2 CK 18p/50V 18p 1
Q1 QM 16.000MHZ 16MHz KRYSTAL 1
viz DPS BASE 40x80mm DPS 1
SKM3X16 3mm/16mm ŠROUBY 2
SKM3K 3mm MATICE 2
Izolační podložka 7/3,2mm,tloušťka 1,5mm 8mm/3mm PODLOŽKY 2
KDR07 pr.6/3mm, delka 7mm DISTANČNÍ SLOUPEC 2
IZOLOVANÝ DRÁT PROPOJ 1
X10 ARK705V 2P 2P / 7,5mm 230V 1
X11 ARK705V 2P 2P / 7,5mm RELE1 1
X12 ARK705V 2P 2P / 7,5mm RELE2 1
X21 ARK500/3EX 3P / 5mm 1
X22 ARK500/3EX 3P / 5mm 1
X23 ARK500/3EX 3P / 5mm 1
X24 ARK500/3EX 3P / 5mm 1
X25 ARK500/3EX 3P / 5mm 1
FU1 KS-PTF78+BS232 POJISTKOVE POUZDRO 1
FU1 F 50mA 5x20 POJISTKA 1
TR1 HAHN BV EI 302 2005 TRAFO 230V/2x6V 1,8VA 1
RE1 JV-5S-KT JV-5S-KT 1
RE2 JV-5S-KT JV-5S-KT 1
D1 1N4007 1
D2 1N4007 1
D3 1N4007 1
D4 1N4007 1
C3 CE 1000u/25V 1m/16V 1
C4 CK 100n/63V 100n 1
C5 CE 470u/10V 470u/16V 1
C6 CK 100n/63V 100n 1
C7 CE 470u/10V 470u/16V 1
C8 CK 100n/63V 100n 1
R11 RR W1 10K 10k 1
R12 RR W1 10K 10k 1
T1 BC337-25 CDIL RELE1 1
T2 BC337-25 CDIL RELE2 1
IO2 SEMTECH 78L05/SEMT 78L05 STABILIZATOR 5V 1
IO3 SEMTECH 78L05/SEMT 78L05 STABILIZATOR 5V 1
Cuprextit 160x100x1,5 JEDNOVRSTVÝ DPS 1
Z-109F KPDIN07 KRABICE 1
KDA6M3X35 DISTANČNÍ SLOUPEC 4
SB812965 DRŽÍ DPS ŠROUBY 4
1

Celkem bez poštovného cca 610 Kč + programovací kabel.

žádné komentáře | přidat komentář

DINDUINO 6/2014 - popis

30. červen 2014 | 13.49 | rubrika: Arduino

Konečně jsem dostal "vývoj" Dinduina do podoby , která se mi líbí.

Oproti původnímu zámeru jsem zrušil UART a procesor je zpět ATMEGA328P.

Je to jednoduché zapojení :

dinduino_base_6_2014_LCD_SCHEM

dinduino_base_6_2014_BASE_SCHE

V tuto chvíly má tyto parametry:

- programování přes SPI / ISP

- LCD 2x8 znaků

- procesor ATMEGA 328 P  s krystalem 16MHz

- 3 tlačítka (ENTER, PLUS, MINUS) + reset

- napájení 230V / AC

- max. příkon 1,8W

- nezávislý zdroj 5V/100mA vyvedený na svorky

- 2 relé 250V/5A ze signalizací sepnutí.

- 6 univerzálních vstupů / výstupů s PULL-UP odpory 4k7. (jsou využity analogové vstupy: A0-A5, které se dají adresovat jako digitalni I/O: 14-19)

- vše v DIN krabici šíře 89mm.

Jako komunikační protokol lze využít I2C/IIC, 1-WIRE, SW SERIAL, ...

Vstupy jsou připraveny pro : termistory (2-10k Ohm), tlačítka/relé, 1-WIRE (např DS18b20), I2C (LCD, ARDUINO,...), ...

Pro delší vedeni je vhodne připojit k cidlum paralelně kondenzator v řadech  pF.

žádné komentáře | přidat komentář

Arduino I2C LCD

20. červen 2014 | 13.23 | rubrika: Arduino

Arduino I2C LCD

      Dneska se podíváme na můj boj Arduina s  rozhraním I2C pro LCD display.

Na EBAY jsem si objednal modul :

IIC/I2C/TWI/SPI Serial Interface Board Module Port for Arduino 1602LCD Display

http://www.ebay.com/itm/141146290709?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

i2c lcd 1

Ten se připojí (v mém případě přes hřebínky přiletuje) na LCD display, pomocí 4 drátků propojí s Arduinem (+5V, GND, SDA, SCL) a mělo by vše fungovat.

Stahnul jsem si z internetu první knihovnu na kterou jsem narazil a zkusil své štěstí. => nevyšlo to.

První problém byl v ardesování. Samotný modul nemá na začátku propojen žádný adresovací pad (A0, A1, A2) a tudíž má adresu "0x27"

Druhá věc je správná knihovna. Nakonec jsem si stáhnul tuto:

                         http://www.play-zone.ch/en/fileuploader/download/download/?d=0&file=custom%2Fupload%2FFile-1345667375.zip  

a po nahrání examplu už display vesele funguje.

i2c lcd 2

žádné komentáře | přidat komentář

Arduino ATMega328 bez bootloaderu

5. červen 2014 | 13.17 | rubrika: Arduino

Arduino ATMEGA328 bez bootloaderu

dodatek ze dne 5.6.2014:

Při delším zkoušení a hledání jsem zjistil, že tuto funkci umí jakékoliv Arduino IDE 1.0x.

Zvolíš si správný HW (např.Arduino MINI w/328), správný port a jako programátor si vebereš Arduino as ISP (samozřejmě že musíš mít Arduino, které má nahraný program Arduino as ISP).

Když klikneš a UPLOAD, skončí to nejspíš chybou.

Musíš použít File > Upload whit user programmer.

Tím pádem, žádné úpravy Board.txt, preference.txt, ... jednoduše a funkčně.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

původní text:

Tak se mi stalo že odešel převodník USB/UART.

Jasně že jsem si hned objednal nový, ale chtěl jsem zkusit jestli to půjde i bez něj - mám přece druhé Arduino tak jej použiju jako ISP programator.

Je třeba použít Arduino 0022 nebo obdobné (s 1.0x nefunguje) a do arduino-0022hardwarearduino souboru boards.txt vložit tento kod

##############################################################

DINDUINO_MINI.name=ISP DINUDINO Mini ATmega328
DINDUINO_MINI.upload.protocol=stk500
DINDUINO_MINI.upload.maximum_size=32768
DINDUINO_MINI.upload.speed=57600
DINDUINO_MINI.upload.using=arduino:arduinoisp
DINDUINO_MINI.bootloader.low_fuses=0xff
DINDUINO_MINI.bootloader.high_fuses=0xdf
DINDUINO_MINI.bootloader.extended_fuses=0x05
DINDUINO_MINI.bootloader.path=optiboot
DINDUINO_MINI.bootloader.file=optiboot_atmega328.hex
DINDUINO_MINI.bootloader.unlock_bits=0x3F
DINDUINO_MINI.bootloader.lock_bits=0x0F
DINDUINO_MINI.build.mcu=atmega328p
DINDUINO_MINI.build.f_cpu=16000000L
DINDUINO_MINI.build.core=arduino


##############################################################
 

a najednou můžete programovat přes ISP  ....

žádné komentáře | přidat komentář

Oživení DINDUINA

18. prosinec 2013 | 09.06 | rubrika: Arduino

aneb DINDUINO plné života :)

Co je to Bootloader ?

Bootloader někde počeštěn jako ZAVADĚČ je program uvnitř arduina, který umožnuje sdělit IDE ARDUINU že je připojen a je díky tomuto programu schopen přijmout kod a naprogramovat jej do arduina.

Co budeme potřebovat?

IDE

žádné komentáře | přidat komentář | přečteno: 210x

DINDUINO -1- experiment začíná

28. říjen 2013 | 23.22 | rubrika: Arduino

Při hledání možností arduina jsem narazil na článek, kde se místo klasických čipů ATMEGA168/328 používá vyšší verze ATMEGA1284P-PU.

http://maniacbug.wordpress.com/2011/11/27/arduino-on-atmega1284p-4/

https://github.com/maniacbug/mighty-1284p

To mě vedlo k myšlence "vymyslet" vlastní verzi arduina, které bude mít dostatek paměti pro  základní

žádné komentáře | přidat komentář | přečteno: 417x

Vlastní knihovny pro Fritzing

31. červenec 2013 | 11.15 | rubrika: Arduino

Tady budu dávat knihovny, které jsem vytvořil nebo upravil pro svoje potřeby pro SW Fritzing:

FRITZING LIBRARY:

MODUL NOKIA LCD

žádné komentáře | přidat komentář

Připojujeme LCD

30. červenec 2013 | 17.03 | rubrika: Arduino

Co dnes?

Dneska se podíváme na zoubek připojení LCD z mobilu NOKIA 5110 a 3310 k Arduinu.

Nebudu tu zatím řešit jak použít LCD přímo z mobilu, ale podíváme se na varintu kitu, který již display obsahuje a má výstupy přímo přes piny.

Já jsem si koupil na ebay.com tento:

žádné komentáře | přidat komentář | přečteno: 358x