» elektronik » Arduino »Yeni başlayanlar için Arduino

Yeni başlayanlar için Arduino


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 for.zip [720 b] (indirmeler: 1410)

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. perehody.zip [373 b] (indirmeler: 386)
Ö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: funktsiya.zip [263 b] (indirmeler: 420)
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 funktsii.zip [392 b] (indirmeler: 320)

düğme

Bir sonraki çizimde, sabitlenmeden normalde açık kontaklara sahip bir düğme kullanılacaktır.

Yeni başlayanlar için Arduino

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ış");
  }
}
8.7
9
9

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın
4 yorumlar
Bu şekilde olması gerektiği gibi çalışır - // parlaklığı kademeli olarak artırın (0 ila 255)
için (int parlaklık = 0; parlaklık <= 255; parlaklık ++) {
analogWrite (ledPin, parlaklık);
gecikme (5);
derleme bir hata verir Arduino: 1.6.5 (Windows 7), "Arduino Nano, ATmega328" kartı

sketch_sep20a: 25: hata: '}' belirtecinden önce beklenen bildirim
'}' belirtecinden önce beklenen bildirim
Yumuşak ateşleme taslağını kopyaladım.
LED'im keskin bir şekilde yanıyor, ancak sorunsuz bir şekilde sönüyor.

Lütfen açıklayınız.
Yumuşak ateşleme taslağını kopyaladım.
LED'im keskin bir şekilde yanıyor, ancak sorunsuz bir şekilde sönüyor.

Lütfen açıklayınız.

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...