semaver
New member
Bazı çıktılara birçok LED bağlantısı
Şimdiye kadar, son bölümde bir Arduino'nun arabası ile karşılaşmadan önce hızlı süreçte elektronik devrelerin tabanlarını bildik. Bu ve aşağıdaki blog yayınları devreleri ve bunların optimizasyonunu göstermektedir. Bu yazı 74HC595 Shifregister ve kapıları kurtarmak için ustaca kullanılabilir.
İlk bakışta, gerçek/Arduino Uno çok sayıda dijital ve analog kapıya sahiptir. Bu nedenle mevcut kapı sayısını fazla tahmin etmek açıktır. Bunu önemsiz bir devre kullanmayı göstermek istiyorum.
Görev
Etkinlik, Arduino'ya sekiz LED'i bağlamak ve bunları kontrol etmektir.
Çözüm
Bunu yapmak için sekiz LED'i kontrol eden sekiz Arduino dijital kapı kullanıyoruz. LED'ler bir çatı masasında (breadboard) bulunur, bu nedenle her LED (daha kısa bacak) 220 ohm (veya 330 ohm) dirençle Dünya'ya bağlanır. LED'lerin maksimum 25 gücü tolere ettiğini hatırlayın, ancak bu yüzden elektriği sınırlamak için direnci kullanmalıyız.
Arduino'nun dijital çıkışlarını LED telleri (daha uzun bacaklar) ile bağlarız. Bir sonraki resimde gösterilen her şeyi bulabilirsiniz.

Birkaç LED doğrudan Arduino'ya bağlanır
Göz kırpma programı temelinde oluşturulan ve diğer LED'lerin kontrolü için genişletilebilen ilgili bir Arduino programı aşağıdaki gibidir:
const int LED1 = 8; // LED1 liegt am digitalen Port 8,
// LED2 an 9 ...
const int LED2 = 9;
void setup() {
pinMode(LED1, OUTPUT); // Der Port von LED1 bzw. LED 2 ist ein Ausgang
pinMode(LED2, OUTPUT);
}
void loop() {
digitalWrite(LED1, HIGH); // LED1 an
digitalWrite(LED2, HIGH); // LED2 an
delay(1000); // eine Sekunde warten
digitalWrite(LED1, LOW); // LED1 aus
digitalWrite(LED2, LOW); // LED2 aus
delay(1000); // eine Sekunde warten und dann von vorn
}
sorun
Bununla birlikte, bu sadece Arduino'nun dijital kapıları sayısı yeterli olduğu sürece çalışır. Birçok LED'e bağlanırken, sınırlı sayıda dijital kapı bir sorun olduğunu kanıtlamaktadır. Mevcut kapılardan daha fazla LED varsa, bu sınırlama şovun bir engelleyicisidir.
Açıkçası, Birleşmiş Milletler sekmesinden çok daha fazla kapıya sahip bir mega arduino edinme fikrine sahip olabiliriz, ancak geliştirici bir noktada sınırlara ulaşıyor.
Alternatif Çözümler
Elektronik kaza kursunun üçüncü bölümünde zaten bilme fırsatımız olan bu soruna zarif bir çözüm var. Anahtar kelime: 74HC595. Bu, seri baytlarda teslim edebileceğimiz sözde bir shifregister, bu nedenle shifregister baytını biraz dizi olarak yorumluyor ve sekiz Q0, Q1, … Q7'de tek tek bitleri oluşturuyor. Örneğin 19 altıgenden 00010011'i izleyin. Her 0, karşılık gelen çıkışta, her biri yüksek bir sinyal (5V) olarak düşük bir sinyal (0 V) olarak oluşturulur. Ve bununla LED'leri açabilir ve kapatabiliriz (!!!)
74HC595'in pininin atanması
Shffregister 74HC595, pin'in aşağıdaki atamasına sahiptir:

İnşaat bloğunun en önemli üç pimi şunlardır:
- PIN 14: Veri – Shifregister'a veri baytını göndermek için
- Pim 12: Mandal – Çıkışlardan kaydedilen baytları harcamak için
- Pim 11: Saat – Aktiviteler için bir saat gibi
Devremizde, Arduino'nun dijital porta 8'ini Fermo'ya (yeşil iplik), saatli dijital bağlantı noktası 12'ye (mor tel), verileri olan Arduino 11 dijital bağlantı noktasını (sarı iplik) bağlarız

