ANDROID + ARDUINOADK + RGB ledde (4 / 6 steg)
Steg 4: prepping koden för adb kommunikation
den inledande adb skissen var från exemplet med romfont bibliotek. det behövs koden några förändringar så att vi kan framgångsrikt port det till andra program.här är ändrade koden och de platser där den nya koden att läggas
Packa upp koden för bearbetning och läsa den noggrant
slutliga koden för det tidigare programmet är-(bara huvudfilen, bibliotek har ingen förändring)
import java.io.IOException;
import android.util.Log;
privat Server server;
privata int sensorValue;
HScrollbar hs1, hs2, hs3;
void setup()
{
Skapa TCP server
storlek (800, 480);
Orientation(LANDSCAPE);
noStroke();
int x1 = höjd/4;
HS1 = nya HScrollbar (0, x 1 + 30, bredd-220, 16, 16);
HS2 = nya HScrollbar (0, 2 * x 1 + 30, bredd-220, 16, 16);
HS3 = nya HScrollbar (0, 3 * x 1 + 30, bredd-220, 16, 16);
Server = null;
försök
{
Server = nya Server(4567);
Server.start();
}
fånga (IOException e)
{
println(e.toString());
}
this.server.addListener (nya AbstractServerListener()
{
public void onReceive (klienten klienten, byte [] data)
{
om (data.length < 3) återvända;
sensorValue = (data [0] & 0xff) | () data [1] & 0xff) | ((data [2] & 0xff) << 8); Se förändringen
};
}
);
}
void draw()
{
Background(255);
Fill(63,232,34);
text ("RGB Color Selector Arduino", 5, 80);
flyta img1Pos = hs1.getPos();
flyta img2Pos = hs2.getPos();
flyta img3Pos = hs3.getPos();
flyta r = karta (img1Pos, 0, bredd-200,0,255);
flyta g = karta (img2Pos, 0, bredd-200,0,255);
flyta b = karta (img3Pos, 0, bredd-200,0,255);
int rr, gg, bb;
RR=int(r);
gg=int(g);
BB=int(b);
HS1.Update();
HS2.Update();
HS3.Update();
HS3.display();
HS1.display();
HS2.display();
Fill(RR,gg,BB);
strokeWeight(2);
Smooth();
ellips (700, 250, 190, 190);
stroke(0);
försök
{
Server.send (nya byte [] {(byte) (rr),(byte) (gg), (byte) ((bb))}); Se förändringen
}
fånga (IOException e)
{
println ("microbridgeproblem skickar TCP meddelande");
}
}
klass HScrollbar
{
int swidth, sheight;
float xpos, ypos;
float haft, newspos;
float sposMin, sposMax;
int lös;
booleska över;
Boolean låst;
flyta mellan.
HScrollbar (flyta xp, flyta yp, int sw, int sh, int l)
{
swidth = sw;
sheight = sh;
int widthtoheight = sw - sh;
ratio = (float) sw / (float) widthtoheight;
Xpos = xp;
ypos = yp-sheight/2;
gå = xpos + swidth/2-sheight/2.
newspos = gå;
sposMin = xpos;
sposMax = xpos + swidth - sheight;
Loose = l;
}
void update()
{
IF(overEvent()) {
över = sant;
} annat {
över = false;
}
om (mousePressed & & över) {
låst = sant;
}
IF(!mousePressed) {
låst = false;
}
IF(Locked) {
newspos = begränsa (mouseX-sheight/2, sposMin, sposMax);
}
om (abs (newspos - gå) > 1) {
gå = gå + (newspos-gå) / lös;
}
}
float begränsa (flyta val, flyta minv, flyta maxv)
{
returnera min (max (val, minv), maxv);
}
Boolean overEvent()
{
om (mouseX > xpos & & mouseX < xpos + swidth & & mouseY > ypos & & mouseY < ypos + sheight)
{
return true;
}
annat
{
returnera false;
}
}
void display()
{
noStroke();
Fill(204);
rect (xpos ypos, swidth, sheight);
IF(over || Locked)
{
fyllning (0, 0, 0);
}
annat
{
fyllning (102, 102, 102);
}
rect (haft ypos, sheight, sheight);
}
float getPos()
{
returnera haft * förhållandet;
}