Grafika létrehozása Processing-el

Küldje el az adatokat a számítógépre, és ábrázolja azokat a Processing-el.


Utolsó felülvizsgálat: 2022.02.04 16:50


Ez a példa bemutatja, hogyan küldhet egy bájtnyi adatot az Arduino-ból egy személyi számítógépre, és hogyan ábrázolhatja az eredményt. Ezt soros kommunikációnak nevezik, mivel a kapcsolat mind az alaplap, mind a számítógép számára soros portként jelenik meg, még akkor is, ha valójában USB-kábelt, soros-USB-t és USB-soros átalakítót használ.

Használhatja az Arduino Software (IDE) soros monitorát az elküldött adatok megtekintéséhez, vagy leolvastatható a Processing (lásd a kódot lent), a Flash, PD, Max/MSP stb. segítségével.

Hardver szükséglet

  • Arduino kártya

  • Analóg érzékelő (potenciométer, fotocella, FSR stb.)

Szoftver szükséglet

Az áramkör

Csatlakoztasson egy potenciométert vagy más analóg érzékelőt a 0 analóg bemenethez.

Vázlat

A kód

/*
  Graph

  Egy egyszerű példa az Arduino kártya és a számítógép közötti kommunikációra:
  A 0 analóg bemenet értéke a soros porton kerül kiküldésre. Ezt "soros" 
  kommunikációnak nevezzük, mert a kapcsolat mind az Arduino, mind a számítógép
  számára soros portként jelenik meg, még akkor is, ha valójában USB-kábelt
  használ. A bájtok egymás után (sorosan) kerülnek elküldésre az Arduino-ból a számítógépre.

  Használhatja az Arduino Serial Monitort az elküldött adatok megtekintéséhez, vagy
  kiolvashatja azokat Processing, PD, Max/MSP, vagy bármilyen más, soros portról
  adatokat olvasni képes programmal. Az alábbi feldolgozási kód grafikonon ábrázolja
  a fogadott adatokat, így láthatja, hogy az analóg bemenet értéke idővel hogyan változik.

  Az áramkör:
  - bármely analóg bemeneti érzékelő, amely az 0. analóghoz kivezetéshez van csatlakoztatva

  created 2006
  by David A. Mellis
  modified 9 Apr 2012
  by Tom Igoe and Scott Fitzgerald

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/communication/Graph
*/

void setup() {
  // inicializálja a soros kommunikációt:
  Serial.begin(9600);
}

void loop() {
  // küldje el a 0 analóg bemenet értékét:
  Serial.println(analogRead(A0));
  // Várjon egy kicsit, amíg az analóg-digitális átalakító
  // stabilizálódik az utolsó leolvasás után:
  delay(2);
}

/* Processing kód a példához

  // Graphing sketch

  // Ez a program ASCII-kódolású karakterláncokat vesz át a soros portról
  // 9600 baud sebességgel, és ábrázolja azokat. 0 és 1023 közötti értékeket
  // vár, majd újsort vagy újsort és kocsivisszát

  // created 20 Apr 2005
  // updated 24 Nov 2015
  // by Tom Igoe
  // Ez a kód nyilvános.

  import processing.serial.*;

  Serial myPort;        // A soros port
  int xPos = 1;         // a grafika vízszintes helyzete
  float inByte = 0;

  void setup () {
    // állítsa be az ablak méretét:
    size(400, 300);

    // Listázza az összes elérhető soros portot
    // ha a Processing 2.1 vagy újabb verzióját használja, használja a Serial.printArray()
    println(Serial.list());

    // Tudom, hogy a Mac gépemen a soros lista első portja mindig az Arduino,
    // ezért a Serial.list()[0]-el nyitom meg.
    // Nyissa meg azt a portot, amelyet éppen használ.
    myPort = new Serial(this, Serial.list()[0], 9600);

    // ne generáljon serialEvent()-et, hacsak nem kap egy újsor karaktert:
    myPort.bufferUntil('\n');

    // állítsa be a kezdeti hátteret:
    background(0);
  }

  void draw () {
    // vonal rajzolása:
    stroke(127, 34, 255);
    line(xPos, height, xPos, height - inByte);

    // a képernyő szélén lépjen vissza az elejére:
    if (xPos >= width) {
      xPos = 0;
      background(0);
    } else {
      // a vízszintes helyzet növelése:
      xPos++;
    }
  }

  void serialEvent (Serial myPort) {
    // glekérni az ASCII karakterláncot:
    String inString = myPort.readStringUntil('\n');

    if (inString != null) {
      // vágjon le minden szóközt:
      inString = trim(inString);
      // konvertáljon int-re és képezze le a képernyő magasságát:
      inByte = float(inString);
      println(inByte);
      inByte = map(inByte, 0, 1023, 0, height);
    }
  }

*/

