2011-08-30 21:33:32 +02:00
|
|
|
/*
|
|
|
|
Serial Call and Response
|
|
|
|
Language: Wiring/Arduino
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
This program sends an ASCII A (byte of value 65) on startup
|
|
|
|
and repeats that until it gets some data in.
|
2013-10-21 09:58:40 +02:00
|
|
|
Then it waits for a byte in the serial port, and
|
2011-08-30 21:33:32 +02:00
|
|
|
sends three sensor values whenever it gets a byte in.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
Thanks to Greg Shakar and Scott Fitzgerald for the improvements
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
The circuit:
|
2013-10-21 09:58:40 +02:00
|
|
|
* potentiometers attached to analog inputs 0 and 1
|
2011-08-30 21:33:32 +02:00
|
|
|
* pushbutton attached to digital I/O 2
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
Created 26 Sept. 2005
|
|
|
|
by Tom Igoe
|
2012-04-24 19:14:10 +02:00
|
|
|
modified 24 April 2012
|
2011-08-30 21:33:32 +02:00
|
|
|
by Tom Igoe and Scott Fitzgerald
|
|
|
|
|
|
|
|
This example code is in the public domain.
|
|
|
|
|
|
|
|
http://www.arduino.cc/en/Tutorial/SerialCallResponse
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
int firstSensor = 0; // first analog sensor
|
|
|
|
int secondSensor = 0; // second analog sensor
|
|
|
|
int thirdSensor = 0; // digital sensor
|
|
|
|
int inByte = 0; // incoming serial byte
|
|
|
|
|
|
|
|
void setup()
|
|
|
|
{
|
|
|
|
// start serial port at 9600 bps:
|
|
|
|
Serial.begin(9600);
|
2012-04-09 16:48:11 +02:00
|
|
|
while (!Serial) {
|
|
|
|
; // wait for serial port to connect. Needed for Leonardo only
|
|
|
|
}
|
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
pinMode(2, INPUT); // digital sensor is on digital pin 2
|
2013-10-21 09:58:40 +02:00
|
|
|
establishContact(); // send a byte to establish contact until receiver responds
|
2011-08-30 21:33:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void loop()
|
|
|
|
{
|
|
|
|
// if we get a valid byte, read analog ins:
|
|
|
|
if (Serial.available() > 0) {
|
|
|
|
// get incoming byte:
|
|
|
|
inByte = Serial.read();
|
|
|
|
// read first analog input, divide by 4 to make the range 0-255:
|
2013-10-21 09:58:40 +02:00
|
|
|
firstSensor = analogRead(A0) / 4;
|
2011-08-30 21:33:32 +02:00
|
|
|
// delay 10ms to let the ADC recover:
|
|
|
|
delay(10);
|
|
|
|
// read second analog input, divide by 4 to make the range 0-255:
|
2013-10-21 09:58:40 +02:00
|
|
|
secondSensor = analogRead(1) / 4;
|
2011-08-30 21:33:32 +02:00
|
|
|
// read switch, map it to 0 or 255L
|
2013-10-21 09:58:40 +02:00
|
|
|
thirdSensor = map(digitalRead(2), 0, 1, 0, 255);
|
2011-08-30 21:33:32 +02:00
|
|
|
// send sensor values:
|
|
|
|
Serial.write(firstSensor);
|
|
|
|
Serial.write(secondSensor);
|
2013-10-21 09:58:40 +02:00
|
|
|
Serial.write(thirdSensor);
|
2011-08-30 21:33:32 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void establishContact() {
|
|
|
|
while (Serial.available() <= 0) {
|
|
|
|
Serial.print('A'); // send a capital A
|
|
|
|
delay(300);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
Processing sketch to run with this example:
|
|
|
|
|
|
|
|
// This example code is in the public domain.
|
|
|
|
|
|
|
|
import processing.serial.*;
|
|
|
|
|
|
|
|
int bgcolor; // Background color
|
|
|
|
int fgcolor; // Fill color
|
|
|
|
Serial myPort; // The serial port
|
|
|
|
int[] serialInArray = new int[3]; // Where we'll put what we receive
|
|
|
|
int serialCount = 0; // A count of how many bytes we receive
|
|
|
|
int xpos, ypos; // Starting position of the ball
|
|
|
|
boolean firstContact = false; // Whether we've heard from the microcontroller
|
|
|
|
|
|
|
|
void setup() {
|
|
|
|
size(256, 256); // Stage size
|
|
|
|
noStroke(); // No border on the next thing drawn
|
|
|
|
|
|
|
|
// Set the starting position of the ball (middle of the stage)
|
|
|
|
xpos = width/2;
|
|
|
|
ypos = height/2;
|
|
|
|
|
2014-01-29 11:27:09 +01:00
|
|
|
// Print a list of the serial ports for debugging purposes
|
|
|
|
// if using Processing 2.1 or later, use Serial.printArray()
|
2011-08-30 21:33:32 +02:00
|
|
|
println(Serial.list());
|
|
|
|
|
|
|
|
// I know that the first port in the serial list on my mac
|
|
|
|
// is always my FTDI adaptor, so I open Serial.list()[0].
|
|
|
|
// On Windows machines, this generally opens COM1.
|
|
|
|
// Open whatever port is the one you're using.
|
|
|
|
String portName = Serial.list()[0];
|
|
|
|
myPort = new Serial(this, portName, 9600);
|
|
|
|
}
|
|
|
|
|
|
|
|
void draw() {
|
|
|
|
background(bgcolor);
|
|
|
|
fill(fgcolor);
|
|
|
|
// Draw the shape
|
|
|
|
ellipse(xpos, ypos, 20, 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
void serialEvent(Serial myPort) {
|
|
|
|
// read a byte from the serial port:
|
|
|
|
int inByte = myPort.read();
|
|
|
|
// if this is the first byte received, and it's an A,
|
|
|
|
// clear the serial buffer and note that you've
|
2013-10-21 09:58:40 +02:00
|
|
|
// had first contact from the microcontroller.
|
2011-08-30 21:33:32 +02:00
|
|
|
// Otherwise, add the incoming byte to the array:
|
|
|
|
if (firstContact == false) {
|
2013-10-21 09:58:40 +02:00
|
|
|
if (inByte == 'A') {
|
2011-08-30 21:33:32 +02:00
|
|
|
myPort.clear(); // clear the serial port buffer
|
|
|
|
firstContact = true; // you've had first contact from the microcontroller
|
|
|
|
myPort.write('A'); // ask for more
|
2013-10-21 09:58:40 +02:00
|
|
|
}
|
|
|
|
}
|
2011-08-30 21:33:32 +02:00
|
|
|
else {
|
|
|
|
// Add the latest byte from the serial port to array:
|
|
|
|
serialInArray[serialCount] = inByte;
|
|
|
|
serialCount++;
|
|
|
|
|
|
|
|
// If we have 3 bytes:
|
|
|
|
if (serialCount > 2 ) {
|
|
|
|
xpos = serialInArray[0];
|
|
|
|
ypos = serialInArray[1];
|
|
|
|
fgcolor = serialInArray[2];
|
|
|
|
|
|
|
|
// print the values (for debugging purposes only):
|
|
|
|
println(xpos + "\t" + ypos + "\t" + fgcolor);
|
|
|
|
|
|
|
|
// Send a capital A to request new sensor readings:
|
|
|
|
myPort.write('A');
|
|
|
|
// Reset serialCount:
|
|
|
|
serialCount = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
Max/MSP version 5 patch to run with this example:
|
|
|
|
|
|
|
|
----------begin_max5_patcher----------
|
2012-04-24 19:14:10 +02:00
|
|
|
3908.3oc6ckziiaiE9b0+J3XjCIXpp.WzZNMURv.jCInQ5fYNjNngrDssRKK
|
|
|
|
4nkp6JA4+973hrkrsjncKu0SRiXasQ83G+dKj7QV+4qtaxzrOxKlf9Zzuft6
|
|
|
|
t+7U2cm7ThSbm936lrL3igIAExaaRJ+CYS+sI2qtTI+ikxSuBMKNojm+N3D4
|
|
|
|
Aua5KkPwpuoUAkgKhSm+tbdXo5cQXVOhuGwrohuHD4WT7iXzupen3HY4BuqG
|
|
|
|
rH0kzrrzxzfkb4kdJONHo9JoUKiSS3kRgjt4jYUk0mkznPJh+CYgHewpSqty
|
|
|
|
xWVwUh3jIqkEYEfmqQEMr.ETbB+YddQbVZix+tIAqV03z203QDX4ukIKHm6W
|
|
|
|
ep3T0ovqOUN+435m2Rcx+5U0E+FTzVBh9xOsHXIh5YuADg1x4IYgumG0r3mj
|
|
|
|
shmFmtJmWvSKCJ0um0WNhOKnJo7c6GmZe8YAg7Ne381Rc2j44wQYoBgn0SJN
|
|
|
|
c8qCHH1RhQqJi7NRCVsmGt.pGUESCxE31zDdCV.PRyxRZeo0MU.WOHMdYPIu
|
|
|
|
LVIrT75BMd4p73zxVuHdZ.TFKJByyRRZUTpq77dtRDzZFx+PbT4BYY0DJgaO
|
|
|
|
dUcSvj0XTT7bdQY6yUFLun8YZo71jl0TIt042RYNLa4RfCTWfsznKWDWfJpl
|
|
|
|
tJHrbgV6t.AZInfzWP.4INpJHA8za91u+6QN1nk7hh.PpQwonxEbTAWzpilV
|
|
|
|
MimilkmsDtPbo3TPiUdY0pGa9ZShS4gYUJz1pwE1iwCpxbAgJI9DGGwWNzFT
|
|
|
|
ksLf3z7M0MybG6Hj1WngsD7VEXS8j5q7Wu5U0+39ir8QJJS5GMHdtRimL4m1
|
|
|
|
0e1EVX0YsE2YssINriYRoFRyWVMoRRUGQvnkmms3pnXDYHbBKMPpIOL5i1s8
|
|
|
|
3rMPwFcRCsGRyPH780.8HBnpWz.vlEQBWJ+0CSunehJSmJxiIZRtNGhhDYrU
|
|
|
|
jt3ZQyA2fHJhZDifXIQHUHH8oGYgOREI5nqHIzhFWUndPyBdB3VzHJGwUhkV
|
|
|
|
rgvRl2UCVNMHcd234lf1DN16HFEIdHt99A5hrp7v5WWMSBQZgMP.Tkwoqig8
|
|
|
|
W1.Sn1f3h3nn1wLpBypPDzlJ7XinEGkLiMPloWOhrgR7dpZWJQV1faDy35Qj
|
|
|
|
MThMFkWFGsJChQPqrQp8iorV6Q28HBVF4nMVDJj7f1xyYACFScisg.ruLHOW
|
|
|
|
uMUS4Am4pI4PTnHi.6bi02HNzSYnDBe4cgAgKzRk1jc8PJLoH3Ydz6.Q.7K8
|
|
|
|
tfxx73oUkJq1MGuCy5TpAi.POWZ3AenidLOOIaZPhdjZVW3sdk6LXEGzHb7p
|
|
|
|
Mfr7SEy3SXHyBSxJ3J2ncNNYVJsXG6Me10nj4cfCRFdTFjLo7q3SiCpjjEDM
|
|
|
|
.nvra.GN39.E2CDTHWXPo8.xzfqrHCHKnf5QUYUVdoZPUjCSC7LU8.XtTUXl
|
|
|
|
X8vr51GjwFGLC2AlMdLkU4RiaRrnmJuiudnDk0ZW+9p6TuKBe433JUCzp6fU
|
|
|
|
iOF0SUk2UQYUPNTEkiZubvKa1tsmgL5SCTXGHnnG0CceLpkpR9Rs28IUESWl
|
|
|
|
EwWNKfHlg.zj6Ee7S+nE8A+m9F7Cu40u9gMm+aRp3kYYkKd3GDOz5y+c7b96
|
|
|
|
K9gfvuIK68uNO6g2vUUL80WxihCVFD9vlB30e2SOrmxUb527RZ3nZNrljGrR
|
|
|
|
70vs1J9suWuZ3zaHVdG3RIJLgGj2Gfn6TcGcstEfvtH.hpFLlnBndjOLGQAI
|
|
|
|
z98BXc6yQxghmOn6gZqj0ShPOXhynLOjzCESt+XwE8TxrCvrdXo16rqnLgvb
|
|
|
|
HaFmbh29QD+K0DyNdjDwvzQL.NXpoMvoOBxkger0HwMRQbpbCh91fjjG9Idw
|
|
|
|
prTH9SzaSea5a.GQEPnnh43WNefMlsOgx18n.vgUNO.tKl7tDyI3iHzafJHZ
|
|
|
|
VVNedVEbGgYIY42i93prB0i7B7KT1LnnCiyAiinpBnsPV7OG.tYKfBsrJOkG
|
|
|
|
UG5aq26iJw6GyJ4eM5mEgEKaNQPMEBUp.t8.krplOVTlZdJAW27bjvGK7p2p
|
|
|
|
HQPgLOSJDYv4E9gQBYBjMUselRxDy+4WplIzm9JQAWOEmfb.E364B43CAwp5
|
|
|
|
uRRDEv8hWXprjADMUOYpOg9.bVQpEfhKgGCnAnk.rghBJCdTVICA3sDvAhE5
|
|
|
|
oU4hf67ea5zWPuILqrD8uiK+i477fjHIt9y.V88yy3uMsZUj7wnxGKNAdPx5
|
|
|
|
fAZMErDZOcJU4M01WFQokix.pKa+JE1WacmnKFeYd7b.0PeIzB8Kk+5WIZpB
|
|
|
|
Ejt34KJeHgOCh4HK8Y3QiAkAfs8TRhhOkG7AAGQf0qxyfmQxa+PLb8Ex.2PS
|
|
|
|
4BdO5GB9Hvg+cfJCMofAIMu9Qz+UPCjckqVJlEmyA8Bf.rC6.3hAEuG8TdTU
|
|
|
|
bZljQ0nr1ayIqmTwQYfyRGafZhur5vfuyMSqYNWmtAPwWHalDSuUgT0Bosh.
|
|
|
|
JpAR89Y6Ez5QEfPTQO4J0DHLInIliz8BZV2JfV3Bd36qsQwAVVXbr1BGXp6s
|
|
|
|
Sd5sSDruo74wofx.HxUgxQwTnMLqTXvRmiGh2PUZr5pBynKChjl6feNUjSRn
|
|
|
|
hEUfRPT1GfG9Ik4TQBm.hEZZ.bc38HjAMKGzDRijEm1ifx1dbgzQyKh6FZc3
|
|
|
|
wOCkRJH+KUh0daWs6wzltWx1puXxlWW6NZWY2JiTBzzILRIANku02NourySM
|
|
|
|
VI1VJTvQZff32AJr+dS9e34QAoA6EGXlGFH9yk7yyQAlVd3SR94g+TxOu1sU
|
|
|
|
Flgd6ICI96LzazyPu1cgqsZ8r74SgF.65+efbMf4pGHT7lgHh30Sha3N5Ia.
|
|
|
|
oqjMf7nsuMwycf7iYDybiAAVr3eC.oTMjpzEr8GDRc9bFRGHYXDrzg.Tlx+q
|
|
|
|
NW8TY1IkzCfZ2IftkQstbB08HUezoDS+oFyI.cWIhWBaDiUo7qIrDO7f.L6n
|
|
|
|
AXqCmyNT9act.z+Iv.GR0uES0ZXfjdz.IczAxQOUR+zvRsUTigRxmyPYeNlj
|
|
|
|
yXv8Peef2ZFzuLzWPPeAE8ELzWXYlhe8WzAcUg+b1UkIoCLzIH60zwASGXau
|
|
|
|
a1Dq2nUY.sox4vng+m0nACePngC9lEMLZMBPodOxf+yx5d4uMCTHm3kJvIIG
|
|
|
|
jcLMedEQldkjpoBkQyjY1Hk.hmSY95Iwos8NDb9VSlIWOIntqgxryUjL6bCJ
|
|
|
|
y1lli5tWWxrQ7YmqGYlc6shK1iY2dr0wtNjYxgHyzaq0OznY235awCr8zSz6
|
|
|
|
EGd1QNUKf.74dADTBbTbeotjpW95IolY0WpKYONY8M83Rx2MChx3fL+iG5Mm
|
|
|
|
tXpdmvXj8uTvaAL1WjbbarQD4Z6kXBpnm6a69oKV2PY9WY174IbC3CaRQ9iK
|
|
|
|
Q4sYGQpwdtZ5wFrc7n569.M83OOR5ydSB1ZcAWCxdbKuavz9LILxfD.wWO.W
|
|
|
|
Nq+Zu4Es+AP6s5p9jDWH8ET+c85+XbW0.N1nDCTD7U4DGc6ohnU019fS7kQ0
|
|
|
|
o43luuOGjv5agHp0DT.CysOfgLR3xXlXTUKm16RivRsn3z0O6cl3YScAvtrb
|
|
|
|
hwekGB7BZuqESUzBJWmCvK7t9HF8Ts6cUAPoFWso3aP8ApWyJ3wqOPo2pJDC
|
|
|
|
BQ0NI0Pj8QCQ2r1L5vKaU5lDRYX7yRur1UYYZmJQ9iDHwN9dndB5n5ejflmm
|
|
|
|
UsBwLHnDkKXWRuAkb3NeuzqRstiQGP.fCQFdHNzaE.8u58Nz9svFE9SGIE1X
|
|
|
|
kv9Iwfl1BdNWjA7xcThsWCS847loyFD8pZq2E2F04lYULzBTDYhrFSDDJdjo
|
|
|
|
fisN2NUN26e4xRu51zD5ZseJ4HC63WyIX6jRqsp0jangBnK.Qlo58PCpWevt
|
|
|
|
ahzqK7fbKsdX6R64aao8LmWhBPh9jKVAPMzb5a2cV6opdWHneMmqMEmAGsPh
|
|
|
|
ieigIjV+4gF1GgbMNXg+NH44YaRYyd..S1ThHzKhFwwGRaWVITqyj9FvPqMT
|
|
|
|
d0pDuSqDrOGF.Uogf.juCFi9WAUkYR+rFPanDcPG8SbrtjyG03ZQ8m3AqC5H
|
|
|
|
NcUUoXSwVrqXKVcZu.5ZnkwIfIVdXVZTwAuTTUiYuxwjZDK6ZgnRtYV8tJmP
|
|
|
|
hEcuXgz2Goxyaiw35UkaWbpqtfzD02oUkkYqi.YQbZqIIWrIljFolsdmMKFR
|
|
|
|
wCJ2+DTn.9QlkOld+d9Qy9IJdpLfy05Ik2b8GsG9h8rdm1ZFx1FrmmlA2snw
|
|
|
|
qI9Mcdi2nr6q3Gc87nLawurbw1dda+tMyGJ9HaQmlkGwy6davisMgrkM65oz
|
|
|
|
eulfYCzG46am8tSDK144xV4cEvVMTRXq9CIX8+ALNWb6sttKNkiZetnbz+lx
|
|
|
|
cQnb1Nds2C0tvLNe14hwQtxYbxhqc17qHfamUcZZ3NYSWqjJuiDoizZ+ud2j
|
|
|
|
naRK4k3346IIVdR1kKiQjM39adMamvc6n+Xp36Yf3SIGh3uKbquqs1JksTII
|
|
|
|
kuJ7RrZSFb2Cn9j5a6DT8cMo0iczU+lsYaU8YNVh5k5uzJLU26ZcfuJE6XLY
|
|
|
|
0mcRp9NTCp+L+Ap+in7Xf3b9jFQBLtIY06PbrGhcrU6N00Qlaf9N0+QPo9nS
|
|
|
|
P6qsI7aYNLSNOHpsAxis0ggnZLjYqyyFkdSqinVsPaqSDZaYBZ6c93uLCjGm
|
|
|
|
iCroJVLzU45iNE.pIUfs3TWb.0FejHp9uANr0GcJPTroFDNOHpkIweLnI1QT
|
|
|
|
dHl3P7LhOF3Ahd9rnvLwAMy5JSdNezGlsIsW9mW44r26js+alhxjlkdhN0YE
|
|
|
|
YqiH5MTeWo6D4Qm.ieLS7OynmuVGSbmbFUlnWWhiQlhOeN+Yl35bq.tGo9JR
|
|
|
|
cj8AVqdz7nSgVB9zNj.FTOU68o5d9KO5TUOGxVMw+jTO8T6wqD0hEiHsOJO5
|
|
|
|
TTOMoS.zlqN0SpZjz6GcH05ylVM0jwuidlkmAif374ih5M5QPfccr8Hqifff
|
|
|
|
otN8pt3hUcaWu8nosBhwmD0Epw5KmoF.poxy4YHbnjqfPJqcM3Y2vun7nS.i
|
|
|
|
f3eETiqcRX2LR.4QmhZrkoCSGwzZrqKHrVR8caari+55d2caPqmq5n.ywe8Q
|
|
|
|
WrZL9fpwVXeaogMByE6y1SMdjk+gbavbN7fYvVtt1C2XwHJSzpk+tidUO25H
|
|
|
|
UB9onw9mlFQ10fhpZBaDatcMTTEGcJpwzqg92qqiVtM6Cu0IRQ0ndEdfCAqV
|
|
|
|
l0qYAUmPrctbxO4XCuPMa1asYzKDks1D52ZCne6Mednz9qW8+.vfqkDA
|
2011-08-30 21:33:32 +02:00
|
|
|
-----------end_max5_patcher-----------
|
|
|
|
|
|
|
|
|
2012-04-24 19:14:10 +02:00
|
|
|
|
2011-08-30 21:33:32 +02:00
|
|
|
*/
|