Asosiy mazmunga o‘tish
Constell Shop
Raqamli ruletka 3D

Loyiha qo‘llanmalari

Raqamli ruletka

Ultratovush sensori masofani o‘lchaydi, OLED ekran uni santimetrlarda ko‘rsatadi. Bir kechada yig‘iladi va uyda haqiqatan ham asqotadi.

Murakkablik
Oson
Vaqt
~60 min
Detallar
5 ta detal
Qadamma-qadam
4 qadam
  • I²C displey bilan ishlash
  • Ultratovush bilan masofani o‘lchash va natijani tekislash
  • Breadboardda yig‘ish

Detallar

Yana kerak bo‘ladi

  • — Kompyuter va Arduino IDE (arduino.cc dan bepul)
  • — UNO uchun USB kabel (UNO SMD ning «+ USB kabel» varianti)
  • — Kichik krestli otvertka

Qadamma-qadam

  1. 01

    Breadboardda yig‘ing

    HC-SR04 va OLED ni breadboardga qo‘ying. UNO ning 5V va GND ini breadboard quvvat qatorlariga torting — ikkala modul shulardan quvvat oladi.

  2. 02

    Ulang

    OLED: SDA → A4, SCL → A5. HC-SR04: TRIG → D12, ECHO → D11.

  3. 03

    Kutubxonalarni o‘rnating

    Arduino IDE da «Library Manager» ni oching va «Adafruit SSD1306» ni o‘rnating (u «Adafruit GFX» ni ham o‘rnatishni taklif qiladi — rozilik bering).

  4. 04

    Yuklang va olib yuring

    Kodni yuklang — ekranda masofa paydo bo‘ladi. Ruletka UNO ning USB porti orqali ishlaydi: kompyuterdan uzib, USB kabelni istalgan powerbankka ulasangiz, uni qayerga bo‘lsa ham olib borasiz.

Ulanish

  • Quvvat (+)
  • Yer (−)
  • Signal pini
  • I²C / SPI shinasi
OLED ⟷ UNO4 ta sim
  1. OLEDVCC→UNO5V
  2. OLEDGND→UNOGND
  3. OLEDSDA→UNOA4
  4. OLEDSCL→UNOA5
HC-SR04 ⟷ UNO4 ta sim
  1. HC-SR04VCC→UNO5V
  2. HC-SR04GND→UNOGND
  3. HC-SR04TRIG→UNOD12
  4. HC-SR04ECHO→UNOD11
USB kabel ⟷ Kompyuter yoki powerbank1 ta sim
  1. USB kabel→Kompyuter yoki powerbank

Kod

sketch.ino
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 oled(128, 64, &Wire, -1);
const int TRIG = 12, ECHO = 11;

long readCm() {
  digitalWrite(TRIG, LOW);  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH); delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long us = pulseIn(ECHO, HIGH, 25000);
  return us ? us / 58 : -1;
}

// beshta o‘lchovning o‘rtancha qiymati: bitta adashgan aks-sado natijani buzmaydi
long measure() {
  long r[5];
  for (int i = 0; i < 5; i++) { r[i] = readCm(); delay(15); }
  for (int i = 0; i < 4; i++)
    for (int j = i + 1; j < 5; j++)
      if (r[j] < r[i]) { long t = r[i]; r[i] = r[j]; r[j] = t; }
  return r[2];
}

void setup() {
  pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT);
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);   // ekran yonmasa, 0x3D ni sinab ko‘ring
  oled.setTextColor(SSD1306_WHITE);
}

void loop() {
  long cm = measure();
  oled.clearDisplay();
  oled.setTextSize(1); oled.setCursor(0, 0);
  oled.print("Constell tape");
  oled.setTextSize(3); oled.setCursor(0, 22);
  if (cm < 2 || cm > 400) oled.print("---");
  else { oled.print(cm); oled.setTextSize(2); oled.print(" cm"); }
  oled.display();
  delay(150);
}

Agar biror narsa ishlamasa

  • Ekran qorong‘i: kodda 0x3C o‘rniga 0x3D yozib ko‘ring; SDA/SCL A4/A5 ga ulanganini tekshiring.
  • Natija sakraydi: sensorni o‘lchanayotgan yuzaga tik qarating; 2 sm dan yaqin va 4 m dan uzoq masofani u o‘lchay olmaydi.
  • Powerbankdan ishlamaydi: ba’zi powerbanklar kichik tokda o‘zini o‘chiradi — boshqasini sinab ko‘ring yoki ekran yorqinligini oshiring.

Keyingi qadamlar

  • Tugma qo‘shib, o‘lchovni «muzlatib» qo‘ying
  • Ikki o‘lchovdan xona maydonini hisoblang