ASCII-Kodlanmış Çıkışlı Seri Çağrı ve Yanıt (Processing)

0
470
Okunma

ASCII-Kodlanmış Çıkışlı Seri Çağrı ve Yanıt

Arduino ASCII-kodlanmış Çıkışlı Seri Çağrı ve Yanıt

ASCII-Kodlanmış Çıkışlı Seri Çağrı Yanıt. Bu örnek Arduino ya da Genuino kartından bilgisayara bir çağrı-cevap (el sıkışma) yöntemi kullanarak dize-temelli iletişimi göstermektedir.

Çizim, başlangıçta bir ASCII dizesi gönderir ve bilgisayardan seri bir yanıt alıncaya kadar tekrarlar. Ardından, ASCII kodlu sayılar olarak üç sensör değeri gönderir, virgülle ayrılmış ve satır besleme ve satırbaşı tarafından sonlandırılır ve bilgisayardan başka bir yanıt bekler.

Gönderilen verileri görüntülemek için Arduino Yazılımı (IDE) seri monitörünü kullanabilir veya İşleme (aşağıya bakınız), Flash, PD, Max / MSP (aşağıdaki örneğe bakınız), vb. Tarafından okunabilir. Aşağıdaki örnekler virgüllerde gelen dize ve dizeyi tekrar sayılara dönüştür.

Bunu Seri arama ve yanıt örneğiyle karşılaştırın . Benzerler, her ikisi de bir el sıkışma yöntemini kullanır, ancak bu, sensör okumalarını dizgiler olarak kodlar, diğeri ise bunları ikili değerler olarak gönderir. ASCII olarak kodlanmış dizeleri gönderirken daha fazla bayt alırken, her bir sensör okuması için 255’ten daha büyük değerleri kolayca gönderebileceğiniz anlamına gelir. Bir seri terminal programında okumak daha da kolaydır.

Donanım

  • Arduino veya Genuino
  • 2 adet analog sensör (potansiyometre, fotosel, FSR vb.)
  • butona basınız
  • 3 adet 10K ohm dirençler
  • Bağlantı Kabloları
  • breadboard

“Arduino UNO, elektronik ve kodlamaya başlamak için en iyi tahtadır. Bu, platformla birlikte çalıştığınız ilk deneyiminizse, Arduino UNO, denemelere başlayabileceğiniz en iyi seçimdir. UNO, tüm Arduino ailesinin en çok kullanılan ve içeriği bulunan kartıdır.”

Gerekli Yazılım

Devre

Analog sensörleri, gerilim bölücüler olarak kullanılan 10K ohm dirençlerle 0 ve 1 analog giriş pinlerine bağlayın. Bir buton bağlayın veya şasiye referans olarak 10K ohm dirençli dijital I / O pin 2’ye geçin.

Kod

/*
ASCII'de Seri Arama ve Yanıt
Dil: Kablolama / Arduino

Bu program, başlangıçta ASCII A (65 değeri bayt) gönderir ve bunu tekrarlar.
Bazı veriler girinceye kadar. Sonra seri portunda bir bayt bekler ve
üç ASCII-kodlanmış, virgülle ayrılmış sensör değerlerini gönderir.
Satır içi ve satır başı, bayt aldığında.

Devre:
- 0 ve 1 analog girişlerine bağlı potansiyometreler
- dijital I / O 2'ye bağlı buton

oluşturuldu 26 Eyl 2005
Tom Igoe tarafından
24 Nis 2012
Tom Igoe ve Scott Fitzgerald tarafından
İyileştirmeler için Greg Shakar ve Scott Fitzgerald'a teşekkürler

Bu örnek kod kamu malıdır.
http://www.arduino.cc/en/Tutorial/SerialCallResponseASCII
*/

int firstSensor = 0;    // ilk analog sensor
int secondSensor = 0;   // ikinci analog sensor
int thirdSensor = 0;    // dijital sensor
int inByte = 0;          // gelen seri bayt 

