Étape 7: Voici le code complet
#include < Charliplexing.h >Cercle : rayon, initial et max x / valeurs y
rayon int = 2 ;
int cx0 = 6 ;
cy0 int = 4 ;
int cxMax = 13 - rayon ;
cyMax int = 8 - rayon ;
int cx, cy, llila, yAve ;
void setup()
{
Serial.Begin(9600) ;
LedSign::Init() ;
Étalonner les x et y les valeurs de l’accéléromètre
llila = 0 ;
Yavé = 0 ;
pour (int i = 0; i < 8; i ++) {}
llila = llila + analogRead(A0) ;
Yavé = yAve + analogRead(A1) ;
}
Moyenne x, valeurs y correspondent au « niveau »
llila = llila/8 ;
Yavé = yAve/8 ;
}
void loop()
{
DrawCircle(0) ; EFFACER le cercle précédent
Calculer l’inclinaison du "niveau"
et tracez le cercle il
CX = cx0 + (llila - analogRead(A0)) / 5 ;
CY = cy0 + (-yAve + analogRead(A1)) / 5 ;
Si (cx > cxMax) cx = cxMax ;
ElseIf (cx < rayon) cx = rayon ;
Si (cy > cyMax) cy = cyMax ;
ElseIf (cy < rayon) cy = rayon ;
DrawCircle(1) ; DESSINER le nouveau cercle
Delay(100) ;
}
Sub DrawCircle(int ink)
encre = 0: effacer le cercle
encre = 1: dessiner le cercle
{
pour (int x = 0; x < = rayon; x ++) / / x valeurs allant de 0 à rayon (un quart)
{
résoudre r ^ 2 = x ^ 2 + y ^ 2 pour y
float y = sqrt (pow (rayon, 2) - pow (x, 2)) ;
y = round(y*1) ;
Remplir la position y dans les 4 quadrants du cercle
LedSign::Set (x + cx, y + cy, encre) ; Quadrant 1
LedSign::Set (x + cx, cy - y, encre) ; Quadrant 4
LedSign::Set (cx - x, y + cy, encre) ; Quadrant 2
LedSign::Set (cx - x, cy - y, encre) ; Quadrant 3
}
}