Arduino 2D nivå (7 / 8 steg)
Steg 7: Här är den fullständiga koden
#include < Charliplexing.h >Cirkel: radie, inledande och max x / y-värden
int radie = 2;
int cx0 = 6;
int cy0 = 4;
int cxMax = 13 - radie.
int cyMax = 8 - radie.
int cx, cy, Nick, yAve;
void setup()
{
Serial.BEGIN(9600);
LedSign::Init();
Kalibrera x och y värden från Accelerometer
s = 0;
yAve = 0;
för (int jag = 0; jag < 8; i ++) {
s = s + analogRead(A0);
yAve = yAve + analogRead(A1);
}
Genomsnittliga x, y-värdena motsvarar "nivå"
s = s/8.
yAve = yAve/8.
}
void loop()
{
DrawCircle(0); RADERA tidigare cirkeln
Beräkna lutningen från "nivå"
och rita en cirkel där
CX = cx0 + (s - analogRead(A0)) / 5;
CY = cy0 + (-yAve + analogRead(A1)) / 5;
om (cx > cxMax) cx = cxMax;
annars om (cx < radie) cx = radie;
om (cy > cyMax) cy = cyMax;
annars om (cy < radie) cy = radie;
DrawCircle(1); DRA den nya cirkeln
Delay(100);
}
void DrawCircle(int ink)
bläck = 0: radera cirkeln
bläck = 1: Rita cirkeln
{
för (int x = 0; x < = radie; x ++) / / x-värden från 0 till RADIUS (en kvadrant)
{
lösa r ^ 2 = x ^ 2 + y ^ 2 för y
float y = sqrt (pow (radie, 2) - pow (x, 2));
y = round(y*1);
Fyll den y-positionen i de 4 kvadranterna av cirkla
LedSign::Set (x + cx, y + cy, bläck); Kvadrant 1
LedSign::Set (x + cx, cy - y, bläck); Kvadrant 4
LedSign::Set (cx - x, y + cy, bläck); Kvadrant 2
LedSign::Set (cx - x, cy - y, bläck); Kvadrant 3
}
}