Virtuális színkeverő

Ez a példa bemutatja, hogyan küldhet több értéket az Arduino kártyáról a számítógépre.


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


Ez a példa bemutatja, hogyan küldhet több értéket az Arduino kártyáról a számítógépre. A három potenciométer leolvasott értékei a Processing vázlat vagy a Max/MSP patch háttérszínének piros, zöld és kék összetevőinek beállítására szolgálnak.

Hardver szükséglet

  • Arduino kártya

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

  • 3 10 kohm-os ellenállás

  • összekötő vezetékek

  • dugdosós próbapanel (breadboard)

Szoftver szükséglet

Az áramkör

Csatlakoztassa az analóg érzékelőket a 0, 1 és 2 analóg bemeneti kivezetésekhez.

Ez az áramkör három feszültségosztó aláramkört használ az analóg feszültségek generálására az erőérzékelő ellenállásokból. A feszültségosztónak két soros ellenállása van, amelyek a feszültséget az értékükkel arányosan osztják el.

Vázlat

A kód

Az érzékelő értékeket az Arduino ASCII-kódolású decimális számként küldi el a számítógépnek. Ez azt jelenti, hogy minden szám „0” és „9” közötti ASCII-karakterekkel kerül elküldésre. A "234" értékhez például három bájt kerül elküldésre: ASCII "2" (bináris érték 50), ASCII "3" (bináris érték 51) és ASCII "4" (bináris érték 52).

