Upravljanje kružnicom

Zadatak

Spojite joystick i easyC OLED ekran na Arduino MKR1000 shield. Izradite program kojim se na easyC OLED ekranu prikazuje kružnica ovisno o položaju (vrijednostima) x i y osi na joysticku.

Kako bi uspješno napravili program, potrebno je u Library Manager-u (Sketch -> Include Library -> Manage Libraries) instalirati dvije biblioteke:

  • Adafruit_GFX.h
  • Adafruit_SSD1306.h

Prikaz spajanja

Joystick spojite na shield tako da os X spojite na izvod A0, a os Y na izvod A1.
EasyC OLED ekran spojite na I2C priključak.

Arduino kod
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // sirina OLED ekrana u pikselima
#define SCREEN_HEIGHT 64 // visina OLED ekrana u pikselima

// Deklariranje SSD1306 ekrana spojenog na I2C sabirnicu (SDA i SCL izvodi)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

int x, y;

void setup() {
  Serial.begin(115200);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Adresa OLED ekrana (0x3C)
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  // Display static text
  display.println("Hello, world!");
  display.display(); 
  delay(2000);
}

void loop() {

  x = analogRead(A0); // Očitaj vrijednost x osi
  y = analogRead(A1); // Očitaj vrijednost y osi

  display.clearDisplay();

  if(x > 600){
    display.drawCircle(64, 12, 10, WHITE); // Crtanje kružnice u gornjem dijelu ekrana
    display.display();
  }
  if(x < 400){
    display.drawCircle(64, 52, 10, WHITE); // Crtanje kružnice u donjem dijelu ekrana
    display.display();
  }
  if(y > 600){
    display.drawCircle(44, 32, 10, WHITE); // Crtanje kružnice u lijevom dijelu ekrana 
    display.display();
  }
  if(y < 400){
    display.drawCircle(84, 32, 10, WHITE); // Crtanje kružnice u desnom dijelu ekrana
    display.display();
  }
  if(x < 600 && x > 400 && y < 600 && y > 400){
    display.drawCircle(64, 32, 10, WHITE); // Crtanje kružnice u sredini ekrana 
    display.display();
  }
  delay(100);
}