wemos d1で壁打ち


概要

wemos d1で壁打ち、やってみた。

写真

回路図

サンプルコード

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 oled(16);
int x = 64;
int y = 0;
int z = (128 - 20) / 2;
int dx = 3;
int dy = -2;
int p = 0;

void setup()
{
    Serial.begin(115200);
    while (!Serial) delay(250);
    Serial.println("\nok");
    oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
    oled.clearDisplay();
    oled.setTextColor(WHITE);
    oled.setTextSize(2);
    oled.setCursor(0, 0);
    oled.print("oled 1");
    oled.display();
}
void loop()
{
    int p = 0;
    int val = analogRead(A0);
    int range = map(val, 0, 1024, 0, 6);
    switch (range)
    {
    case 1:
        Serial.println("1");
        p = -1;
    break;
    case 2:
        Serial.println("2");
        p = 1;
    break;
    case 3:
        Serial.println("3");
    break;
    case 4:
        Serial.println("4");
    break;
    case 5:
        Serial.println("5");
    break;
    case 6:
        Serial.println("6");
    break;
    }
    if (x + dx > 125 || x + dx < 2)
    {
        dx = -dx;
    }
    if (y + dy < 2)
    {
        dy = -dy;
    }
    else if (y + dy > 48)
    {
        if (x > z && x < z + 20)
        {
            dy = -dy;
        }
        else
        {
            x = 64;
            y = 2;
            z = 54;
            p = 0;
        }
    }
    if (p == 1)
    {
        z += 5;
    }
    else if (p == -1)
    {
        z -= 5;
    }
    x += dx;
    y += dy;
    oled.clearDisplay();
    oled.drawRect(0, 0, 127, 63, WHITE);
    oled.fillRect(z, 50, 20, 10, WHITE);
    oled.fillCircle(x, y, 4, WHITE);
    oled.display();
    p = 0;
    delay(100);
}



以上。