void setup() {
  // 9600 bps'de seri bağlantı noktasını başlat ve bağlantı noktasının açılmasını bekleyin:
  Serial.begin(9600);
  while (!Serial) {
    ; // bağlanmak için seri portu bekleyin. Sadece yerel USB bağlantı noktası için gerekli
  }


  pinMode(2, INPUT);   // dijital sensör 2 dijital pim üzerinde
  establishContact();  // alıcı yanıt verene kadar iletişim kurmak için bir bayt gönder
}

void loop() {
  // geçerli bir bayt alırsak,:
  if (Serial.available() > 0) {
    // gelen baytı al:
    inByte = Serial.read();
    // ilk analog girişi oku:
    firstSensor = analogRead(A0);
    // ikinci analog girişi oku:
    secondSensor = analogRead(A1);
    // okuma anahtarı, 0 veya 255 ile eşleştirin
    thirdSensor = map(digitalRead(2), 0, 1, 0, 255);
    // sensör değerleri gönder:
    Serial.print(firstSensor);
    Serial.print(",");
    Serial.print(secondSensor);
    Serial.print(",");
    Serial.println(thirdSensor);
  }
}

void establishContact() {
  while (Serial.available() <= 0) {
    Serial.println("0,0,0");   // bir başlangıç ​​dizesi gönder
    delay(300);
  }
}

