Interagera med en OLED och en Accelerometer (3 / 6 steg)
Steg 3: Koden
När vi har ledningarna Ställ in, kan vi använda följande kod för att skapa vårt spel:
< br >< p > #include < JUGL.h >< br > #include < SPI.h >
#include < Wire.h >
#include < JUGL_SSD1306_128x64.h >
med hjälp av namnområdet JUGL;
SSD1306_128x64 föraren;
CONST int xpin = A3; Tilldela pin A3 till x
CONST int ypin = A2; Tilldela y pin A2
int x, y, x 1, y1, r, varx, variera, bredd, höjd; Definiera variabler
int xy [2]. Array till hold (x, y) koordinat
Förklaring av funktionerna
void cirkel (IScreen & scr);
void move_right (IScreen & scr);
void stop_right (IScreen & scr);
void move_left (IScreen & scr);
void stop_left (IScreen & scr);
void move_up (IScreen & scr);
void stop_up (IScreen & scr);
void move_down (IScreen & scr);
void stop_down (IScreen & scr);
void setup() {
IScreen & skärm = föraren; Hänvisa till drivrutinen
skärmen. BEGIN(); Initiera skärm
bredd = skärm. GetWidth(); Få bredden på skärmen (128)
höjd = skärm. GetHeight(); Få höjden på skärmen (64)
Circle(Screen); Rita cirkel
}
void loop() {
x1 = analogRead(xpin); Läs x analog data
Y1 = analogRead(ypin); Läs y analoga data
IScreen & skärm = föraren; Hänvisa till drivrutinen
om (x1 < 500) {//Check om sensor lutar till höger
move_right(Screen); Flytta bollen till höger
om (varx > = bredd-1-r) {//Check om bollen nått slutet av skärmen
stop_right(Screen); Stoppa flyttar
}
}
om (x1 > 520) {//Check om sensorn vinklas till vänster
move_left(Screen); Flytta bollen till vänster
IF(VARX=height-1-r) {//Check om bollen nått slutet av skärmen
stop_up(Screen); Stoppa flyttar
}
}
IF(Y1>510) {//Check om sensorn vinklas ner
move_down(Screen); Flytta bollen
IF(varyr) {//Check om bollen är inom gränserna
scr. Flush(); Uppvisning på skärm
}
}
void stop_left (IScreen & scr) {
scr. Förloppsindikatorförekomstens; Tydlig skärm
VARX = r; Uppdatera varx
XY [0] = varx; Lagra nya varx värde
scr. FillCircle(Point(5,xy[1]),r); Rita cirkel
scr. Flush(); Uppvisning på skärm
}
void move_up (IScreen & scr) {
scr. Förloppsindikatorförekomstens; Tydlig skärm
variera += 10. Flytta bollen 10 pixlar upp, tilldela värdet varierar
XY [1] = varierar; Store nya varierar värdet
scr. FillCircle(Point(xy[0],vary),r); Rita cirkel
IF(varyr) {//Check om bollen är inom gränserna
scr. Flush(); Uppvisning på skärm
}
}
void stop_down (IScreen & scr) {
scr. Förloppsindikatorförekomstens; Tydlig skärm
variera = r; Uppdatering varierar
XY [1] = varierar; Store nya varierar värdet
scr. FillCircle(Point(xy[0],5),r); Rita cirkel
scr. Flush(); Uppvisning på skärm
} < /p >