Digital Inputs - Software

Not

Bu bölüm yazılımdaki dijital girişleri kapsar. Dijital girişlere yönelik bir donanım kılavuzu için bkz Dijital Girişler - Donanım.

RoboRIO’nun FPGA’sı 26’ya kadar dijital girişi destekler. Bunlardan 10 tanesi RIO üzerindeki yerleşik DIO portları aracılığıyla sağlanırken, diğer 16 tanesi MXP breakout portu üzerinden kullanılabilir.

Dijital girişler iki durumdan birini okur - “high” veya “low.” Varsayılan olarak, RIO üzerindeki yerleşik bağlantı noktaları, dahili kaldırma dirençleri nedeniyle “high” olarak okuyacaktır (daha fazla bilgi için bkz:ref:docs/hardware/sensors/digital-inputs-hardware:Digital Inputs - Hardware ). Buna göre, dijital girişler en yaygın olarak bir tür anahtarlarla kullanılır. Bu kullanım için destek, kod DigitalInput class (Java, C++) aracılığıyla sağlanır.

The DigitalInput sınıfı

A: code:DigitalInput aşağıdaki gibi başlatılabilir:

// Initializes a DigitalInput on DIO 0
DigitalInput input = new DigitalInput(0);

DigitalInput değerinin okunması

DigitalInput durumu:code:get yöntemiyle sorgulanabilir:

// Gets the value of the digital input.  Returns true if the circuit is open.
input.get();

Analog Girişten Dijital Giriş Oluşturma

Not

Bir bağlantı noktası numarası bağımsız değişkeni ile oluşturulan bir AnalogTrigger, bu analog bağlantı noktasını ayrı bir AnalogInput ile paylaşabilir, ancak iki AnalogInput nesnesi aynı bağlantı noktasını paylaşmayabilir.

Bazen bir analog girişin dijital giriş olarak kullanılması arzu edilir. Bu, AnalogTrigger class (Java, C++). kullanılarak kolayca elde edilebilir.

Bir: kod:AnalogTrigger aşağıdaki gibi başlatılabilir. AnalogPotentiometer ile olduğu gibi, kullanıcı örnekleme ayarlarını özelleştirmek isterse, bir AnalogInput açıkça geçirilebilir:

// Initializes an AnalogTrigger on port 0
AnalogTrigger trigger0 = new AnalogTrigger(0);

// Initializes an AnalogInput on port 1 and enables 2-bit oversampling
AnalogInput input = new AnalogInput(1);
input.setAverageBits(2);

// Initializes an AnalogTrigger using the above input
AnalogTrigger trigger1 = new AnalogTrigger(input);

Tetikleme noktalarının ayarlanması

Not

“raw-ham” AnalogInput değerlerinin ölçeklendirilmesiyle ilgili ayrıntılar için, bakınız Analog Inputs - Yazılım.

Analog sinyali dijitale dönüştürmek için, tetikleyicinin hangi değerlerde etkinleştirip devre dışı bırakacağını belirtmek gerekir. Geçiş noktası çevresinde “dithering-titremeyi” önlemek için bu değerler farklı olabilir:

// Sets the trigger to enable at a raw value of 3500, and disable at a value of 1000
trigger.setLimitsRaw(1000, 3500);

// Sets the trigger to enable at a voltage of 4 volts, and disable at a value of 1.5 volts
trigger.setLimitsVoltage(1.5, 4);

DigitalInputs’u kodda kullanma

Robot üzerindeki hemen hemen tüm anahtarlar a: code: DigitalInput aracılığıyla kullanılacağından, bu sınıf etkili robot kontrolü için son derece önemlidir.

Bir mekanizmanın hareketini sınırlamak

FRC® içindeki neredeyse tüm motorlu mekanizmalar (kollar ve kaldırıcılar gibi) hareket aralıklarının sonunda kendilerine zarar vermelerini önlemek için bir tür “limit switch-limit anahtarı” verilmelidir. Aşağıda kısa bir örnek verilmiştir:

Spark spark = new Spark(0);

// Limit switch on DIO 2
DigitalInput limit = new DigitalInput(2);

public void autonomousPeriodic() {
    // Runs the motor forwards at half speed, unless the limit is pressed
    if(!limit.get()) {
        spark.set(.5);
    } else {
        spark.set(0);
    }
}

Bir mekanizmaya yön verme

Limit anahtarları, bir kodlayıcıya sahip bir mekanizmayı “barındırabilmek” için çok önemlidir. Bunun bir örneği için, bakınız Bir mekanizmaya yön verme.