Blocks: tüm sayfalar

Probot blok listesi

Bu sayfa Probot Blocks'taki her bloğu kategori sırasıyla listeler. Blok etiketleri ekrandaki gibidir. Bir bloğun üstünde beklersen ekranda da kısa açıklaması çıkar.

▾ işaretli alanlar açılır listedir. Köşeli parantezli alanlar ([0.5]) yuva ya da sayı kutusudur.

Ürettiği kod sütunu, bloğun Kod Önizleme'de ürettiği kodu araç kutusundaki varsayılan değerlerle gösterir. Boş koşul yuvası kodda false, boş sayı yuvası 0 ya da 0.0f olur. İçine blok alan bloklarda yalnız ilk satır yazılır.

Yaşam döngüsü blokları

Çalışma alanında hazır gelir, blok listesinde yoktur, silinemez. Her biri koddaki bir fonksiyondur.

Blok Ne zaman çalışır Ürettiği kod
robotInit Init'e basılınca bir kez. Pin ve motor tanımları buraya konur. void robotInit()
robotEnd Stop'ta bir kez. Motorlar burada durdurulur. void robotEnd()
autonomousInit Otonom başlarken bir kez. void autonomousInit()
autonomousLoop Otonom boyunca saniyede yaklaşık 50 kez. 2 saniyeden uzun bekleme yapılmaz. void autonomousLoop()
teleopInit Teleop başlarken bir kez. void teleopInit()
teleopLoop Teleop boyunca saniyede yaklaşık 50 kez. Kumanda okuma ve sürüş buraya konur. void teleopLoop()

Kumanda

Blok Ne yapar Ürettiği kod
kumandayı oku js ▾ ölü bölge [0.08] Kumandanın güncel değerlerini alır. Döngüde her turda okunur. Ölü bölge (0-0,5) çubuk bırakılınca kalan küçük değerleri sıfır sayar. auto js = probot::io::joystick_api::makeDefault();
js ▾ sol çubuk ↕ (ileri +) ▾ Çubuk -1 ile +1 arası değer verir. Tetik yalnız 1 (basılı) ya da 0 (basılı değil) verir; yarım basış ara değer vermez. Seçenekler: sol/sağ çubuk ↕ ve ↔, sol/sağ tetik. js.getLeftY()
js ▾ A (×) ▾ basılı mı? Tuş basılıysa doğru verir. Seçenekler: A, B, X, Y, LB, RB, Back / Select, Start / Options, L3, R3. Parantezde PlayStation karşılığı yazar. js.getA()
js ▾ D-Pad yukarı ▾ basılı mı? Yön tuşu basılıysa doğru verir: yukarı, sağ, aşağı, sol. js.getDpadUp()
js ▾ D-Pad açısı D-Pad yönünü tek sayıyla verir: -1 hiçbiri, 0 yukarı, 90 sağ, 180 aşağı, 270 sol. js.getPOV()
js ▾ bağlı mı? Kumandadan veri geldiyse doğru verir. js.isConnected()
kumanda eşlemesi ▾ Kumanda modelini seçer: "Logitech F310 (varsayılan)", "Standart (Xbox One, DS4)", "Axis9 D-Pad", "Tuna varsayılan". "Tuna varsayılan" kütüphanedeki eski bir eşlemeyi kullanır; kumandan ilk üç modelden biriyse onu seçme. robotInit içine konur. probot::io::joystick_mapping::setActiveByName("logitech-f310");
js ▾ ham eksen no [0] Eşlemesiz ham eksen değeri (ileri seviye). js.getRawAxis((int)(0))
js ▾ ham buton no [0] Eşlemesiz ham tuş değeri (ileri seviye). js.getRawButton((int)(0))

Motor & Sürüş

Bloklar iki PWM girişli motor sürücüler (BTS7960 türü) için kod üretir. motor tanımla, kodun başına pin sabitlerini (const uint8_t solMotor_RPWM = 16;) ve setMotor fonksiyonunu ekler.