/*
  Ez a példa három analóg érzékelőt olvas le (a potenciométerek a
  legegyszerűbbek), és sorosan küldik el az értékeket. Az alul
  található Processing és Max/MSP programok ezt a három értéket veszik,
  és ezek segítségével módosítják a képernyő háttérszínét.

  Az áramkör:
  - potentiométerek csatlakoznak a 0, 1, és 2 analóg bemenetekhez 

  created 2 Dec 2006
  by David A. Mellis
  modified 30 Aug 2011
  by Tom Igoe and Scott Fitzgerald

  Ez a kód nyilvános.

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

const int redPin = A0;		// érzékelő a piros szín szabályozásához
const int greenPin = A1;	// érzékelő a zöld szín szabályozásához
const int bluePin = A2;		// érzékelő a kék szín szabályozásához

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(analogRead(redPin));
  Serial.print(",");
  Serial.print(analogRead(greenPin));
  Serial.print(",");
  Serial.println(analogRead(bluePin));
}

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

  // Ez a kód nyilvános.

  import processing.serial.*;

  float redValue = 0;        // piros érték
  float greenValue = 0;      // zöld érték
  float blueValue = 0;       // kék érték

  Serial myPort;

  void setup() {
    size(200, 200);

    // 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épem soros listájának 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');
  }

  void draw() {
    // állítsa be a háttérszínt a színértékekkel:
    background(redValue, greenValue, blueValue);
  }

  void serialEvent(Serial myPort) {
    // az ASCII string fogadása:
    String inString = myPort.readStringUntil('\n');

    if (inString != null) {
      // vágjon le minden szóközt:
      inString = trim(inString);
      // osszuk fel a vesszőnél a karakterláncot, és alakítsuk át a kapott 
      // részkarakterláncokat egész számok tömbjévé:
      float[] colors = float(split(inString, ","));
      // ha a tömbnek legalább három eleme van, akkor tudja, hogy az egészet
      // megkapta. Írja be a számokat a színváltozókba: 
      if (colors.length >= 3) {
        // leképezi őket a 0-255 tartományba:
        redValue = map(colors[0], 0, 1023, 0, 255);
        greenValue = map(colors[1], 0, 1023, 0, 255);
        blueValue = map(colors[2], 0, 1023, 0, 255);
      }
    }
  }

*/

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

  ----------begin_max5_patcher----------
  1512.3oc4Z00aaaCE8YmeED9ktB35xOjrj1aAsXX4g8xZQeYoXfVh1gqRjdT
  TsIsn+2K+PJUovVVJ1VMdCAvxThV7bO7b48dIyWtXxzkxaYkSA+J3u.Sl7kK
  lLwcK6MlT2dxzB5so4zRW2lJXeRt7elNy+HM6Vs61uDDzbOYkNmo02sg4euS
  4BSede8S2P0o2vEq+aEKU66PPP7b3LPHDauPvyCmAvv4v6+M7L2XXF2WfCaF
  lURgVPKbCxzKUbZdySDUEbgABN.ia08R9mccGYGn66qGutNir27qWbg8iY+7
  HDRx.Hjf+OPHCQgPdpQHoxhBlwB+QF4cbkthlCRk4REnfeKScs3ZwaugWBbj
  .PS+.qDPAkZkgPlY5oPS4By2A5aTLFv9pounjsgpnZVF3x27pqtBrRpJnZaa
  C3WxTkfUJYA.BzR.BhIy.ehquw7dSoJCsrlATLckR.nhLPNWvVwL+Vp1LHL.
  SjMG.tRaG7OxT5R2c8Hx9B8.wLCxVaGI6qnpj45Ug84kL+6YIM8CqUxJyycF
  7bqsBRULGvwfWyRMyovElat7NvqoejaLm4f+fkmyKuVTHy3q3ldhB.WtQY6Z
  x0BSOeSpTqA+FW+Yy3SyybH3sFy8p0RVCmaMpTyX6HdDZ2JsPbfSogbBMueH
  JLd6RMBdfRMzPjZvimuWIK2XgFA.ZmtfKoh0Sm88qc6OF4bDQ3P6kEtF6xej
  .OkjD4H5OllyS+.3FlhY0so4xRlWqyrXErQpt+2rsnXgQNZHZgmMVzEofW7T
  S4zORQtgIdDbRHrObRzSMNofUVZVcbKbhQZrSOo934TqRHIN2ncr7BF8TKR1
  tHDqL.PejLRRPKMR.pKFAkbtDa+UOvsYsIFH0DYsTCjqZ66T1CmGeDILLpSm
  myk0SdkOKh5LUr4GbWwRYdW7fm.BvDmzHnSdH3biGpSbxxDNJoGDAD1ChH7L
  I0DaloOTBLvkO7zPs5HJnKNoGAXbol5eytUhfyiSfnjE1uAq+Fp0a+wygGwR
  q3ZI8.psJpkpJnyPzwmXBj7Sh.+bNvVZxlcKAm0OYHIxcIjzEKdRChgO5UMf
  LkMPNN0MfiS7Ev6TYQct.F5IWcCZ4504rGsiVswGWWSYyma01QcZgmL+f+sf
  oU18Hn6o6dXkMkFF14TL9rIAWE+6wvGV.p.TPqz3HK5L+VxYxl4UmBKEjr.B
  6zinuKI3C+D2Y7azIM6N7QL6t+jQyZxymK1ToAKqVsxjlGyjz2c1kTK3180h
  kJEYkacWpv6lyp2VJTjWK47wHA6fyBOWxH9pUf6jUtZkLpNKW.9EeUBH3ymY
  XSQlaqGrkQMGzp20adYSmIOGjIABo1xZyAWJtCX9tg6+HMuhMCPyx76ao+Us
  UxmzUE79H8d2ZB1m1ztbnOa1mGeAq0awyK8a9UqBUc6pZolpzurTK232e5gp
  aInVw8QIIcpaiNSJfY4Z+92Cs+Mc+mgg2cEsvGlLY6V+1kMuioxnB5VM+fsY
  9vSu4WI1PMBGXye6KXvNuzmZTh7U9h5j6vvASdngPdgOFxycNL6ia1axUMmT
  JIzebXcQCn3SKMf+4QCMmOZung+6xBCPLfwO8ngcEI52YJ1y7mx3CN9xKUYU
  bg7Y1yXjlKW6SrZnguQdsSfOSSDItqv2jwJFjavc1vO7OigyBr2+gDYorRk1
  HXZpVFfu2FxXkZtfp4RQqNkX5y2sya3YYL2iavWAOaizH+pw.Ibg8f1I9h3Z
  2B79sNeOHvBOtfEalWsvyu0KMf015.AaROvZ7vv5AhnndfHLbTgjcCK1KlHv
  gOk5B26OqrXjcJ005.QqCHn8fVTxnxfj93SfQiJlv8YV0VT9fVUwOOhSV3uD
  eeqCUClbBPa.j3vWDoMZssNTzRNEnE6gYPXazZaMF921syaLWyAeBXvCESA8
  ASi6Zyw8.RQi65J8ZsNx3ho93OhGWENtWpowepae4YhCFeLErOLENtXJrOSc
  iadi39rf4hwc8xdhHz3gn3dBI7iDRlFe8huAfIZhq
  -----------end_max5_patcher-----------

*/

A Processing kód

Másolja ki a Processing vázlatot a fenti kódmintából. Ahogy módosítja az analóg érzékelők értékét, a háttér színe megváltozik:

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.