/* Bu örnekle çalışacak Processing kod:

  // Bu örnek kod genel etki alanında.

  import processing.serial.*;     // İşlem seri kütüphanesini içe aktar
  Serial myPort;                  //seri port

  float bgcolor;       // Arka plan rengi
  float fgcolor;      // Rengi doldur
  float xpos, ypos;         // Topun başlangıç ​​pozisyonu

  void setup() {
    size(640, 480);

    // Mevcut tüm seri portları listele
    // İşlem 2.1 veya daha yenisini kullanıyorsanız, Serial.printArray () öğesini kullanın.

    println(Serial.list());

    // Mac'indeki seri listesindeki ilk portun her zaman benim olduğunu biliyorum
    // Arduino kartı, ben de Serial.list () [0] 'ı açtım.
    // 0'ı seri portun uygun numarasına değiştirin.
    // mikrodenetleyici bağlı.

    myPort = new Serial(this, Serial.list()[0], 9600);

    // bir satır beslemesi alıncaya kadar bir bayt olarak bayt okuyun (ASCII 10):
    myPort.bufferUntil('\n');

    // pürüzsüz kenarlarla çizin:
    smooth();
  }

  void draw() {
    background(bgcolor);
    fill(fgcolor);
    // Şekli çiz
    ellipse(xpos, ypos, 20, 20);
  }

  // serialEvent yöntemi, her işleme koyma işlemcisi tarafından otomatik olarak çalıştırılır
  // arabellek bufferUntil () 'de ayarlanan bayt değerine ulaşır
  // setup()'daki yöntem:

  void serialEvent(Serial myPort) {
    // seri arabelleği oku:
    String myString = myPort.readStringUntil('\n');
    // satır besleme dışında herhangi bir baytınız varsa:
    myString = trim(myString);

    // dizeyi virgüllere ayırın ve bölümleri tam sayılara dönüştürün:
    int sensors[] = int(split(myString, ','));

    // sahip olduğunuz değerleri yazdırın:
    for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) {
      print("Sensor " + sensorNum + ": " + sensors[sensorNum] + "\t");
    }
    // Tüm sensör değerleri yazdırıldıktan sonra bir satır besleme ekleyin:
    println();
    if (sensors.length > 1) {
      xpos = map(sensors[0], 0, 1023, 0, width);
      ypos = map(sensors[1], 0, 1023, 0, height);
      fgcolor = sensors[2];
    }
    // daha fazla veri istemek için bir byte gönderin:
    myPort.write("A");
  }

*/
/* Max / MSP sürüm 5 düzeltme eki şu örnekle çalıştırılacak:

----------begin_max5_patcher----------
3640.3oc6cs0jZajE94Y9UzKkeHoVloTeSHkm1II0VkeHIthSs6C1obIjZ.E
KjHRhY7jT4+9d5KBj.jTCAXfoV6x.sj5VmyWet127ed6MCFm8EQw.z2f9.5l
a9yau4F0kjW3FS4aFLO3KgIAEpGaPX174hzxAC02qT7kR80mkkUHPAnBQdbP
BZQVdIZRd1bT4r3BDTmkU0YQPY3r3zoeJWDVpe2ttr6cFhvXt7KhyH8W26f9
USkhiTulrw+1czQUszjrzxzf4B0sdP9dqtS5x4woIhREQiWewrkkUW0oViTD
+GpFASt2Qd0+51akeLzRPIU7DPXagIFnH.4653f9WAKKyxVHRQNcfDXlih2w
puvbdWHAlcTPBRKHg4x5mr74EBMINHV1+iFL.8qG.VMWTTDLUrs.TBH+zAvP
nTEhvvxun9pBd6FWH38DWH6DWv6ItbX.RKBOJ7XbP5ztvDesvhBLb6VTwcOg
DmiBjnXfiIrjjED0CpP490PEmtPExwQA5EGUVjK.CKQJqtcYl0nCMRAJi76D
Z7dQflCCVV1i+ENiTy3AwYaghEA4.KVJx+jHMXbhntJPceO3iBpPOPKtZqtU
jUoXtw28fkEimmEIlOI.3Q4iMT9wO+iLxc9O7sN28928t6Ve8uMYo.7EUN6t
ePVoUW+6E4hOW7CAgeaV1meWd1cuWnYLy8mKhhClGDd25F3ce+C2si1Ud42+
bZ3IQJOXg7q96t80e50YvDjqHw7VvkRTXhHHuKEerRwmqfBFsS.g9h.HZN3X
hJf5Qd+xHZHgzc.mrqeYjbn4E84evfIDUjDtjNwD2iRHV6anmGdbmsfKxTTJ
dd93rjtBJ2U42foCwZDqKfYzKkrh4VgYIY4FxVRmN2646f8ck+xw7KrjzOlZ
ZYAVfdZgKlaWn29FzA8nfdR2quj.3ejflBJnKr.Dwpf13cZBm85P0rPj.rOB
6fvztPFGkVI0SAPi5NKHmih7E8Ph2e35uOtYN6x6JEQtJVWpV7gRtm2dZy9W
+YMCxLHrEvAknQktDVdY7v82SFosgmSGHO56BRRt6mEEKxRKDnGd+2812h9X
5GSeODOcAJ.M9YHHAfjPkyD0GIugn.Ht6bQ.7TTS8DoPtCQCQxWobX+jYPUJ
hPn3zgnx7kogphieFZ2j3TwDgH5dzaUscJ77kEnIY4hoYKglVYzcH5KKxJzu
qmgegxl.0MLNGBNDsr.5IUz0iAPZFE.0TtLOEdClQYrAAeORwW+XVo3aP+hb
DHUBCH.mfbEKfGOPyjQhGiCAdNUUBRcQjij4X.u5MZRDzHSyTDQFbcYdHHIM
AzlF1lnoLjKG8UZH5guV1vEkA4kKWbOPGPC9YgjNdJHVy+ZJQ1.Cq.FUWQpA
ke.8DbUwi.YEWBUCDhPyAXCEETFbuhICg9EIRiYnGVjKyt0+io.r+9vrxRz+
Nt7OlJxCRhT35u.X0amlI9X5xEQppQwneJrLarPVU7JkGYWVHz2njevz1UoX
XkoEWOkxDWO9kXYocoTwuzF611zXJyimB3F5qf9nOT9qesryJTJ1EOcV4cIh
IPVWYoOBUMFTl.4sGRRzRT4AOIkRjn8h7LnNJI2mhg6OSk5JZrPJ4i9gfu.R
w+NHLCcpfAMij88n+qTPPMt4UTwj3bAnY.h.aIe.RiAEeF8Pdzx3zLkLUs1Z
mcmczah0FH4ZmpLcp.rVbX3d0zalKhSiKAxBZ9BU2zTP3uPobgL1Q.U0.kl+
jcBZj1AMOpzsJYjdz0n53QXsfYrqELKblH7yUFoDfPVXbrwDGXqCjwjviT7a
rXZbpxOvxzXvpOnPH0GlTJMZog8l2UZJcdPjxjG7ywIYgeFULaInFDk8jpxZ
apvMA4cv9X.7.vaRRGFAcPYHMR0dF2BZC7wEJ2TOKeZnCRD+HzJo.OLWSW6r
qk2wfI6pGf.pdjC4rpfL2YeK8JYloVf93.ocJEvocv9wAcEiMQgBtl.lb0y9
heKnvtGRs+iHOJHM3uaZbN1jDrhED4FfwfLPCEmH8jV.BB0Z+aF.Vkqc4apU
EIb9a5zAcGt5Rf3WdsNJ3R4PXDU0mouHzIca0MWO.KpQjT8oq1SIyqV3mP24
ToxfHpdyOPNqgwoK.W.fxfRNtwsiDSBVlT9ociSMu+jfPQqUtk9paFLMONJK
URFMpq7xUuvOXF1HBuN6ndhzfE6nxPXQkKKFGjKQNyHtSptYYVVRyaspyBD3
CRiA0YQYrlbgHdptY77E4wZk5UWSOf9yJByyRRZzT5673NtiNrvmhiJmoZq5
fI73wKp5DFrBihhmBNxadsxfoEMuRiIbutfVcM4FWuyr.2bvrlNF5.3U+q9C
sKaa5jkMt70iSd8bC2ZbEFUuAa0DWqYF0tJ91p43649br2nZ2usLGuoxrnQq
6TArNx+1CjRLPpVWf62Kj59ZFRa38Y6D0kRo8AnT8b0g0e4p8+f6.P4sBnaX
TqMmPsOdOcjG+dMtOmdzcgLdIGqjX0J+FAVrmSu.L8fAX19Ky1C.e1.z+IB2
qpeCIUV+.I4fARxQGH0i.9ECVZrhZMTheMCkc4XRMsoCgbef2ZFjaF5MXzaH
n2PQugYmhe0WjdcU47Z1Ukhb6CwFISy2HNtcvtaNRWdshHNVgHcNMUlopRm4
tJByyLXfI0UN6GM7eUiFTm8BMbctZQC8atOegDu6oveXrgpeaGnfaETvsBJN
6AKuNsT4n+zRVXJtQd+ciEEYKyCq.8ptRTSdBRQrLNcUd5eXcjoa7fyhihZl
UrNQxBYZo5g.vpdt8klkJi1QyPvdH7UFMStbvYu8Amu1nY7ECMKGXBqnY2KH
Z18Jjl4aYNnEYiQWVzrUxytWNzL0VZ14xglI6isN5kAMi2GZlbYPyNma6FqC
aJRs9qEogO+ovfvYFxxjGV07cLnH3QQzm.R.BG7SAkk4wiWVpC2p9jwX23ka
0zSz4M6e1QZY.8mljMNHwLURqZ9FuzslMk8ZJXtcMPeblVut1XYDhdMCpmjZ
8BAqsU9DezKxJAa8Hmbbfi+wccuVv7c0qELrEHB+UAhHWzCfCbKPEyBki24Z
clythVwfkYSmlHrPdX8tC5v1iPb5ArPuOWc8NVrRZspq24UxhE0wBcAsMyt2
2LLuqvkKZRXjEq5CM6S3tq9Zm6HD+8Prm0F+jDWn1paUe+2ZuF259kxkiR5W
Qf6vzKBtMm+gFrMeuWsKW.6B61VyWOFjz0Zsmwza+.ikxQcAL3iDtbLWMTKm
OtyMEFcjWM9iu0rMa81D8kUl3v2ewcHWP5B2HX6kK7t7DL5fs6JVIrO0Z1l3
bEpOP3zih9.gbspPzKDYbRVAQ7CFhtZsYzhW1ko0WEJcG3oAC0aRIyxKsUEI
+iDPwOLfp0uNA68MmtSUSmRuNb8d1ttWya7sVWf5Iwf.1LQtZUnqNvT1bS6z
E5o2vfqNSH5bufQbuZV09M.E04Mj8XBUiBqNGl5FSt3NGlZaGRpV6wc4kiWi
q0twaaORhul1jjsIi7cMjQlJJUaQuhR495nlfRQWRJXkrgmMGXWjKM4jdGJH
yovkl4HUetutzWuY5tjFHneGn77rtG3iJ92whCVJxKhBwgGtRaFIzabfNrRn
WThd9q24vsZjf9JvHwOKBhprFDmtXYIZ7xISjaO1GE4OK2V9yiS.qFhvrznh
8cKyMZs7EVepT01FlCe0rIC0lUk6NX4N9syCyAE660+ovE9hyGqjaGurrLak
G0YwoMlFO4YMSZjd9DcWucsjUr1Yqgy8TluCY3N9Q8.+k0JCD3ZTS0CW8Qyb
s19nOxrgjw7VFU+3ooYviK66pCfimt8AAxHOOBkK+EajC2yayWtciMzgdvpM
NKORj29YyGcS4wFVlql0wcZTg1yw5wvMNiTpuUzpu.Y0miRlgO0w7wpZI2Em
SUBGayVM5eqU4C+rV4ZSPkvXqLJbAHlR3mKwT5ISL8+Kv0k.GWEKwpP3ewk3
7omKIN7EtDmp4ZtHk0BfatXgLhgasHgZrVYaY8AIO7fq8Pas1fFzjd4ibwpd
XO4GXOeOG+lcyasNh1R+wVx2yBxeTOT+wiZFYA0P48PNyiiVjAhJlNT4Qvpb
uj3aN2qYqJcBfSWhMbf+YCPcsfbNeTC2l9WNc+5eIlkST0RJgupzIn+kysgC
X6GGXnYpdYfP0GP6MKQXM3N1Ih6XVvcLuym7B0B5w8v.ahqBI49qJcJ.TaX.
N+xBP4NGHhhqYfkRNM9q1f3ZweqyYCQYdGCSZGQ5wBx47o.Ssw+CkcgQOmud
KZic4QKzCw+7ROm8nY2LfMsEDtdfeMKSn5Ev95IQhorcqJcBrzPsQUhRNe8M
1X6lhOezC4Bidv1nKcFs8YimJ9n8RWZXiO7aSCxDRLdjd91qU5TnmXCeRvmR
9jnm7b15RmJ9rO4Kr+IgO04BfczyOpqx9npzofOsIlaR8Mo0IUMR48i0mYly
lVMwlw6gbloGRezy4yKEw6BHBBWik.eRi3DNM5KDahS.SOE1EjmXl7Uyqo9T
AtQAO8fG3oLX3cZFxKh0FLNSRfDaoG74gdvW.ZDU9FMGSdFMBt+IQh.6eIvw
FujTkJREGKKcJ3X2WtXf7Ub1HywEqxh2tJnE.FcZhMByrcXQw1x+bOWJYjpy
lv8oq55aEHLcwD8hJjxbVU5EigcNtL7Ql76KVVp69Huhcb87vpoCkRYT+96v
Hd5Ay1rofMqm+FkLYvv0+GL3FkL6bLp21kL6QFNV8BNM48foWBV4zt1wXm5V
4jkNEbL45dtNw13Iltmi9sAyY0S0l8BR+3yWjVXax7eOmKrp4m0QKIal6VYo
SAf5XQxSrCa5l0qk45k5kAzqEgMNgzkz9FmL5abpnu4IhNzZ+0s+OKCSg0.
-----------end_max5_patcher-----------

*/

Processing Kodu

İşleme çizimini yukarıdaki kod örneğinden kopyalayın. Analog sensörün değerini değiştirdiğinizde, ekranda böyle bir şey hareket eden bir top alırsınız. Top sadece düğmeye bastığınızda görünecektir:

Max Kodu

Maksimum yama böyle görünüyor. Yukarıdaki kod örneğinden metni kopyalayın ve yeni bir Maks penceresine yapıştırın.

Kaynak:arduino.cc

CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.