Blok Ne yapar Ürettiği kod
motor tanımla solMotor ▾ RPWM pin 16 LPWM pin 17 ters ☐ Motoru iki pinle tanımlar. ters işaretliyse yön tersine döner. robotInit içine konur. pinMode(solMotor_RPWM, OUTPUT);
pinMode(solMotor_LPWM, OUTPUT);
setMotor(solMotor_RPWM, solMotor_LPWM, 0.0f, false);
motoru sür solMotor ▾ güç [0.5] Motoru -1 (tam geri) ile +1 (tam ileri) arası güçle sürer. 0 durdurur. setMotor(solMotor_RPWM, solMotor_LPWM, (float)(0.5), solMotor_INVERTED);
motoru durdur solMotor ▾ Motoru durdurur. robotEnd içine her motor için konur. setMotor(solMotor_RPWM, solMotor_LPWM, 0.0f, false);
tank sürüş - sol motor ▾ sağ motor ▾ sol güç [0] sağ güç [0] Her taraf kendi gücüyle sürülür. Genelde sol çubuk sol güce, sağ çubuk sağ güce takılır. setMotor(solMotor_RPWM, solMotor_LPWM, (float)(0), solMotor_INVERTED);
setMotor(sagMotor_RPWM, sagMotor_LPWM, (float)(0), sagMotor_INVERTED);
arcade sürüş - sol motor ▾ sağ motor ▾ ileri/geri [0] dönüş [0] Bir değer ileri/geri, diğeri dönüş verir. Sol motora ileri/geri + dönüş, sağ motora ileri/geri - dönüş gider. setMotor(solMotor_RPWM, solMotor_LPWM, fwd + turn, solMotor_INVERTED);
setMotor(sagMotor_RPWM, sagMotor_LPWM, fwd - turn, sagMotor_INVERTED);
hassas güç [x] Değerin küpünü verir. Düşük hızda ince kontrol sağlar; -1, 0 ve +1 değişmez. hassasGuc((float)(0.0f))

Servo

servo tanımla, kodun başına const uint8_t kolServo_PIN = 4; satırını ve servoAngle fonksiyonunu ekler.

Blok Ne yapar Ürettiği kod
servo tanımla kolServo ▾ pin 4 LEDC kanal 7 Servoyu bir pin ve PWM kanalıyla (0-15) tanımlar. robotInit içine konur. ledcAttachChannel(kolServo_PIN, 50, 14, 7);
servo açısı kolServo ▾ [90] derece Servoyu 0-180 derece arası bir açıya götürür. servoAngle(kolServo_PIN, (float)(90));
servo sinyalini kes kolServo ▾ Servo sinyalini keser, servo serbest kalır. robotEnd için uygundur. ledcWrite(kolServo_PIN, 0);

Her servoya ayrı bir LEDC kanalı ver.

Telemetri

Driver Station ekranındaki telemetri paneline yazar.

Blok Ne yapar Ürettiği kod
telemetriye yaz ["Merhaba Probot"] Bir satır metin yazar. probot::println("Merhaba Probot");
telemetriye değer yaz - etiket hız değer [x] Bir sayıyı etiketiyle yazar, ör. "hız: 0.42". probot::printf("hız: %.2f\n", (double)(0));
telemetriyi temizle Paneli temizler. Döngünün başında kullanılır. probot::clearTelemetry();

Zaman

Blok Ne yapar Ürettiği kod
geçen süre (ms) Robot açıldığından beri geçen milisaniye. Otonomda beklemeyi bununla ölç. millis()
bekle [20] ms Programı verilen süre kadar durdurur. Döngüde 2000 ms'yi geçme. delay(20);

Pinler

Blok Ne yapar Ürettiği kod
pin 2 modu ÇIKIŞ ▾ Pini çıkış, giriş ya da pull-up'lı giriş yapar. robotInit içine konur. pinMode(2, OUTPUT);
dijital pin 2 → HIGH (açık) ▾ Pini açık ya da kapalı yapar. digitalWrite(2, HIGH);
dijital pin 2 oku Pin açıksa doğru verir. Pull-up girişte basılı buton kapalı okunur. (digitalRead(2) == HIGH)
PWM pin 16 değer [128] (0-255) Pine 0-255 arası PWM yazar. analogWrite(16, (int)(128));
analog pin 1 oku Analog değeri okur (0-4095). analogRead(1)
Serial yaz (satır) ["debug"] USB seri porta satır yazar. Bilgisayara bağlıyken hata ayıklamak için. Serial.println("debug");
Serial yaz [ ] USB seri porta satır sonu eklemeden yazar. Serial.print("");

Robot

