|   |     | 
| Riadok 1: | Riadok 1: | 
|  | 
 |  | 
 | 
|  | == Materiál ==
 |  | 
|  | 
 |  | 
|  | Elektronické obvody budeme zapájať na kontaktnom poli (breadboard). Na meranie budeme používať Arduino Nano, komunikujúce cez sériovú linku s aplikačným programom v Processingu. 
 |  | 
|  | * [https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard Čo je to breadboard] (po anglicky)
 |  | 
|  | * [https://learn.sparkfun.com/tutorials/what-is-an-arduino Čo je to Arduino] (po anglicky)
 |  | 
|  | * [https://processing.org/tutorials/gettingstarted/ Čo je to Processing] (po anglicky)
 |  | 
|  | * [https://learn.sparkfun.com/tutorials/serial-communication Čo je to sériová komunikácia] (po anglicky)
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | '''Študent si zaobstará''' (viď obr. nižšie)
 |  | 
|  | * Arduino (ľubovoľný tip, ale návody budú pre Nano)
 |  | 
|  | * Prepojovaciu kontaktnú doštičku (breadboard)
 |  | 
|  | * USB kábel a prepojovacie drôtiky
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | '''UAMT FEI zaobstará'''
 |  | 
|  | * všetky ostatné elektronické súčiastky
 |  | 
|  | * špeciálny softvér na meranie
 |  | 
|  | 
 |  | 
|  | [[Súbor:TechFunKosik.png]]
 |  | 
|  | 
 |  | 
|  | == Software ==
 |  | 
|  | 
 |  | 
|  | * Vývojové prostredie Processing
 |  | 
|  | * Vývojové prostredie Arduino (alebo aspoň Hex Loader)
 |  | 
|  | * Špecifické programy pre dané meranie
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | === Processing ===
 |  | 
|  | 
 |  | 
|  | Je to veľmi jednoduché vývojové prostredie urené na rýchly náčrt programu (preto sa aj programy v Processingu nazývajú sketch) a orientuje sa predovšetkým na ich grafickú stránku. Na rozdiel od iných jazykov sa dá prakticky hneď začať kresliť jednoduchá grafika. Prostredie je k dispozícii bezplatne a pre rozličné operačné systémy. Základom prostredia je Java, ale nie je podmienkou vedieť programovať v Jave. Najnovšiu verziu si vždy stiahnite a nainštalujte z adresy http://processing.org/  Na tejto stránke nájdete aj príklady, referenčnú príručku a diskusné fórum. 
 |  | 
|  | 
 |  | 
|  | * Inštalácia: https://processing.org/download/
 |  | 
|  | 
 |  | 
|  | * Prvý príklad:
 |  | 
|  | 
 |  | 
|  | <source lang="java">
 |  | 
|  | void setup()                      // táto časť sa vykoná len pri spustení, raz 
 |  | 
|  | {
 |  | 
|  |   size(400, 400);                 // nastavíme veľkosť okna
 |  | 
|  |   stroke(255);                    // nastavíme farbu pera na kreslenie
 |  | 
|  |   background(192, 64, 0);         // nastavíme farbu (R, G. B) pozadia
 |  | 
|  | } 
 |  | 
|  | 
 |  | 
|  | void draw()                       // táto časť sa vykonáva stále dokola
 |  | 
|  | {
 |  | 
|  |   line(200, 200, mouseX, mouseY); // nakresli čiaru z bodu 200,200 po 
 |  | 
|  |                                   // aktuálnu polohu myši
 |  | 
|  | }
 |  | 
|  | 
 |  | 
|  | </source>
 |  | 
|  | 
 |  | 
|  | * Mnoho ďalších príkladov nájdete priamo v editore (File -> Examples) a oveľa viac potom tu https://processing.org/tutorials/
 |  | 
|  | 
 |  | 
|  | [[Súbor:ProcessingStart.png]]
 |  | 
|  | 
 |  | 
|  | === Arduino ===
 |  | 
|  | 
 |  | 
|  | Arduino je veľmi populárna platforma pre programovanie mikroopočítačov Atmel AVR, ktorá sa dnes už rozrástla pre mnoho ďalších mikroprocesorových systémov, vrátane ARM architektúry. Vývojové prostredie je veľmi podobné Processingu, a to aj vzhľadom. Programovacím jazykom je C++, pred použitím však musíme kompilátor nakonfigurovať pre daný procesor. 
 |  | 
|  | 
 |  | 
|  | * Inštalácia: https://www.arduino.cc/en/Main/Software
 |  | 
|  | * Konfigurácia: 
 |  | 
|  | 
 |  | 
|  | Pred naprogramovaním procesora musíme prostredie Arduino nastaviť pre nami používaný typ. Teda Arduino Nano s procesorom ATmega328P a treba tiež nastaviť, na ktorý sériový port ho máme pripojený. 
 |  | 
|  | 
 |  | 
|  | [[Súbor:ArduinoConfig.png]]
 |  | 
|  | 
 |  | 
|  | * Prvý príklad:
 |  | 
|  | 
 |  | 
|  | <source lang="cpp">
 |  | 
|  | /*
 |  | 
|  |   Blink
 |  | 
|  | 
 |  | 
|  |   Tento príklad je priamo z prostredia Arduino (File -> Examples -> 01.Basic -> Blink)
 |  | 
|  | 
 |  | 
|  | */
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | void setup()    // funkcia setup sa spustí len raz, po resete dosky
 |  | 
|  | {
 |  | 
|  |   pinMode(LED_BUILTIN, OUTPUT);  // nakonfiguruje pin ako výstupný
 |  | 
|  | }
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | void loop()    // funkcia loop beží stále dokola
 |  | 
|  | {
 |  | 
|  |   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
 |  | 
|  |   delay(1000);                       // wait for a second
 |  | 
|  |   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
 |  | 
|  |   delay(1000);                       // wait for a second
 |  | 
|  | }
 |  | 
|  | </source>
 |  | 
|  | 
 |  | 
|  | [[Súbor:ArduinoStart.png]]
 |  | 
|  | 
 |  | 
|  | * Čo všetko sa môže pokaziť:
 |  | 
|  | ** máte chybu v programe a ten sa ani neskompiluje
 |  | 
|  | ** máte nesprávny typ procesora
 |  | 
|  | ** máte vybraný nesprávny port, na ktorom nie je Arduino
 |  | 
|  | ** nemáte zapnuté Arduino
 |  | 
|  | 
 |  | 
|  | === Processing + Arduino ===
 |  | 
|  | 
 |  | 
|  | Napokon spojíme prostredníctvom komunikácie cez sériovú linku oba svety.
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | '''Postup:'''
 |  | 
|  | * Najprv nahráme príslušný program do jednotky Arduino Nano
 |  | 
|  | * V prostredí Processing nainštalujeme knižnicu '''G4P''' (Sketch -> Import Library -> Add Library) 
 |  | 
|  | 
 |  | 
|  | [[Súbor:ProcessingLibrary.png]]
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | * V prostredí Processing spustíme druhý zo zdrojových kódov a sledujeme výpis v spodnej časti okna
 |  | 
|  | 
 |  | 
|  | <tabs>
 |  | 
|  | <tab name="Processing"><source lang="java">
 |  | 
|  | import processing.serial.*;
 |  | 
|  | import g4p_controls.*;
 |  | 
|  | 
 |  | 
|  | // The serial port
 |  | 
|  | Serial myPort;       
 |  | 
|  | 
 |  | 
|  | GLabel lblOut;
 |  | 
|  | GButton buttonOn; 
 |  | 
|  | GButton buttonOff; 
 |  | 
|  | 
 |  | 
|  | void setup() 
 |  | 
|  | {
 |  | 
|  |   size(200, 200);
 |  | 
|  |   createGUI();
 |  | 
|  |   printArray(Serial.list());  // List all the available serial ports
 |  | 
|  |   myPort = new Serial(this, Serial.list()[2], 9600);
 |  | 
|  | }
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | void draw() 
 |  | 
|  | {
 |  | 
|  |   background(225);
 |  | 
|  |  }
 |  | 
|  | 
 |  | 
|  | /*
 |  | 
|  | void myBtnEvents(GButton button) { //_CODE_:button1:12356:
 |  | 
|  |      // It is safe to enter your event code here  
 |  | 
|  |  } //_CODE_:button1:12356:
 |  | 
|  |  
 |  | 
|  | */
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | public void buttonOn_click(GButton source, GEvent event) {
 |  | 
|  |   println("buttonOn - GButton >> GEvent." + event + " @ " + millis());
 |  | 
|  |    myPort.write('1');
 |  | 
|  | } 
 |  | 
|  | 
 |  | 
|  | public void buttonOff_click(GButton source, GEvent event) { 
 |  | 
|  |   println("buttonOff - GButton >> GEvent." + event + " @ " + millis());
 |  | 
|  |    myPort.write('0');
 |  | 
|  | } 
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  |  
 |  | 
|  | public void createGUI()      // Create all the GUI controls.
 |  | 
|  | {
 |  | 
|  |   
 |  | 
|  |   G4P.messagesEnabled(false);
 |  | 
|  |   G4P.setGlobalColorScheme(GCScheme.BLUE_SCHEME);
 |  | 
|  |   G4P.setMouseOverEnabled(true);
 |  | 
|  |   G4P.setDisplayFont("Arial Black", G4P.PLAIN, 14);
 |  | 
|  | 
 |  | 
|  |   surface.setTitle("Demo");
 |  | 
|  | 
 |  | 
|  |   buttonOn = new GButton(this, 60, 60, 80, 30);
 |  | 
|  |   buttonOn.setText("LED On");
 |  | 
|  |   buttonOn.setLocalColorScheme(GCScheme.GREEN_SCHEME);
 |  | 
|  |   buttonOn.addEventHandler(this, "buttonOn_click");
 |  | 
|  | 
 |  | 
|  |   buttonOff = new GButton(this, 60, 110, 80, 30);
 |  | 
|  |   buttonOff.setText("LED Off");
 |  | 
|  |   buttonOff.setLocalColorScheme(GCScheme.RED_SCHEME);
 |  | 
|  |   buttonOff.addEventHandler(this, "buttonOff_click");
 |  | 
|  |   
 |  | 
|  |   lblOut = new GLabel(this, 0, 10, 200, 20, "");
 |  | 
|  |   lblOut.setTextAlign(GAlign.CENTER, null);
 |  | 
|  |   lblOut.setText("LED Control Demo");
 |  | 
|  |   
 |  | 
|  | }
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | </source></tab>
 |  | 
|  | <tab name="Arduino"><syntaxhighlight lang=c style="background: Cornsilk">
 |  | 
|  | char recData;          // Data received from the serial port
 |  | 
|  | 
 |  | 
|  | void setup() 
 |  | 
|  | {
 |  | 
|  |    pinMode(LED_BUILTIN, OUTPUT); // Set pin as OUTPUT
 |  | 
|  |    Serial.begin(9600); // Start serial communication at 9600 bps
 |  | 
|  | }
 |  | 
|  | 
 |  | 
|  | void loop() 
 |  | 
|  | {
 |  | 
|  |    if (Serial.available())    // If data is available to read,
 |  | 
|  |     { 
 |  | 
|  |      recData = Serial.read(); // read it and store it in val
 |  | 
|  |     }
 |  | 
|  | 
 |  | 
|  |    if (recData == '1')        // If 1 was received
 |  | 
|  |     { 
 |  | 
|  |      digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on
 |  | 
|  |     } 
 |  | 
|  |    else 
 |  | 
|  |     {
 |  | 
|  |      digitalWrite(LED_BUILTIN, LOW);   // otherwise turn it off
 |  | 
|  |     }
 |  | 
|  |    
 |  | 
|  |    delay(10); // Wait 10 milliseconds for next reading
 |  | 
|  | }
 |  | 
|  | </syntaxhighlight></tab>
 |  | 
|  | </tabs>
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | Mali by ste vidieť niečo podobné ako na tomto obrázku
 |  | 
|  | 
 |  | 
|  | [[Súbor:ProcessingPortList.png]]
 |  | 
|  | 
 |  | 
|  | Teraz treba zistiť, ktorý z portov v zozname je ten Arduino. Preto spustíme Device Manager (postup pre Win10: otvoríte okienko Run (napríklad Windows + R na klávesnici), do ktorého napíšete  '''devmgmt.msc''') a rozkliknete Porty - zbadáte niečo podobné ako tento obrázok
 |  | 
|  | 
 |  | 
|  | [[Súbor:WindowsPortList.png]]
 |  | 
|  | 
 |  | 
|  | Keďže Arduino Nano má na sebe komunikačný obvod CH340 (pozri nižšie), bude správny port zrejme COM3. Preto zmeníme príslušný  riadok v kóde pre Processing a spustíme program znova. 
 |  | 
|  | 
 |  | 
|  | [[Súbor:ArduinoSerialPort.png]]
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | Ak je všetko správne nastavené, mali by ste tlačidlami na obrazovke ovládať LED na Arduino Nano doske. Ktorá to je? Pozrite na obrázok vyššie. 
 |  | 
|  | 
 |  | 
|  | [[Súbor:ProcessingLEDdemoOK.png]]
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | 
 |  | 
|  | [[Category:ELSA]]
 |  |