/* Max/MSP v5 patch a példához

  ----------begin_max5_patcher----------
  1591.3oc0YszbaaCD9r7uBL5RalQUAO3CvdyS5zVenWZxs5NcfHgjPCIfJIT
  RTxj+6AOHkoTDooroUs0AQPR73a+1cwtK3WtZxzEpOwqlB9YveAlL4KWMYh6
  Q1GLo99ISKXeJMmU451zTUQAWpmNy+NM+SZ2y+sR1l02JuU9t0hJvFlNcMPy
  dOuBv.U5Rgb0LPpRpYBooM3529latArTUVvzZdFPtsXAuDrrTU.f.sBffXxL
  vGE50lIHkUVJXq3fRtdaoDvjYfbgjujaFJSCzq4.tLaN.bi1tJefWpqbO0uz
  1IjIABoluxrJ1guxh2JfPO2B5zRNyBCLDFcqbwNvuv9fHCb8bvevyyEU2JKT
  YhkBSWPAfq2TZ6YhqmuMUo0feUn+rYpY4YtY+cFw3lUJdCMYAapZqzwUHX8S
  crjAd+SIOU6UBAwIygy.Q1+HAA1KH6EveWOFQlitUK92ehfal9kFhUxJ3tWc
  sgpxadigWExbt1o7Ps5dk3yttivyg20W0VcSmg1G90qtx92rAZbH4ez.ruy1
  nhmaDPidE07J+5n2sg6E6oKXxUSmc20o6E3SPRDbrkXnPGUYE.i5nCNB9TxQ
  jG.G0kCTZtH88f07Rt0ZMMWUw8VvbKVAaTk6GyoraPdZff7rQTejBN54lgyv
  HE0Ft7AvIvvgvIwO23jBdUkYOuSvIFSiNcjFhiSsUBwsUCh1AgfNSBAeNDBZ
  DIDqY.f8.YjfjV1HAn9XDTxyNFYatVTkKx3kcK9GraZpI5jv7GOx+Z37Xh82
  LSKHIDmDXaESoXRngIZQDKVkpxUkMCyXCQhcCK1z.G457gi3TzMz4RFD515F
  G3bIQQwcP3SOF0zlkGhiCBQ1kOHHFFlXaEBQIQnCwv9QF1LxPZ.A4jR5cyQs
  vbvHMJsLll01We+rE2LazX6zYmCraRrsPFwKg1ANBZFY.IAihr8Ox.aH0oAL
  hB8nQVw0FSJiZeunOykbT6t3r.NP8.iL+bnwNiXuVMNJH9H9YCm89CFXPBER
  bz422p8.O4dg6kRxdyjDqRwMIHTbT3QFLskxJ8tbmQK4tm0XGeZWF7wKKtYY
  aTAF.XPNFaaQBinQMJ4QLF0aNHF0JtYuHSxoUZfZY6.UU2ejJTb8lQw8Fo5k
  Rv6e2PI+fOM71o2ecY1VgTYdCSxxUqLokuYq9jYJi6lxPgD2NIPePLB0mwbG
  YA9Rgxdiu1k5xiLlSU6JVnx6wzg3sYHwTesB8Z5D7RiGZpXyvDNJY.DQX3.H
  hvmcUN4bP1yCkhpTle2P37jtBsKrLWcMScEmltOPv22ZfAqQAdKr9HzATQwZ
  q18PrUGt6Tst2XMCRUfGuhXs6ccn23YloomMqcTiC5iMGPsHsHRWhWFlaenV
  XcqwgCQiGGJzptyS2ZMODBz6fGza0bzmXBj7+DA94bvpR01MffAlueO7HwcI
  pWCwmzJdvi9ILgflLAFmyXB6O7ML0YbD26lenmcGxjVsZUN+A6pUK7AtTrPg
  M+eRYG0qD9j4I7eEbco8Xh6WcO.or9XDC6UCiewbXHkh6xm5LiPEkzpJDRTu
  mEB44Fgz4NCtJvX.SM1vo2SlTCZGAe7GZu6ahdRyzFOhYZ+mbVVSYptBw.K1
  tboIkatIA7c1cTKD1u.honLYV04VkluHsXe0szv9pQCE9Ro3jaVB1o15pz2X
  zYoBvO5KXCAe0LCYJybE8ZODf4fV8t9qW0zYxq.YJfTosj1bv0xc.SaC0+AV
  9V9L.KKyV3SyTcRtmzi6rO.O16USvts4B5xe9EymDvebK0eMfW6+NIsNlE2m
  eqRyJ0utRq13+RjmqYKN1e.4d61jjdsauXe3.2p6jgi9hsNIv97CoyJ01xzl
  c3ZhUCtSHx3UZgjoEJYqNY+hYs5zZQVFW19L3JDYaTlMLqAAt1G2yXlnFg9a
  53L1FJVcv.cOX0dh7mCVGCLce7GFcQwDdH5Ta3nyAS0pQbHxegr+tGIZORgM
  RnMj5vGl1Fs16drnk7Tf1XOLgv1n0d2iEsCxR.eQsNOZ4FGF7whofgfI3kES
  1kCeOX5L2rifbdu0A9ae2X.V33B1Z+.Bj1FrP5iFrCYCG5EUWSG.hhunHJd.
  HJ5hhnng3h9HPj4lud02.1bxGw.
  -----------end_max5_patcher-----------
*/

A Processing vázlat

A fenti kódban található feldolgozási vázlat segítségével megkapja az érzékelő értékének grafikonját. Ahogy módosítja az analóg érzékelő értékét, egy ehhez hasonló grafikont kap:

A Max kód

A max patch így néz ki. A patch szövege a fenti kódban található. Másolja ki és illessze be egy "New patcher" ablakba a vázlat megtekintéséhez.

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.