Blok Ne yapar Ürettiği kod
robot: pil gerilimi (V) ▾ Robotun durumundan bir sayı: pil gerilimi (V), bağlı istemci sayısı, otonom süresi (sn). probot::robot::state().read().batteryVoltage
robot otonomda ▾ mı? Robotun durumunu sorar: otonomda mı, teleopta mı, deadline kaçırdı mı (ileri seviye). (probot::robot::state().read().phase == probot::robot::Phase::AUTONOMOUS)

Kontrol

Blok Ne yapar Ürettiği kod
eğer ... yap Koşul doğruysa içindeki blokları çalıştırır. Kol eklemek için dişli simgesine bas, açılan küçük düzenleme alanında değilse eğer ya da değilse parçasını eğer parçasının altına sürükle: Eğer bloğuna değilse kolu ekle. if (false) {
[5] kez tekrarla İçindeki blokları verilen sayı kadar çalıştırır. for (int i = 0; i < 5; i++) {
tekrar ederken / kadar tekrarla Koşul doğru olduğu sürece ya da doğru olana kadar tekrarlar. while (false) { / while (!false) {
döngüden çık / döngünün sonraki adımından devam et Döngüyü bitirir ya da sonraki tura geçer. break; / continue;
ile sayılır i ▾ ... Değişkeni bir sayıdan diğerine adım adım sayarak tekrarlar. for (i = 0; i <= 10; i++) {

Döngü bloklarını autonomousLoop ya da teleopLoop içinde uzun süre çalıştırma. Bu bloklar zaten saniyede yaklaşık 50 kez tekrarlanır.

Mantık

Blok Ne yapar Ürettiği kod
[ ] = [ ] İki değeri karşılaştırır: =, ≠, <, ≤, >, ≥. 0 == 0
[ ] ve [ ] İki koşulu birleştirir: ve, veya. false && false
true / false Doğru ya da yanlış değeri. true
[ ] değil Koşulun tersini verir. !true
deneme / if true / if false Koşula göre iki değerden birini verir. Etiket yarı İngilizcedir. Örnek kodda yuvalara true, 1 ve 0 takılıdır. true ? 1 : 0

Matematik

Blok Ne yapar Ürettiği kod
0 Sayı. 0
[1] + [1] Dört işlem ve üs alma: +, -, x, ÷, üst alma. 1 + 1
kare kök [ ] Tek sayılı işlem: kare kök, kesin (mutlak değer), -, ln, log10, e^, 10^. sqrt(0)
Sinüs [ ] Trigonometri, açı derece cinsinden. sin((double)(0) * DEG_TO_RAD)
yuvarla [ ] Yuvarlar: yuvarla, yukarı yuvarla, aşağı yuvarla. round(0)
[ ] ÷ [ ] geri kalan kısım Bölmeden kalanı verir. fmod((double)(0), (double)(1))
[ ] en düşük [ ] en yüksek [ ] ile sınırla Değeri iki sınır arasında tutar. constrain((double)(0), (double)(0), (double)(0))
[ ] çift ▾ Sayının özelliğini sorar: çift, tek, asal, bütün, pozitif, negatif, bölünebilir. (fmod((double)(0), 2) == 0)

Metin

Blok Ne yapar Ürettiği kod
[" "] Metin. ""
ile metin oluştur Birden çok parçayı tek metinde birleştirir. Örnek kodda "hız " metni ve hiz değişkeni takılıdır. "hız " + String(hiz)
[ ] uzunluğu Metnin karakter sayısını verir. (int)String("").length()

ile metin oluştur bloğuna parça eklemek için dişli simgesine bas. Açılan küçük düzenleme alanında öge parçasını katıl parçasının içine sürükle; çıkarmak için dışarı sürükle. Bkz. Eğer bloğuna değilse kolu ekle.

Değişkenler

Blok Ne yapar Ürettiği kod
Değişken oluştur... Yeni değişken adı sorar. Kod üretmez.
ad ▾ [ ] ayarla Değişkene değer verir. ad = 0;
ad ▾ [1] göre değiştir Değişkenin değerini verilen miktar kadar artırır. ad += 1;
ad ▾ Değişkenin değerini verir. ad

Bir değişkeni kullanan blok varsa kodun "// --- Tanımlar (bloklardan) ---" bölümüne double ad = 0; // Blockly değişkeni satırı eklenir.

Ayrıntı: Değişken oluştur ve kullan.

Bu sayfada
Yaşam döngüsü bloklarıKumandaMotor & SürüşServoTelemetriZamanPinlerRobotKontrolMantıkMatematikMetinDeğişkenler