Gelişmiş Giriş ve Çıkışlar
tone()
Bir pin üzerinde belirtilen frekanstaki (ve% 50 görev döngüsü) bir kare dalga oluşturur.Bir süre belirtilebilir, aksi takdirde dalga noTone()
çağrısına kadar devam eder.Zil sesleri çalmak için pim bir piezo ziline veya başka bir hoparlöre bağlanabilir.
Bir seferde yalnızca bir ton üretilebilir. Farklı bir pinde halen çalan bir ses varsa, tone()
hiçbir etkiye sahip olmayacaktır.Ses aynı pinde oynuyorsa, arama frekansını ayarlar.tone()
işlevi, 3 ve 11 nolu pinlerde (Mega dışındaki anakartlarda) PWM çıkışını etkiler.
Kart | Min Frekans (Hz) | Max Frekans (hz) |
Uno, Mega, Leonardo ve diğer AVR Kartlar | 31 | 65535 |
Gemma | Uygulanmadı | Uygulanmadı |
Zero | 41 | 275000 |
Due | Uygulanmadı | Uygulanmadı |
NOT: birden fazla pin üzerinde farklı sahalar oynamak isterseniz, bir sonraki pin üzerindeki tone()
çağırmadan önce bir pim üzerinde noTone()
çağırmanız gerekir.
Syntax (Sözdizimi) ve Parametreler:
tone(pin, frekans)
tone(pin, frekans, süre)
Pin: Sesi üretmek için pin
Frekans: ton frekansı hertz cinsindendir – unsigned int
Süre: Tonun süresi (milisaniye) (isteğe bağlı) – unsigned long
notone()
tone()
ile tetiklenen bir kare dalga üretimini durdurur. Hiçbir ton üretilmezse hiçbir etkisi olmaz.
NOT: birden fazla pin üzerinde farklı seslerle oynamak isterseniz, bir sonraki pin üzerindeki tone()
çağırmadan önce bir pim üzerinde noTone()
çağırmanız gerekir.
Syntax (Sözdizimi) ve Parametreler:
noTone(pin)
seçilen pindeki sesi durdurur.
Örnekler:
- Tone Keyboard: Kuvvet sensörleri ve bir piezo hoparlör kullanarak üç tuşlu bir müzik klavyesi.
- Tone Melody: Piezo hoparlörlü ile bir melodi çalın.
- Tone Multiple: tone() komutunu kullanarak art arda birden fazla hoparlörde sesleri çalın.
- Tone Pitch Follower: Bir analog girişe bağlı bir LDR yi hoparlör üzerinde deneyin.
shiftOut()
Bir seferde bir bayt veri kaydırır. En çok (en soldaki) veya en az (en sağdaki) önemli bitten başlar. Her bit bir veri pinine yazılır ve bundan sonra bir saat pini bitli olduğunu belirtmek için (yüksek, daha sonra alçak alınır) darbeli olarak gönderilir.
Not: yükselen kenarlarla hızlandırılan bir cihazla etkileşimde bulunuyorsanız, shiftOut()
çağrısı yapmadan önce saat pinin düşük olduğundan emin olmanız gerekir; ör. digitalWrite(clockPin, LOW).
Syntax (Sözdizimi) ve Parametreler:
shiftOut(veriPin, saatPin, bitDüzeni, değer)
veriPin: her biti (int) çıkış pini.
saatPin: veri doğru değere ayarlandığında geçiş yapmak için pin (int)
bitDüzeni: bitleri kaydırmak için hangi sıra; MSBFIRST veya LSBFIRST.
(En Önemli Bit Önce, veya En Önemli Bit Önce)
değer: kaydırılacak veriler. (bayt)
Not: veriPin ve saatPin, pinMode()
çağrısı ile çıkış olarak yapılandırılmış olmalıdır.
ShiftOut şu anda çıkışa 1 bayt (8 bit) yazılır, bu nedenle 255‘den büyük değerleri çıkartmak için iki adımlı bir işlem gerekir.
int data = 500; shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // yüksek baytı kaydır. shiftOut(dataPin, clock, MSBFIRST, data); // düşük baytı kaydır. data = 500; shiftOut(dataPin, clock, LSBFIRST, data); // düşük baytı kaydır. shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); // yüksek baytı kaydır.
shiftIn()
Her seferinde bir bit veri kaydırır. En çok (en soldaki) veya en az (en sağdaki) önemli bitten başlar. Her bit için saat pini yüksek, sonraki bit veri satırından okunur ve saat pini alçak alınır.
Yükselen kenarlarla hızlandırılan bir cihazla etkileşimde bulunuyorsanız,shiftIn()
için ilk çağrı öncesinde saat iğnesinin düşük olduğundan emin olmanız gerekir; ör. digitalWrite(clockPin, LOW).
Syntax (Sözdizimi) ve Parametreler:
gelen Bayt = shiftIn(veriPin, saatPin, bitDüzeni, değer)
veriPin: her biti (int) çıkış pini.
saatPin: veri doğru değere ayarlandığında geçiş yapmak için pin (int)
bitDüzeni: bitleri kaydırmak için hangi sıra; MSBFIRST veya LSBFIRST.
(En Önemli Bit Önce, veya En Önemli Bit Önce)
değer: kaydırılacak veriler. (bayt)
pulseIn()
Bir pin üzerinde bir darbe (HIGH veya LOW) okur.
Örneğin, değer HIGH ise, pulseIn()
, Örneğin, değer HIGH pulseIn()
, HIGH gitmek için pin bekler zamanlama başlar sonra pin LOW gitmek ve zamanlama durmasını bekler.
Darbenin uzunluğunu mikrosaniye cinsinden döndürür veya zaman aşımı süresince tam darbe alınıyorsa 0 döndürür. Bu fonksiyonun zamanlaması ampirik olarak belirlenmiştir ve muhtemelen kısa palslarda hatalar gösterecektir. 10 mikrosaniyeden 3 dakikalık darbelerde çalışır.
İşlev çağrıldığında pin zaten yüksekse, sayım başlamadan öncepin LOW ve sonra HIGH olmasını bekleyeceğini lütfen unutmayın. Bu rutin yalnızca, kesmeler etkinleştirildiğinde kullanılabilir. Ayrıca en yüksek çözünürlük kısa aralıklarla elde edilir.
Syntax (Sözdizimi) ve Parametreler:
pulseIn(pin, değer)
pulseIn(pin, değer, zamanAşımı)
pin: nabzı okumak istediğiniz pinin numarası. (int)
değer: okunacak darbe tipi: HIGH veya LOW. (int)
Zaman aşımı (isteğe bağlı): darbenin tamamlanması için beklenecek mikro saniye sayısı:(zaman aşımı süresi içinde tam darbe alınmazsa, işlev 0 değerini döndürür. Varsayılan değer bir saniye (unsigned long).
int pin = 7; //pin değişkeni 7 olarak atandı. unsigned long sure; //süre değişkeni atandı. void setup() { pinMode(pin, INPUT); //pin değişkeni çıkış oldu. } void loop() { sure = pulseIn(pin, HIGH); //sure degiskeni 7. pinden gelen HIGH darpe tipinde atandı. }
NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.
Elinize sağlık, teşekkürler.