Bağış Kaydı ile Devre 74HC595
IC'lerin başı devrenin görüntüsünde sağa yönlendirilir. IC'nin sağ tarafı (yani 9 ila 16 pimi) bu nedenle doğrudan gösterilen arduino'nun önündedir. Sol taraf (1'den 8'e kadar pim) LED'lerin önünde bulunur. Sonuç olarak, sekiz LED'e doğru gitmek için sadece üç kapının kapısına ihtiyacımız var.
7 (Q7) ve 15 (q0) 'da Porta 1 (Q1)' deki Shifregister'ın başlangıç pimi, depolanan baytların bitlerini temsil eder. Bu çıkışlar LED voltajının (daha uzun bacaklar) kutuplarına bağlanır. LED'ler ve dirençler üst ekmek tahtasında gösterilen devrede bulunur. Ayrıca,:
- IC'nin pimi 16 (= vCC) heyecanla
- IC'nin (= mr) pim 10'u da heyecanla
- GND ile IC'nin (= OE) Pin 13
- GND ile IC'nin (= GND) pim 8
- Redboard kırmızı ve yatay çizgiyi Arduino'nun 5V çıkışına bağlıyoruz.
- Breadboard'un mavi ve yatay çizgisini GND'ye bağlarız
Dalgalanmaları önlemek için IC'leri (pim 12) 1 yF seramik kapasitöre mavi terminale bağlarız. Aşağıdaki program (Arduino Sketch) devreyi test etmek için uygundur:
int pinLatch = 8; // verbunden mit ST_CP => latch
int pinClock = 12; // verbunden mit SH_CP => clock
int pinData = 11; // verbunden mit DS => data
void setup() {
pinMode(pinLatch, OUTPUT); // Alle Arduino-Pina dienen zur digitalen Ausgabe
pinMode(pinClock, OUTPUT);
pinMode(pinData, OUTPUT);
}
void loop() {
for (int byteVal = 0; byteVal < 256; byteVal++) {
// latch pin ST_CP auf low => Zahl wird noch nicht am Ausgang angelegt
digitalWrite(pinLatch, LOW);
// nun speichern wir die Zahl byteVal im Datenregister:
shiftOut(pinData, pinClock, MSBFIRST, byteVal);
// latch pin auf High => 74HC595 Ports Q0,..,Q7 geben die Bits aus
digitalWrite(pinLatch, HIGH);
// Kleine Verschnaufpause für uns als Beobachter
delay(200);
}
}
Shffregister. Seri
Açıkçası, şimdi 5 kapı tasarruf ettiğimiz söylenebilir, ancak LED sayısı hala sınırlıdır. Bu, bir yandan, başka bir Shif kaydının 74HC595 PIN 9 ile bağlanabileceği kontrastlanmalıdır. Öte yandan, 74HC165 gibi 16 bitli Shif kayıtları vardır. Bu kurucu öğeler de serilere aktarılabilir. Böylece birçok LED'i kontrol edebiliriz. Bununla birlikte, bu serinin sonraki bir bölümünde, daha da uygun bir varyant olan Adafruit'in neopiksellerini bileceksiniz.
Daha Fazla Bilgi
Daha fazla deney yapmak istiyorsanız, Carly Maw ve Tom Ige'nin mükemmel bir öğreticisine (Shift Öğreticileri) atıfta bulunuyorsunuz. Devrimi aldığımda, programı veya devreyi yenilemek zorunda kalmadan orada örnekleri kullanabilmem için bahsedilen öğreticiye dayanıyordum.
Son sözler
Mikrodenetleyicilere dayanan IoT cihazlarının fiziksel kısıtlamaları vardır. Bu yazıda bu kısıtlamayı biliyorduk. Sonraki yazılarda, kısıtlamaları nasıl yönetebileceğimize ve sensörleri ve aktörleri bağlamak için hangi seçeneklerin olduğuna dair başka örneklere gidiyorum. Ayrıca PC'den Arduino'ya seri iletişim için adım adım hissediyoruz.
()