Operácie

Merací systém s Ardino Nano: Rozdiel medzi revíziami

Z SensorWiki

(Processing + Arduino)
(Odstránený obsah stránky)
 
(6 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
  
== Materiál ==
 
 
 
 
== 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.
 
 
Nastavenie správneho portu
 
 
Pre Win10: otvoríte okienko Run (napríklad Windows + R na klávesnici), do ktorého napíšete  '''devmgmt.msc'''
 
 
[[Súbor:ArduinoSerialPort.png]]
 
 
[[Súbor:WindowsPortList.png]]
 
 
 
<tabs>
 
<tab name="Javascript"><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 C++"><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>
 
 
[[Súbor:ProcessingPortList.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]]
 

Aktuálna revízia z 14:12, 12. október 2020