LED be- és kikapcsolása Processingből vagy Max/MSP-ből az Arduino-ra küldött adatokkal.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa az Arduino kártyát használja adatok fogadására a számítógépről. A kártya bekapcsol egy LED-et, ha megkapja a "H" karaktert, és kikapcsolja a LED-et, ha az "L" karaktert kapja.
Az adatok elküldhetők az Arduino Software (IDE) soros monitorjáról vagy más programból, például a Processing (lásd a kódot lent), a Flash (soros hálózati proxyn keresztül), a PD vagy a Max/MSP programból.
Hardver szükséglet
Arduino kártya
LED (opcionális)
220 ohmos ellenállás (opcionális)
Szoftver szükséglet
Az áramkör
Sok Arduino kártya beépített LED-del rendelkezik a 13-as kivezetéshez csatlakoztatva; ha a kártyán nincs beépített LED, csatlakoztasson egy külső LED-et a 13-as kivezetéshez. A hosszú láb vagy anód egy 220-as ellenálláson keresztül megy a 13-as kivezetéshez. A rövid láb vagy a katód a földre kerül.

Vázlat

A kód
/*
Physical Pixel
Példa számítógépről az Arduino kártyára küldött adatok fogadásának használatára.
Ebben az esetben az Arduino kártyák bekapcsolnak egy LED-et, amikor megkapják a
"H" karaktert, és kikapcsolják a LED-et, amikor az "L" karaktert kapják.
Az adatok elküldhetők az Arduino Serial Monitorból vagy más programból,
például a Processing (lásd a kódot lent), a Flash (soros hálózati proxyn keresztül),
a PD vagy a Max/MSP programból.
Az áramkör:
- LED 220 ohmos ellenálláson keresztül a 13-as digitális kivezetésről a földre csatlakozik
created 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/PhysicalPixel
*/
const int ledPin = 13; // a kivezetés, amelyhez a LED csatlakozik
int incomingByte; // egy változó a bejövő soros adatok beolvasásához
void setup() {
// soros kommunikáció inicializálása:
Serial.begin(9600);
// inicializálja a LED kivezetését kimenetként:
pinMode(ledPin, OUTPUT);
}
void loop() {
// nézd meg, hogy vannak-e bejövő soros adatok:
if (Serial.available() > 0) {
// olvassa be a soros puffer legrégebbi bájtját:
incomingByte = Serial.read();
// ha nagy H (ASCII 72), kapcsolja be a LED-et:
if (incomingByte == 'H') {
digitalWrite(ledPin, HIGH);
}
// ha L (ASCII 76), kapcsolja ki a LED-et:
if (incomingByte == 'L') {
digitalWrite(ledPin, LOW);
}
}
}
/* Processing kód a példához
// Vigye az egeret a sorozat fölé
// Bemutatja, hogyan kell adatokat küldeni az Arduino I/O kártyára annak érdekében,
// hogy bekapcsolja a lámpát, ha az egér egy négyzet felett van, és kikapcsolja,
// ha az egér nem ott van.
// created 2003-4
// based on examples by Casey Reas and Hernando Barragan
// modified 30 Aug 2011
// by Tom Igoe
// Ez a kód nyilvános.
import processing.serial.*;
float boxX;
float boxY;
int boxSize = 20;
boolean mouseOverBox = false;
Serial port;
void setup() {
size(200, 200);
boxX = width / 2.0;
boxY = height / 2.0;
rectMode(RADIUS);
// Sorolja fel az összes elérhető soros portot a kimeneti ablakban.
// Ebből a listából ki kell választania azt a portot, amelyhez az
// Arduino kártya csatlakozik. A lista első portja a 0-s port,
// a harmadik pedig a 2-es port.
// ha a Processing 2.1 vagy újabb verzióját használja, használja a Serial.printArray()
println(Serial.list());
// Nyissa meg azt a portot, amelyhez az Arduino kártya csatlakozik (ebben az esetben #0)
// Ügyeljen arra, hogy a portot az Arduino által használt sebességgel (9600 bps) nyissa meg.
port = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
background(0);
// Tesztelje, hogy a kurzor a doboz fölött van-e
if (mouseX > boxX - boxSize && mouseX < boxX + boxSize &&
mouseY > boxY - boxSize && mouseY < boxY + boxSize) {
mouseOverBox = true;
// rajzoljon egy vonalat a doboz köré, és változtassa meg a színét:
stroke(255);
fill(153);
// küldjön "H"-t, hogy jelezze, hogy az egér a négyzet fölött van:
port.write('H');
}
else {
// állítsa vissza a dobozt inaktív állapotába:
stroke(153);
fill(153);
// küldjön "L"-t a LED kikapcsolásához:
port.write('L');
mouseOverBox = false;
}
// Rajzold le a dobozt
rect(boxX, boxY, boxSize, boxSize);
}
*/
/* Max/MSP 5-ös verziójú patch a példával való futtatáshoz:
----------begin_max5_patcher----------
1672.3oc2ZszaaiCD9ryuBBebQVCQRYao8xhf1cQCPVfBzh8RRQ.sDsM2HSZ
HQmlzh9eu7gjsjsEk7y0oWjiHoHm4aluYHGlueUmtiDuPy5B9Cv8fNc99Uc5
XZR2Pm726zcF4knDRlYXciDylQ4xtWa6SReQZZ+iSeMiEQR.ej8BM4A9C7OO
kkAlSjQSAYTdbFfvA27o2c6sfO.Doqd6NfXgDHmRUCKkolg4hT06BfbQJGH3
5Qd2e8d.QJIQSow5tzebZ7BFW.FIHow8.2JAQpVIIYByxo9KIMkSjL9D0BRT
sbGHZJIkDoZOSMuQT.8YZ5qpgGI3locF4IpQRzq2nDF+odZMIJkRjpEF44M3
A9nWAum7LKFbSOv+PSRXYOvmIhYiYpg.8A2LOUOxPyH+TjPJA+MS9sIzTRRr
QP9rXF31IBZAHpVHkHrfaPRHLuUCzoj9GSoQRqIB52y6Z.tu8o4EX+fddfuj
+MrXiwPL5+9cXwrOVvkbxLpomazHbQO7EyX7DpzXYgkFdF6algCQpkX4XUlo
hA6oa7GWck9w0Gnmy6RXQOoQeCfWwlzsdnHLTq8n9PCHLv7Cxa6PAN3RCKjh
ISRVZ+sSl704Tqt0kocE9R8J+P+RJOZ4ysp6gN0vppBbOTEN8qp0YCq5bq47
PUwfA5e766z7NbGMuncw7VgNRSyQhbnPMGrDsGaFSvKM5NcWoIVdZn44.eOi
9DTRUT.7jDQzSTiF4UzXLc7tLGh4T9pwaFQkGUGIiOOkpBSJUwGsBd40krHQ
9XEvwq2V6eLIhV6GuzP7uzzXBmzsXPSRYwBtVLp7s5lKVv6UN2VW7xRtYDbx
7s7wRgHYDI8YVFaTBshkP49R3rYpH3RlUhTQmK5jMadJyF3cYaTNQMGSyhRE
IIUlJaOOukdhoOyhnekEKmZlqU3UkLrk7bpPrpztKBVUR1uorLddk6xIOqNt
lBOroRrNVFJGLrDxudpET4kzkstNp2lzuUHVMgk5TDZx9GWumnoQTbhXsEtF
tzCcM+z0QKXsngCUtTOEIN0SX2iHTTIIz968.Kf.uhfzUCUuAd3UKd.OKt.N
HTynxTQyjpQD9jlwEXeKQxfHCBahUge6RprSa2V4m3aYOMyaP6gah2Yf1zbD
jVwZVGFZHHxINFxpjr5CiTS9JiZn6e6nTlXQZTAFj6QCppQwzL0AxVtoi6WE
QXsANkEGWMEuwNvhmKTnat7A9RqLq6pXuEwY6xM5xRraoTiurj51J1vKLzFs
CvM7HI14Mpje6YRxHOSieTsJpvJORjxT1nERK6s7YTN7sr6rylNwf5zMiHI4
meZ4rTYt2PpVettZERbjJ6PjfqN2loPSrUcusH01CegsGEE5467rnCdqT1ES
QxtCvFq.cvGz+BaAHXKzRSfP+2Jf.KCvj5ZLJRAhwi+SWHvPyN3vXiaPn6JR
3eoA.0TkFhTvpsDMIrL20nAkCI4EoYfSHAuiPBdmJRyd.IynYYjIzMvjOTKf
3DLvnvRLDLpWeEOYXMfAZqfQ0.qsnlUdmA33t8CNJ7MZEb.u7fiZHLYzDkJp
R7CqEVLGN75U+1JXxFUY.xEEBcRCqhOEkz2bENEWnh4pbh0wY25EefbD6EmW
UA6Ip8wFLyuFXx+Wrp8m6iff1B86W7bqJO9+mx8er4E3.abCLrYdA16sBuHx
vKT6BlpIGQIhL55W7oicf3ayv3ixQCm4aQuY1HZUPQWY+cASx2WZ3f1fICuz
vj5R5ZbM1y8gXYN4dIXaYGq4NhQvS5MmcDADy+S.j8CQ78vk7Q7gtPDX3kFh
3NGaAsYBUAO.8N1U4WKycxbQdrWxJdXd10gNIO+hkUMmm.CZwknu7JbNUYUq
0sOsTsI1QudDtjw0t+xZ85wWZd80tMCiiMADNX4UzrcSeK23su87IANqmA7j
tiRzoXi2YRh67ldAk79gPmTe3YKuoY0qdEDV3X8xylCJMTN45JIakB7uY8XW
uVr3PO8wWwEoTW8lsfraX7ZqzZDDXCRqNkztHsGCYpIDDAOqxDpMVUMKcOrp
942acPvx2NPocMC1wQZ8glRn3myTykVaEUNLoEeJjVaAevA4EAZnsNgkeyO+
3rEZB7f0DTazDcQTNmdt8aACGi1QOWnMmd+.6YjMHH19OB5gKsMF877x8wsJ
hN97JSnSfLUXGUoj6ujWXd6Pk1SAC+Pkogm.tZ.1lX1qL.pe6PE11DPeMMZ2
.P0K+3peBt3NskC
-----------end_max5_patcher-----------
*/
Processing kód
Másolja ki a Processing kódot a fenti kódmintából. Amikor az egeret a középső négyzet fölé viszi, a 13-as kivezetésen lévő LED-nek be kell kapcsolnia, ha elviszi onnan akkor ki kell kapcsolnia. A Processing applet így néz ki:

Max patch
A Max/MSP patch úgy néz ki, mint az alábbi képen. Másolja ki a fenti kódmintából, és illessze be egy "New patcher" ablakba.

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.