Arduino harici cihazları kontrol etmek için programlayabileceğiniz bir mikrodenetleyici kartıdır. Sensörler, motorlar, LED'ler, hoparlörler ... ve hatta İnternet aracılığıyla dış dünyayla etkileşime girerek, onu çeşitli projeler için esnek bir platform haline getirir. Oldukça az sayıda mikro denetleyici var, ancak Arduino, çeşitli projelerin çok aktif bir şekilde düzenlendiği ve internette tartışıldığı için popüler. Google'da veya youtube'da arama yaparsanız, Arduino'yu kendiniz keşfetmeye başlamak için milyonlarca fikir ve bilgi bulacaksınız.
Mikrodenetleyicileri programlama deneyiminiz olmasa bile - Arduino ile hızlı bir şekilde öğrenecek ve hakkında bir şeyler öğreneceksiniz. elektronik deneyler kullanarak.
Başlamak için neye ihtiyacınız var?
Arduino Uno- 1 adet
USB Kablosu-1 Adet
Süveter 1pc
1 adet geliştirme kurulu
Kırmızı LED 4 adet
220 ohm direnç 4 adet
Direnç 10 oda 1 adet
Sabitlemeden düğme
potansiyometre
Ortak katotlu RGB LED
Bütün bunlar yerel bir radyo mağazasından satın alınabilir veya internetten sipariş edilebilir.
Elektrik devrelerini göstermek ve simüle etmek için çevrimiçi bir simülatör kullanıldı.
Bu simülatör en iyi Chrome tarayıcısında çalışır.
Arduino'ya daha yakından bakalım.
Arduino, harici devrelerin bağlanabileceği büyük bir bilgisayar değildir. Arduino Uno, Atmega 328P'yi kullanıyor
Bu tahtadaki en büyük yonga. Bu yonga, belleğinde saklanan programları yürütür. Arduino IDE'yi kullanarak programı usb ile indirebilirsiniz. Usb bağlantı noktası da arduino'ya güç sağlar.
Ayrı bir güç konektörü vardır. Kartta, çeşitli cihazlara güç sağlamak için gerekli olan 5v ve 3.3v etiketli iki çıkış vardır. Ayrıca GND olarak işaretlenmiş pinleri bulacaksınız, bunlar topraklama kablolarıdır (toprak 0V'dur). Arduino platformunda ayrıca harici düğümlere bağlı ve yüksek veya düşük (açık veya kapalı) olmak üzere iki durumu olan 14 ila 13 arası sayılarla işaretlenmiş 14 dijital çıkış (pin) vardır. Bu kontaklar çıkış veya giriş olarak çalışabilir, yani. bazı verileri iletebilir ve harici cihazları kontrol edebilir veya cihazlardan veri alabilirler. Aşağıdaki sonuç sonuçları A0-A5 olarak belirlenmiştir. Bunlar çeşitli sensörlerden veri alabilen analog girişlerdir. Bu, sıcaklık gibi bir aralığı ölçmeniz gerektiğinde özellikle kullanışlıdır. Analog girişlerin ayrı olarak etkinleştirilebilen ek işlevleri vardır.
Breadboard nasıl kullanılır.
Her şeyi birlikte lehimlemeden önce, parçaları geçici olarak bağlamak, cihazın nasıl çalıştığını kontrol etmek için bir breadboard gereklidir.
Aşağıdaki örneklerin tümü bir devre tahtasında toplanmıştır, böylece devirde hızlı bir şekilde değişiklik yapabilir ve parçaları lehimlemeyle uğraşmadan yeniden kullanabilirsiniz.
Breadboard, parça ve tel yerleştirebileceğiniz delik sıralarına sahiptir. Bu deliklerin bazıları elektriksel olarak birbirine bağlıdır.
İki üst ve alt sıra tüm tahta boyunca seri olarak bağlanır. Bu sıralar devreye güç vermek için kullanılır. 5v veya 3.3v olabilir, ancak her durumda, yapmanız gereken ilk şey, şekilde gösterildiği gibi 5v ve GND'yi breadboard'a bağlamaktır. Bazen bu sıra bağlantıları tahtanın ortasında kesilebilir, daha sonra gerekirse, şekilde gösterildiği gibi bağlayabilirsiniz.
Tahtanın ortasında bulunan kalan delikler beş deliğe ayrılmıştır. Devre parçalarını bağlamak için kullanılırlar.
Mikrodenetleyicimize ilk bağladığımız şey LED. Elektrik bağlantı şeması resimde gösterilmiştir.
Neden devrede bir dirence ihtiyacım var? Bu durumda, LED'den geçen akımı sınırlar. Her LED belirli bir akım için tasarlanmıştır ve eğer bu akım daha büyükse, LED arızalanır. Ohm yasasını kullanarak direncin hangi değeri kullanması gerektiğini öğrenin. Bilmeyen veya unutmayanlar için Ohm yasası, akımın voltaja doğrusal bir bağımlılığı olduğunu söyler. Yani, dirence ne kadar çok voltaj uygularsak, o kadar fazla akım akacaktır.
V = I * R
nerede V-direnç boyunca gerilim
ben- direnç üzerinden akım
R,- direnç bulunacaktır.
İlk olarak, direnç üzerindeki voltajı bulmamız gerekir. Kullanacağınız 3mm veya 5mm LED'lerin çoğunda 3V çalışma voltajı bulunur. Yani, dirençte 5-3 = 2v ödemek zorundayız.
Daha sonra dirençten geçen akımı hesaplıyoruz.
Çoğu 3 ve 5mm LED, 20mA akımda tam parlaklıkta yanar. Bundan daha yüksek bir akım onları devre dışı bırakabilir ve daha düşük bir güç akımı, herhangi bir zarar vermeden parlaklıklarını azaltacaktır.
Bu nedenle, 5v devresindeki LED'i açmak istiyoruz, böylece 20mA'lık bir akım var. Tüm parçalar bir devreye dahil olduğundan, direnç de 20 mA akıma sahip olacaktır.
Biz olsun
2V = 20 mA * R
2V = 0,02A * R
R = 100 ohm
100 Ohm minimum dirençtir, biraz daha kullanmak daha iyidir, çünkü LED'lerin karakteristiklerinde bazı farklılıklar vardır.
Bu örnekte, 220 ohm'luk bir direnç kullanılmıştır. Yazarın birçoğu olduğu için: wink :.
Uzun terminali direncin terminallerinden birine bağlanacak şekilde LED'i kartın ortasındaki deliklere yerleştirin. Direncin ikinci ucunu 5V'ye ve LED'in ikinci çıkışını GND'ye bağlayın. LED yanmalıdır.
LED'in nasıl bağlanacağı konusunda bir fark olduğunu lütfen unutmayın. Akım daha uzun bir terminalden daha kısa bir terminale akar. Diyagramda, akımın üçgenin yönlendirildiği yönde aktığı düşünülebilir. LED'i çevirmeyi deneyin ve yanmayacağını göreceksiniz.
Ancak direnci nasıl bağlarsınız, hiçbir fark yoktur. Ters çevirebilir veya LED'in diğer çıkışına bağlamayı deneyebilirsiniz, bu devrenin çalışmasını etkilemez. LED ile akımı sınırlamaya devam edecektir.
Bir Arduino Sketch Anatomisi.
Arduino programlarına taslak denir. İki ana işlevden oluşurlar. fonksiyon kurulum ve işlev döngü
bu fonksiyonun içinde tüm temel ayarları yapacaksınız. Değişkenleri başlatan kütüphaneleri hangi girdi veya çıktı üzerinde çalışacak. fonksiyon Kurulum () Çizim başladığında, program başladığında sadece bir kez başlar.
bu, daha sonra yürütülen ana işlevdir. kurulum (). Aslında, bu programın kendisidir. Bu işlev siz gücü kapatana kadar süresiz olarak çalışır.
Arduino yanıp sönen LED
Bu örnekte, LED'li bir devreyi Arduino dijital pinlerinden birine bağlayacağız ve programı kullanarak açıp kapatacağız ve ayrıca birkaç yararlı işlev de öğreneceksiniz.
- bu işlev, kurulum () programın bazı bölümlerini oluşturur ve girdi olarak kullanacağınız sonuçları başlatmaya yarar (GİRİŞ) veya çıkış (ÇIKIŞ). Buna göre ayarlayana kadar pimden veri okuyamaz veya yazamazsınız. pinMode. Bu işlevin iki bağımsız değişkeni vardır: pinNumber- Bu, kullanacağınız pin numarasıdır.
kip- pimin nasıl çalışacağını ayarlar. Girişte (GİRİŞ) veya çıkış (ÇIKIŞ). LED'i yakmak için bir sinyal vermeliyiz DAN Arduino. Bunu yapmak için, pimi çıkmak için yapılandırıyoruz.
- bu işlev durumu ayarlamaya yarar (Eyalet) pim (PinNumber). İki ana durum vardır (genel olarak 3 vardır), biri YÜKSEK, pin 5v olacak, başka bir düşük ve pim 0v olacaktır. Bu nedenle, LED'i yakmak için LED'e bağlı pim üzerinde yüksek bir seviye ayarlamamız gerekiyor YÜKSEK.
- gecikme. Programı ms cinsinden belirtilen bir süre geciktirir.
LED'in yanıp sönmesine neden olan kod aşağıdadır.
// LED Yanıp Sönüyor
int ledPin = 7; // LED'in bağlı olduğu Arduino pimi
void setup () {
pinMode (ledPin, OUTPUT); // pimi EXIT olarak ayarlayın
}
void loop () {
digitalWrite (ledPin, HIGH); // LED'i yakar
gecikme (1000); // gecikme 1000 ms (1 sn)
digitalWrite (ledPin, LOW); // LED'i kapatın
gecikme (1000); // 1 saniye bekleyin
}
Kod hakkında biraz açıklama.
"//" ile başlayan satırlar, Arduino tarafından dikkate alınmayan yorumlardır.
Tüm komutlar noktalı virgülle biter; unutursanız bir hata mesajı alırsınız.
ledPinbir değişkendir. Değişkenler programlarda değerleri depolamak için kullanılır. Bu örnekte, değişken ledPin 7 değeri atanırsa, bu Arduino'nun pin numarasıdır. Programdaki Arduino değişkenli bir dizeyle karşılaştığında ledPin , daha önce belirttiğimiz değeri kullanır.
Yani kayıt pinMode (ledPin, OUTPUT) kayda benzer pinMode (7, ÇIKIŞ).
Ancak ilk durumda, değişkeni değiştirmeniz yeterlidir ve kullanıldığı her satırda değişecektir ve ikinci durumda değişkeni değiştirmek için her komuttaki kalemlerde değişiklik yapmanız gerekir.
ilk satırda değişkenin türü belirtilir. Arduino'yu programlarken, her zaman değişken türlerini bildirmek önemlidir. Şimdilik bunu bilmeniz yeterli INT negatif ve pozitif sayıları açıklar.
Aşağıda sunulmuştur modelleme eskiz. Devrenin çalışmasını görmek için başlat tuşuna basın.
Beklendiği gibi, LED bir saniye sonra söner ve yanar. Nasıl çalıştığını görmek için gecikmeyi değiştirmeyi deneyin.
Birkaç LED yönetimi.
Bu örnekte, birden fazla LED'in nasıl kontrol edileceğini öğreneceksiniz. Bunu yapmak için, panoya 3 LED daha takın ve aşağıda gösterildiği gibi Arduino dirençlerine ve pimlerine bağlayın.
LED'leri sırayla açmak ve kapatmak için, böyle bir program yazmanız gerekir:
// Çoklu LED Yanıp Sönüyor
int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;
void setup () {
// pinleri EXIT olarak ayarla
pinMode (led1Pin, OUTPUT);
pinMode (led2Pin, OUTPUT);
pinMode (led3Pin, OUTPUT);
pinMode (led4Pin, OUTPUT);
}
void loop () {
digitalWrite (led1Pin, HIGH); // LED'i yakar
gecikme (1000); // gecikme 1 sn
digitalWrite (led1Pin, LOW); // LED'i söndür
gecikme (1000); // gecikme 1 sn
// diğer 3 LED için de aynısını yapın
digitalWrite (led2Pin, HIGH); // LED'i yakar
gecikme (1000); // gecikme 1 sn
digitalWrite (led2Pin, LOW); // LED'i söndür
gecikme (1000); // gecikme 1 sn
digitalWrite (led3Pin, HIGH); // LED'i yakar
gecikme (1000); // gecikme 1 sn
digitalWrite (led3Pin, LOW); // LED'i söndür
gecikme (1000); // gecikme 1 sn
digitalWrite (led4Pin, HIGH); // LED'i yakar
gecikme (1000); // gecikme 1 sn
digitalWrite (led4Pin, LOW); // LED'i söndür
gecikme (1000); // gecikme 1 sn
}
Bu program iyi çalışacaktır, ancak bu en rasyonel çözüm değildir. Kodun değiştirilmesi gerekiyor. Programın tekrar tekrar çalışması için, adlı yapıyı kullanacağız.
Aynı işlemi birkaç kez tekrarlamanız gerektiğinde döngüler uygundur. Yukarıdaki kodda, satırları tekrarlıyoruz
digitalWrite (led4Pin, YÜKSEK);
gecikme (1000);
digitalWrite (led4Pin, DÜŞÜK);
gecikme (1000);
ekteki tam çizim kodu
LED parlaklık ayarı
Bazen programdaki LED'lerin parlaklığını değiştirmeniz gerekebilir. Bu komut kullanılarak yapılabilir analogWrite (). Bu komut LED'i o kadar hızlı açar ve kapatır ki göz bu titremeyi görmez. LED yarı yarıya açıksa, parlaklığının yarısında yandığı görsel olarak görünecektir. Buna darbe genişlik modülasyonu denir (İngilizce PWM veya PWM). PWM oldukça sık kullanılır, çünkü “analog” bileşeni dijital kod kullanarak kontrol etmek için kullanılabilir. Tüm Arduino pinleri bu amaçlar için uygun değildir. Sadece bu tür bir atamanın çizildiği sonuçlar "~".3,5,6,9,10,11 pinlerinin yanında göreceksiniz.
LED'lerinizden birini PWM çıkışlarından birine bağlayın (yazar için bu pin 9'dur). Şimdi taslak yanıp sönen LED'i çalıştırın, ancak önce komutu değiştirin digitalWrite () üzerinde analogWrite (). analogWrite () İki argümanı vardır: birincisi pin numarasıdır ve ikincisi LED'lere uygulandığı gibi PWM değeri (0-255), bu onların parlaklığı ve elektrik motorları için dönüş hızı olacaktır. Aşağıda farklı LED parlaklığı için bir örnek kod verilmiştir.
// LED'in parlaklığını değiştirin
int ledPin = 9; // Bu pime LED bağlı
void setup () {
pinMode (ledPin, OUTPUT); // çıkışa pimi başlat
}
void loop () {
analogWrite (ledPin, 255); // tam parlaklık (255/255 = 1)
gecikme (1000); // duraklatma 1 sn
digitalWrite (ledPin, LOW); // LED'i kapat
gecikme (1000); // duraklatma 1 sn
analogWrite (ledPin, 191); // 3/4'te parlaklık (191/255 ~ = 0.75)
gecikme (1000); // duraklatma 1 sn
digitalWrite (ledPin, LOW); // LED'i kapat
gecikme (1000); // duraklatma 1 sn
analogWrite (ledPin, 127); // yarım parlaklık (127/255 ~ = 0.5)
gecikme (1000); // duraklatma 1 sn
digitalWrite (ledPin, LOW); // LED'i kapat
gecikme (1000); // duraklatma 1 sn
analogWrite (ledPin, 63); // çeyrek parlaklık (63/255 ~ = 0.25)
gecikme (1000); // duraklatma 1 sn
digitalWrite (ledPin, LOW); // LED'i kapat
gecikme (1000); // duraklatma 1 sn
}
Komuttaki PWM değerini değiştirmeyi deneyin analogWrite ()parlaklığı nasıl etkilediğini görmek için.
Ardından, parlaklığı tamdan sıfıra nasıl düzgün bir şekilde ayarlayacağınızı öğreneceksiniz. Elbette, bir kod parçasını 255 kez kopyalayabilirsiniz
analogWrite (ledPin, parlaklık);
gecikme (5); // kısa gecikme
parlaklık = parlaklık + 1;
Ama anlıyorsunuz - pratik olmayacak. Bunu yapmak için, daha önce kullanılan FOR döngüsünü kullanmak en iyisidir.
Aşağıdaki örnek, parlaklığı 255'ten 0'a düşürmek için iki döngü kullanır.
için (int parlaklık = 0; parlaklık = 0; parlaklık -) {
analogWrite (ledPin, parlaklık);
gecikme (5);
}
gecikme (5) parlaklık artış ve düşüş hızını yavaşlatmak için kullanılır 5 * 256 = 1280 ms = 1.28 sn.)
İlk satırda "brightness-"böylece döngü değeri her tekrarlandığında parlaklık değeri 1 azalır. Döngünün, parlaklık> = 0İşareti değiştirme > tabelada >= parlaklık aralığına 0 ekledik. Bu çizim aşağıda modellenmiştir.
// parlaklığı sorunsuz bir şekilde değiştir
int ledPin = 9; // Bu pime LED bağlı
void setup () {
pinMode (ledPin, OUTPUT); // çıkmak için pimi başlatın
}
void loop () {
// parlaklığı kademeli olarak artırın (0 ila 255)
için (int parlaklık = 0; parlaklık = 0; parlaklık -) {
analogWrite (ledPin, parlaklık);
gecikme (5);
}
gecikme (1000); // 1 saniye bekleyin
// parlaklığı düzgün bir şekilde azaltın (255'ten 0'a)
için (int parlaklık = 255; parlaklık> = 0; parlaklık -) {
analogWrite (ledPin, parlaklık);
gecikme (5);
}
gecikme (1000); // 1 saniye bekleyin
}
}
Bu çok görünür değil, ama fikir açık.
RGB LED ve Arduino
RGB LED aslında bir gövdede farklı renklerde üç LED'dir.
Farklı parlaklığa sahip farklı LED'ler dahil olmak üzere, farklı renkleri birleştirebilir ve alabilirsiniz. Parlaklık derecelerinin 256 olduğu Arduino için 256 ^ 3 = 16581375 olası renk elde edersiniz. Gerçekte, elbette, bunlardan daha azı olacaktır.
Kullanacağımız LED ortak katottur. yani her üç LED de katotlarla bir terminale yapısal olarak bağlıdır. Bu pimi GND pimine bağlayacağız. Geri kalan terminaller, sınırlayıcı dirençler aracılığıyla PWM terminallerine bağlanmalıdır. Yazar 9-11 nolu sonuçları kullanmış, böylece her LED'i ayrı ayrı kontrol etmek mümkün olacaktır. İlk çizim her LED'in ayrı ayrı nasıl açılacağını gösterir.
// RGB LED - test
// pin bağlantıları
int kırmızı = 9;
int yeşil = 10;
int mavi = 11;
void setup () {
pinMode (kırmızı, ÇIKIŞ);
pinMode (mavi, ÇIKIŞ);
pinMode (yeşil, ÇIKIŞ);
}
void loop () {
// kırmızı LED'i açma / kapatma
digitalWrite (kırmızı, YÜKSEK);
gecikme (500);
digitalWrite (kırmızı, DÜŞÜK);
gecikme (500);
// yeşil LED'i açma / kapatma
digitalWrite (yeşil, YÜKSEK);
gecikme (500);
digitalWrite (yeşil, DÜŞÜK);
gecikme (500);
// mavi LED'i aç / kapat
digitalWrite (mavi, YÜKSEK);
gecikme (500);
digitalWrite (mavi, DÜŞÜK);
gecikme (500);
}
Aşağıdaki örnek komutları kullanır analogWrite () ve LED'ler için çeşitli rastgele parlaklık değerleri elde etmek. Farklı renklerin rastgele değiştiğini göreceksiniz.
// RGB LED - rastgele renkler
// pin bağlantıları
int kırmızı = 9;
int yeşil = 10;
int mavi = 11;
void setup () {
pinMode (kırmızı, ÇIKIŞ);
pinMode (mavi, ÇIKIŞ);
pinMode (yeşil, ÇIKIŞ);
}
void loop () {
// rastgele bir renk seç
analogWrite (kırmızı, rastgele (256));
analogWrite (mavi, rastgele (256));
analogWrite (yeşil, rastgele (256));
delay (1000); // bir saniye bekleyin
}
Rastgele (256)-0 ile 255 arasında rastgele bir sayı döndürür.
Ekli dosyada, renklerin kırmızıdan yeşile, sonra mavi, kırmızı, yeşil vb.'ye yumuşak geçişlerini gösteren bir çizim var.
Örnek bir çizim işe yarıyor, ancak çok sayıda yinelenen kod var. Bir rengi sorunsuz bir şekilde diğerine değiştirecek kendi yardımcı işlevinizi yazarak kodu basitleştirebilirsiniz.
İşte böyle görünecek:
Bir fonksiyonun tanımlarına parçalar halinde bakalım. İşlev çağrıldı ses geçişi ayar düğmesi ve iki argümanı vardır. Her bağımsız değişken bir virgülle ayrılır ve işlev tanımının ilk satırında bildirilen bir türe sahiptir: geçersiz fader (int renk1, int renk2). Her iki argümanın da intve onlara isimler verildi color1 ve color2 bir işlevi tanımlamak için koşullu değişkenler olarak. hükümsüz fonksiyonun herhangi bir değer döndürmediği anlamına gelir, sadece komutları yürütür. Çarpmanın sonucunu döndüren bir işlev yazmak gerekirse, şöyle görünecektir:
int çarpanı (int sayı1, int sayı2) {
int ürün = sayı1 * sayı2;
ürün iade;
}
Nasıl beyan ettiğimize dikkat edin Type int dönüş türü olarak
hükümsüz.
Fonksiyonun içinde, önceki çizimde daha önce kullandığınız komutlar var, sadece pin numaraları ile değiştirildi color1 ve color2. İşlev çağrıldı ses geçişi ayar düğmesi, argümanları şu şekilde hesaplanır: renk1 = kırmızı ve renk2 = yeşil. İşlevleri kullanarak tam kroki arşivleme
düğme
Bir sonraki çizimde, sabitlenmeden normalde açık kontaklara sahip bir düğme kullanılacaktır.
Bu, düğmeye basılmazken akımın içinden akmadığı ve bırakıldıktan sonra düğmenin orijinal konumuna geri döndüğü anlamına gelir.
Devrede, düğmeye ek olarak bir direnç kullanılır. Bu durumda akımı sınırlamaz, ancak düğmeyi 0v (GND) değerine "çeker". yani bağlı olduğu Arduino'nun piminde düğmeye basılana kadar seviye düşük olacaktır. 10 kΩ devrede kullanılan direnç.
// düğme tıklamasını tanımlar
int buttonPin = 7;
void setup () {
pinMode (buttonPin, INPUT); // giriş iğnesini başlat
Serial.begin (9600); // seri bağlantı noktasını başlat
}
void loop () {
if (digitalRead (buttonPin) == HIGH) {// düğmesine basılırsa
Serial.println ("basılı"); // "basılı" yazdır
} başka {
Serial.println ("baskısız"); // aksi halde "baskısız"
}
}
Bu taslakta birkaç yeni takım var.
-Bu komut kontrol ettiğimiz çıkışın Yüksek (yüksek seviye) ve düşük (düşük seviye) değerini alır. Önceden, kurulumda (), bu çıkış giriş için yapılandırılmış olmalıdır.
; // burada buttonPin, düğmenin bağlı olduğu pin numarasıdır.
Seri bağlantı noktası, denetleyicinin programı çalıştırırken bilgisayara Arduino mesajları göndermenizi sağlar. Bu, bir programda hata ayıklamak, diğer cihazlara veya uygulamalara mesaj göndermek için kullanışlıdır. Seri bağlantı noktası üzerinden veri aktarımını etkinleştirmek için (UART veya USART olarak da bilinir), bunu kurulumda başlatmalısınız ()
Serial.begin () Arduino ve bilgisayar arasındaki veri aktarım hızı sadece bir argüman var.
çizimde, Arduino IDE'de (Araçlar >> Seri Monitör) ekranda bir mesaj görüntülemek için bir komut kullanılır.
- tasarım, birçok kontrolü tek bir yerde birleştirerek programın ilerlemesini kontrol etmenizi sağlar.
DigitalRead (YÜKSEK) HIGH değerini döndürürse, monitörde "basılı" sözcüğü görüntülenir. Başka (aksi halde) "sıkılmış" sözcüğü ekranda görüntülenir. Artık bir düğmeye dokunarak LED'i açıp kapatmayı deneyebilirsiniz.
// LED çıkışlı tuşa basma algılama
int buttonPin = 7;
int ledPin = 8;
void setup () {
pinMode (buttonPin, INPUT); // bu sefer düğme pinini INPUT olarak ayarlayacağız
pinMode (ledPin, OUTPUT);
Serial.begin (9600);
}
void loop () {
if (digitalRead (buttonPin) == YÜKSEK) {
digitalWrite (ledPin, YÜKSEK);
Serial.println ("basılı");
} başka {
digitalWrite (ledPin, DÜŞÜK);
Serial.println ("sıkıştırılmamış");
}
}
Analog giriş.
analogRead Arduino analog pinlerinden birinden veri okumanıza izin verir ve 0 (0V) ile 1023 (5V) arasında bir değer görüntüler. Analog girişteki voltaj 2.5V ise, 2.5 / 5 * 1023 = 512 yazdırılacaktır
analogRead yalnızca bir bağımsız değişkeni vardır - Bu analog giriş numarasıdır (A0-A5). Aşağıdaki çizim, bir potansiyometreden voltaj okumak için bir kod sağlar. Bunu yapmak için, değişken bir direnç, aşırı pimleri 5V ve GND pimlerine ve orta pimi A0 girişine bağlayın.
Aşağıdaki kodu çalıştırın ve seri monitöre direnç düğmesinin dönüşüne bağlı olarak değerlerin nasıl değiştiğine bakın.
// analog giriş
int potPin = A0; // potansiyometrenin merkezi çıkışı bu pime bağlıdır
void setup () {
// analog pin varsayılan olarak giriş tarafından etkinleştirilir, bu nedenle başlatma gerekmez
Serial.begin (9600);
}
void loop () {
int potVal = analogRead (potPin); // potVal, 0 ile 1023 arasında bir sayıdır
Serial.println (potVal);
}
Bir sonraki çizim, bir düğme tıklaması çizimini ve bir LED parlaklık kontrolü çizimini birleştirir. LED düğmeden açılacak ve potansiyometre ışımanın parlaklığını kontrol edecektir.
// LED çıkışı ve değişken yoğunluklu düğme basma algılama
int buttonPin = 7;
int ledPin = 9;
int potPin = A0;
void setup () {
pinMode (buttonPin, INPUT);
pinMode (ledPin, OUTPUT);
Serial.begin (9600);
}
void loop () {
if (digitalRead (buttonPin) == HIGH) {// düğmeye basılırsa
int analogVal = analogRead (potPin);
int scaledVal = harita (analogVal, 0, 1023, 0, 255);
analogWrite (ledPin, scaledVal); // pot tarafından ayarlanan yoğunluk ile led'i açın
Serial.println ("basılı");
} başka {
digitalWrite (ledPin, LOW); // düğmeye basılmazsa kapat
Serial.println ("sıkıştırılmamış");
}
}