• Yeni Başlayanlar İçin Basit Arduino Devreleri. arduino PRO. Yeni başlayanlar için başlamak için en iyi yer neresidir?

    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 kullanıyor
    Bu, tahtadaki en büyük çiptir. Bu çip, belleğinde depolanan programları yürütür. Programı Arduino IDE kullanarak usb üzerinden indirebilirsiniz. USB girişi ayrıca arduinoya güç sağlar.

    Ayrı bir elektrik prizi vardır. Çeşitli cihazlara güç sağlamak için gerekli olan kart üzerinde 5v ve 3.3v etiketli iki çıkış vardır. Ayrıca GND etiketli pinler de bulacaksınız, bunlar toprak pinleridir (toprak 0V'dir). Arduino platformu ayrıca, harici düğümlere bağlanan ve yüksek veya düşük (açık veya kapalı) olmak üzere iki duruma sahip, 0'dan 13'e kadar sayılarla etiketlenmiş 14 dijital pime (pin) sahiptir. Bu kontaklar, çıkış veya giriş olarak çalışabilir, örn. bazı verileri iletebilir ve harici cihazları kontrol edebilir veya cihazlardan veri alabilirler. Tahtadaki aşağıdaki pimler A0-A5 olarak etiketlenmiştir. Bunlar, veri alabilen analog girişlerdir. çeşitli sensörler. Bu, özellikle sıcaklık gibi belirli bir aralığı ölçmeniz gerektiğinde kullanışlıdır. Analog girişler var Ek fonksyonlar hangi ayrı olarak kullanılabilir.

    Nasıl kullanılır devre tahtası.

    Breadboard, her şeyi birbirine lehimlemeden önce cihazın nasıl çalıştığını test etmek için parçaları geçici olarak bağlamak için oradadır.
    Aşağıdaki örneklerin tümü, lehimleme zahmetine girmeden devrede hızlı bir şekilde değişiklik yapabilmeniz ve parçaları yeniden kullanabilmeniz için bir devre tahtası üzerine monte edilmiştir.

    Breadboard, parçaları ve kabloları yerleştirebileceğiniz sıra sıra deliklere 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üç sağlamak için kullanılır. 5v veya 3.3v olabilir, ancak her iki durumda da yapmanız gereken ilk şey 5v ve GND'yi gösterildiği gibi devre tahtasına bağlamaktır. Bazen bu sıra bağlantıları panonun ortasında kesilebilir, daha sonra ihtiyacınız varsa şekilde gösterildiği gibi bağlayabilirsiniz.








    Tahtanın ortasında bulunan deliklerin geri kalanı beş delik ile gruplandırılmıştır. Devre parçalarını bağlamak için kullanılırlar.


    Mikrodenetleyicimize ilk bağlayacağımız şey bir LED'dir. Bağlantı şeması resimde gösterilmiştir.

    Devredeki direncin amacı nedir? İÇİNDE bu durum LED'den geçen akımı sınırlar. Her LED belirli bir akım için tasarlanmıştır ve bu akım daha büyükse LED arızalanır. Ohm yasasını kullanarak direncin hangi değerde olması gerektiğini öğrenebilirsiniz. Bilmeyenler veya unutanlar için Ohm kanunu akım ile gerilim arasında doğrusal bir ilişki olduğunu söyler. Yani, dirence ne kadar çok voltaj uygularsak, içinden o kadar fazla akım akacaktır.
    V=I*R
    Nerede v- direnç boyunca voltaj
    BEN- direnç üzerinden akım
    R bulunması gereken dirençtir.
    İlk olarak, direnç üzerindeki voltajı bulmalıyız. Kullanacağınız 3mm veya 5mm LED'lerin çoğu 3v çalışma voltajına sahiptir. Yani direnç için 5-3 \u003d 2v ödememiz gerekiyor.

    Daha sonra dirençten geçen akımı hesaplıyoruz.
    Çoğu 3 ve 5 mm LED, 20mA'da tam parlaklıkta yanar. Bundan daha büyük bir akım onları yok edebilir ve daha düşük bir akım herhangi bir zarara yol açmadan parlaklıklarını azaltır.

    Bu nedenle, LED'i 20mA akıma sahip olacak şekilde 5v'lik bir devrede açmak istiyoruz. Tüm parçalar bir devreye dahil edildiğinden, direncin de 20mA akımı olacaktır.
    biz alırız
    2V=20mA*R
    2V=0,02A*R
    R = 100ohm

    100 ohm minimum dirençtir, biraz daha fazla kullanmak daha iyidir, çünkü LED'lerin özelliklerinde bazı farklılıklar vardır.
    İÇİNDE bu örnek 220 ohm'luk bir direnç kullanılır. Sadece yazarda bunlardan çok olduğu için :wink: .

    LED'i, uzun ucu direncin uçlarından birine bağlanacak şekilde kartın ortasındaki deliklere yerleştirin. Direncin diğer ucunu 5V'a bağlayın ve LED'in diğer ucunu GND'ye bağlayın. LED yanmalıdır.

    Lütfen LED'in nasıl bağlanacağı konusunda bir fark olduğunu unutmayın. Akım uzun uçtan kısa uca doğru akar. Diyagramda, akımın üçgenin yönlendirildiği yönde aktığı hayal edilebilir. LED'i çevirmeye çalışın ve yanmayacağını göreceksiniz.

    Ancak direnci nasıl bağlayacağınız arasında hiçbir fark yoktur. Ters çevirebilir veya farklı bir LED çıkışına bağlamayı deneyebilirsiniz, bu devrenin çalışmasını etkilemeyecektir. Yine de LED üzerinden akımı sınırlayacaktır.

    Bir Arduino Krokisinin Anatomisi.

    Arduino için programlara sketch denir. İki ana işlevi vardır. İşlev kurmak ve fonksiyon döngü
    bu fonksiyonun içinde tüm temel ayarları yapacaksınız. Hangi çıktıların girdi veya çıktı olarak çalışacağı, hangi kitaplıkların bağlanacağı, değişkenleri başlatır. İşlev Kurmak() program yürütme başladığında, çizim sırasında yalnızca bir kez çalışır.
    bu, daha sonra yürütülen ana işlevdir. kurmak(). Aslında, programın kendisidir. Bu işlev, siz gücü kapatana kadar süresiz olarak çalışacaktır.

    Arduino yanıp sönen LED



    Bu örnekte Arduino'nun dijital pinlerinden birine bir led devre bağlayıp program ile açıp kapatacağız ve bunun yanı sıra bir kaç kullanışlı fonksiyonu öğreneceğiz.

    Bu özelliğin kullanıldığı kurmak() programın bir parçasıdır ve giriş olarak kullanacağınız pinleri başlatmaya yarar. (GİRİŞ) veya çıkış (ÇIKTI). Uygun şekilde ayarlayana kadar pimden veri okuyamaz veya yazamazsınız. pinModu. Bu işlevin iki argümanı vardır: PIN numarası kullanacağınız pin numarasıdır.

    mod-Pinin nasıl çalışacağını ayarlar. Girişte (GİRİŞ) veya çıkış (ÇIKTI). LED'i yakmak için bir sinyal vermeliyiz İTİBAREN arduino. Bunu yapmak için pimi çıkış yapacak şekilde yapılandırıyoruz.
    - bu işlev durumu ayarlamak için kullanılır (durum) pina (PIN numarası). İki ana durum vardır (genellikle 3 tane vardır), biri YÜKSEK, pimde 5v olacak, diğeri Düşük ve pim 0v olacaktır. Bu yüzden LED'i yakmak için LED'e bağlı pimi ayarlamamız gerekiyor. yüksek seviye YÜKSEK.

    Gecikme. Programı ms cinsinden belirtilen bir süre boyunca geciktirmeye yarar.
    LED'in yanıp sönmesini sağlayan kod aşağıdadır.
    //LED Blink int ledPin = 7;//LED'in bağlı olduğu Arduino pini void setup() ( pinMode(ledPin, OUTPUT);// pini OUTPUT olarak ayarla) void loop() ( digitalWrite(ledPin, HIGH);/ / LED gecikmesini aç(1000);// gecikme 1000 ms (1 sn) digitalWrite(ledPin, LOW);// LED gecikmesini kapat(1000);// 1 saniye bekle)

    Kodla ilgili küçük açıklamalar.
    "//" ile başlayan satırlar, Arduino'nun onları yok saydığı yorumlardır.
    Tüm komutlar noktalı virgülle biter, unutursanız bir hata mesajı alırsınız.

    ledPin bir 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ır, bu Arduino pin numarasıdır. Programdaki Arduino değişkenli bir satırla karşılaştığında ledPin, daha önce belirttiğimiz değeri kullanacaktır.
    Yani kayıt pinMode(ledPin, ÇIKIŞ) girişe benzer pinMode(7, ÇIKIŞ).
    Ama ilk durumda değişkeni değiştirmeniz yeterli ve kullanıldığı her satırda değişecek, ikinci durumda ise değişkeni değiştirmek için her komutta tutamaçlarla değişiklik yapmanız gerekecek.

    İlk satır değişkenin türünü gösterir. -de arduino programlama değişkenlerin türünü her zaman bildirmek önemlidir. bunu bildiğin sürece INT negatif ve pozitif sayıları bildirir.
    Aşağıda bir eskiz simülasyonu var. Devrenin nasıl çalıştığını görmek için başlata basın.

    Beklendiği gibi, LED bir saniye sonra kapanır ve açılır. Nasıl çalıştığını görmek için gecikmeyi değiştirmeyi deneyin.

    Birden fazla LED'in kontrolü.

    Bu örnekte birden çok LED'i nasıl kontrol edeceğinizi öğreneceksiniz. Bunu yapmak için karta 3 LED daha takın ve bunları aşağıda gösterildiği gibi Arduino dirençlerine ve pinlerine bağlayın.

    LED'leri sırayla açıp kapatmak için buna benzer bir program yazmanız gerekir:
    //Çoklu LED Yanıp Sönme int led1Pin = 4; int led2Pin = 5; intled3Pin = 6; int led4Pin = 7; void setup() ( //pinleri OUTPUT olarak ayarla pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) geçersiz döngü() ( digitalWrite(led1Pin, HIGH) );//ışık LED gecikmesi(1000);//gecikme 1 sn digitalWrite(led1Pin, LOW);//LED gecikmesini kapat(1000);//delay 1 sn //aynısını diğer 3 LED digitalWrite için yap( led2Pin , HIGH); // LED gecikmesini aç(1000);// 1 sn gecikme digitalWrite(led2Pin, LOW);// LED gecikmesini kapat(1000);// 1 sn gecikme digitalWrite(led3Pin, HIGH) ;// LED gecikmesini aç(1000);// 1 saniye gecikme digitalWrite(led3Pin, LOW);// LED gecikmesini kapat(1000);// 1 saniye gecikme digitalWrite(led4Pin, HIGH);// aç LED gecikmesi(1000);//gecikme 1 sn digitalWrite(led4Pin, LOW);//LED gecikmesini kapat(1000);//gecikme 1 sn )

    Bu program iyi çalışacak, ancak en akıllı çözüm değil. Kodun değiştirilmesi gerekiyor. Programın tekrar tekrar çalışabilmesi için .
    Döngüler, aynı eylemi birkaç kez tekrarlamanız gerektiğinde kullanışlıdır. Yukarıdaki kodda satırları tekrarlıyoruz

    DigitalWrite(led4Pin, YÜKSEK); gecikme(1000); digitalWrite(led4Pin, DÜŞÜK); gecikme(1000);
    tam çizim kodu ekte (indirme: 1187)

    LED parlaklık ayarı

    Bazen programdaki LED'lerin parlaklığını değiştirmeniz gerekecektir. Bu komutla yapılabilir analogYazma() . 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çık ve yarı yarıya kapalıysa, görsel olarak yarı parlaklığında parlıyormuş gibi görünecektir. Buna Darbe Genişliği Modülasyonu (İngilizce PWM veya PWM) denir. PWM, bir "analog" bileşeni kullanarak kontrol etmek için kullanılabildiğinden oldukça sık kullanılır. dijital kod. Tüm Arduino pinleri bu amaç için uygun değildir. Yalnızca böyle bir atamanın çizildiği sonuçlar " ~ ". 3,5,6,9,10,11 pinlerinin yanında göreceksiniz.
    LED'lerinizden birini PWM pinlerinden birine bağlayın (yazarın pini 9'dur). Şimdi yanıp sönen LED taslağını çalıştırın, ancak önce komutu değiştirin digitalWrite() Açık analogYazma(). analogYazma() iki argümanı vardır: birincisi pin numarası ve ikincisi PWM değeridir (0-255), LED'lerle ilgili olarak bu onların parlaklığı ve elektrik motorları için dönüş hızı olacaktır. Aşağıda farklı LED parlaklıkları için örnek bir kod bulunmaktadır.
    //LED'in parlaklığını değiştir int ledPin = 9;//bu pine bir LED bağlanır void setup() ( pinMode(ledPin, OUTPUT);// çıkış pininin başlatılması ) void loop() ( analogWrite (ledPin, 255);// tam parlaklık (255/255 = 1) gecikme(1000);// 1 sn duraklat digitalWrite(ledPin, LOW);// LED gecikmesini kapat(1000);// 1 sn duraklat analogWrite (ledPin, 191);// parlaklık 3/4 oranında (191/255 ~= 0.75) gecikme(1000);//1 saniye duraklat digitalWrite(ledPin, LOW);//LED gecikmesini kapat(1000);// duraklat 1 saniye analogWrite(ledPin, 127); //yarım parlaklık (127/255 ~= 0.5) gecikme(1000);//duraklatma 1 saniye digitalWrite(ledPin, LOW);//LED gecikmesini kapat(1000);// duraklat 1 saniye analogWrite(ledPin, 63); // çeyrek parlaklık (63/255 ~= 0.25) gecikme(1000);// duraklat 1 saniye digitalWrite(ledPin, LOW);// LED gecikmesini kapat(1000);// duraklat 1 sn )

    Komutta PWM değerini değiştirmeyi deneyin analogYazma() bunun parlaklığı nasıl etkilediğini görmek için
    Ardından, parlaklığı tamdan sıfıra sorunsuz bir şekilde nasıl ayarlayacağınızı öğreneceksiniz. Elbette bir kod parçasını 255 kez kopyalayabilirsiniz.
    analogWrite(ledPin, parlaklık); gecikme(5);//kısa gecikme parlaklığı = parlaklık + 1;
    Ama anlıyorsun - pratik olmayacak. Bunun için kullanmak en iyisidir Döngü için hangisi daha önce kullanıldı.
    Aşağıdaki örnek, biri parlaklığı 255'ten 0'a düşürmek için iki döngü kullanır.
    for (int parlaklık=0;parlaklık=0;parlaklık--)( analogWrite(ledPin,parlaklık); gecikme(5); )
    gecikme(5) 5*256=1280ms=1,28sn.)
    İlk satır " kullanır parlaklık- döngü her tekrarlandığında parlaklık değerini 1 azaltmak için " parlaklık >=0.İşaretin değiştirilmesi > tabelada >= 0'ı parlaklık aralığına dahil ettik. Bu çizim aşağıda modellenmiştir. //parlaklığı sorunsuz bir şekilde değiştirin int ledPin = 9;//bu pine bir LED bağlanır void setup() ( pinMode(ledPin, OUTPUT);// çıkış pininin başlatılması ) void loop() ( // parlaklık (0 - 255 ) for (int parlaklık=0;parlaklık=0;parlaklık--)( analogWrite(ledPin,parlaklık); gecikme(5); ) gecikme(1000);//1 saniye bekle //parlaklığı yavaşça azalt (255 - 0) for (int parlaklık=255;parlaklık>=0;parlaklık--)( analogWrite(ledPin,parlaklık); gecikme(5); ) gecikme(1000);//1 saniye bekle ) )
    Pek iyi görünmüyor ama fikir açık.

    RGB LED ve Arduino

    Bir RGB LED aslında bir pakette farklı renklerde üç LED'dir.

    Farklı parlaklığa sahip farklı LED'leri açarak birleştirebilir ve farklı renkler elde edebilirsiniz. 256 dereceli bir Arduino için 256^3=16581375 olası renk elde edersiniz. Gerçekte, elbette, daha azı olacak.
    Ortak katot olarak kullanacağımız LED. Onlar. üç LED'in tümü yapısal olarak katotlarla bir çıkışa bağlanmıştır. Bu pini GND pinine bağlayacağız. Kalan çıkışlar, sınırlayıcı dirençler aracılığıyla PWM çıkışlarına bağlanmalıdır. Yazar 9-11 pinlerini 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 red = 9; int yeşil = 10; int mavi = 11; void setup()( pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); ) void loop()( //kırmızı LED'i açar/kapatır digitalWrite(kırmızı, YÜKSEK); gecikme( 500) ; digitalWrite(kırmızı, DÜŞÜK); gecikme(500); //yeşil LED'i aç/kapat digitalWrite(yeşil, YÜKSEK); gecikme(500); digitalWrite(yeşil, DÜŞÜK); gecikme(500); // mavi LED'i açma/kapatma digitalWrite(mavi, YÜKSEK); gecikme(500); digitalWrite(mavi, DÜŞÜK); gecikme(500); )

    Aşağıdaki örnek komutları kullanır analogYazma() ve LED'ler için farklı rastgele parlaklık değerleri elde etmek. Rastgele değişen farklı renkler 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(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); ) void loop()( //rastgele bir renk seçin analogWrite(kırmızı, rasgele(256)); analogWrite( mavi, rastgele(256)); analogWrite(yeşil, rastgele(256)); gecikme(1000);//bir saniye bekle)

    Rastgele(256)- İadeler rastgele sayı 0 ila 255 aralığında.
    Ekli gösteren bir kroki yumuşak geçişler renkler kırmızıdan yeşile, sonra maviye, kırmızıya, yeşile vb. (indirme sayısı: 326)
    Eskiz örneği çalışıyor, ancak çok fazla tekrar eden kod var. Kendi kodunuzu yazarak kodu basitleştirebilirsiniz. yardımcı işlev, bir renkten diğerine sorunsuz bir şekilde değişecektir.
    İşte nasıl görüneceği: (indirme sayısı: 365)
    Fonksiyon tanımına parça parça bakalım. işlev denir karartıcı ve iki bağımsız değişkeni 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 belirtilen türe sahiptir: geçersiz fader(int color1, int color2). Her iki argümanın da şu şekilde bildirildiğini görebilirsiniz: int, ve onlar adlandırılır renk1 Ve renk2 işlevi tanımlamak için koşul değişkenleri olarak. Geçersiz işlevin herhangi bir değer döndürmediği, yalnızca komutları yürüttüğü anlamına gelir. Çarpmanın sonucunu döndüren bir fonksiyon yazmanız gerekseydi, şöyle görünürdü:
    int çarpan(int sayı1, int sayı2)( int çarpım = sayı1*sayı2; dönüş ürünü; )
    Type'ı nasıl ilan ettiğimize dikkat edin int yerine dönüş türü olarak
    geçersiz.
    İşlevin içinde, önceki çizimde zaten kullandığınız komutlar vardır, yalnızca pin numaraları ile değiştirilmiştir. renk1 Ve renk2. fonksiyon denir karartıcı bağımsız değişkenleri şu şekilde hesaplanır: renk1=kırmızı Ve renk2 = yeşil. Arşiv, işlevleri kullanan eksiksiz bir çizim içerir (indirme sayısı: 272)

    Düğme

    Aşağıdaki çizim, mandallama olmadan normalde açık kontaklara sahip bir düğme kullanacaktır.


    Bu, butona basılmadığında üzerinden akım geçmediği ve serbest bırakıldıktan sonra butonun orijinal konumuna geri döndüğü anlamına gelir.
    Devrede butona ek olarak bir direnç kullanılmıştır. Bu durumda akımı sınırlamaz, ancak düğmeyi 0v'ye (GND) "yukarı çeker". Onlar. butona basılana kadar bağlı olduğu Arduino pini düşük olacaktır. 10 kΩ devresinde kullanılan direnç.


    //düğmeyi belirle bas bas int buttonPin = 7; void setup()( pinMode(buttonPin, INPUT);//Serial.begin(9600) girişine pini başlat düğmeye basıldı Serial.println("basıldı"); // print "basıldı" ) else ( Serial.println("basılmadı");// else "basılmadı") )
    Bu çizimde birkaç yeni komut var.
    -Bu komut kontrol edeceğimiz çıktının High (high level) ve low (low level) değerlerini kabul eder. Önceden, setup() içinde, bu çıktının bir girdi olarak yapılandırılması gerekir.
    ; //burada buttonPin, butonun bağlı olduğu pin numarasıdır.
    Seri port, kontrolörün kendisi programı yürütürken Arduino'nun bilgisayara mesaj göndermesini 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ı (UART veya USART'ın başka bir adı) üzerinden veri aktarımını etkinleştirmek için onu kurulumda () başlatmanız gerekir.

    Serial.begin() tek bir argümanı vardır - bu, Arduino ile bilgisayar arasındaki veri aktarım hızıdır.
    Çizim, Arduino IDE'de (Araçlar >> Seri Monitör) ekranda bir mesaj görüntülemek için bir komut kullanır.
    - tasarım, birkaç kontrolü tek bir yerde birleştirerek programın ilerlemesini kontrol etmenizi sağlar.
    Eğer(eğer) digitalRead YÜKSEK döndürürse, monitörde "basıldı" kelimesi görüntülenir. Aksi takdirde(aksi takdirde) monitörde "basıldı" kelimesi görüntülenir. Artık bir düğmeye dokunarak LED'i açıp kapatmayı deneyebilirsiniz.
    //LED çıkışlı butona basma algılama int buttonPin = 7; int ledPin = 8; void setup()( pinMode(buttonPin, INPUT);//bu sefer buton pinini INPUT olarak ayarlayacağız pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop()( if (digitalRead(buttonPin)= =YÜKSEK)( digitalWrite(ledPin,HIGH); Serial.println("basıldı"); ) else ( digitalWrite(ledPin,LOW); Serial.println("basılmamış"); ) )

    Analog giriş.

    analogOkuma Arduino analog pinlerinden birinden veri okumanıza izin verir ve 0 (0V) ila 1023 (5V) aralığında bir değer verir. Analog girişteki voltaj 2,5V ise 2,5 / 5 * 1023 = 512 yazdırılacaktır.
    analogOkuma yalnızca bir bağımsız değişkeni vardır - Bu, analog girişin (A0-A5) numarasıdır. Aşağıdaki çizim, bir potansiyometreden voltaj okuma kodunu göstermektedir. Bunu yapmak için, uç terminalleri 5V ve GND pinlerine ve orta terminali A0 girişine olacak şekilde değişken bir direnç bağlayın.

    Aşağıdaki kodu çalıştırın ve direnç düğmesinin dönüşüne bağlı olarak değerlerin nasıl değiştiğini seri monitörde görün.
    //analog giriş int potPin = A0;//potansiyometrenin merkez pimi bu pime bağlanır void setup()( //analog pim varsayılan olarak giriş olarak etkindir, bu nedenle başlatma gerekli değildir Serial.begin(9600); ) void loop()( int potVal = analogRead(potPin);//potVal 0 ile 1023 arasında bir sayıdır Serial.println(potVal); )
    Aşağıdaki çizim, düğmeye basma taslağını ve LED parlaklık kontrol taslağını birleştirir. LED, düğmeden yanacak ve potansiyometre, ışımanın parlaklığını kontrol edecektir.
    //LED çıkışı ve değişken yoğunluklu düğme basma algılaması 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)(//eğer butona basılırsa int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal); // Serial.println("pressed"); ) pot tarafından ayarlanan yoğunlukta led'i aç ( digitalWrite(ledPin, LOW);//düğmeye basılmazsa kapanır Serial.println("basılmamış"); ) )

    Arduino, çeşitli cihazlar oluşturmak için kullanılan küçük bir karttır. ilginç araçlar ve hatta bilgi işlem platformları için. Bu kart mikrodenetleyici olarak adlandırılan açık kaynak kodlu ve birçok uygulamanın kullanılabildiği bir karttır.

    Bu, yeni başlayanlar, amatörler ve profesyoneller için en kolay ve en ucuz seçenektir. Programlama işlemi, hızlı ve kolay bir şekilde hakim olunan ve C++ diline dayanan Processing / Wiring dilinde gerçekleşir ve bu sayede yapılması çok kolaydır. Arduino'nun ne olduğuna, yeni başlayanlar için neyin yararlı olduğuna, yeteneklerine ve özelliklerine bakalım.

    Arduino, yeni cihazlarınız veya gadget'larınız için beyin görevi görecek bir bilgi işlem platformu veya kartıdır. Buna dayanarak, her iki cihazı da oluşturabilirsiniz. basit diyagramlar robotlar veya dronlar gibi karmaşık emek yoğun projelerin yanı sıra.

    Tasarımcının temeli, G / Ç kartı (donanım) ve ayrıca yazılım bölümü. Arduino tabanlı kurucu yazılım, entegre bir geliştirme ortamı ile temsil edilir.

    Dışarıdan, ortamın kendisi şöyle görünür:

    Arduino'nun yazılım kısmı, programlama hakkında hiçbir fikri olmayan acemi bir kullanıcının bile halledebileceği şekilde tasarlanmıştır. Mikrodenetleyici kullanımında ek bir başarı faktörü, lehimlemeye gerek kalmadan gerekli parçalar (dirençler, diyotlar, transistörler vb.) denetleyiciye bağlandığında bir breadboard ile çalışabilmesiydi.

    Çoğu Arduino kartı şu yollarla bağlanır: USB kablosu. Böyle bir bağlantı, panoya güç sağlamanıza ve eskizleri indirmenize, yani. küçük programlar. Programlama işlemi de son derece basittir. İlk olarak, kullanıcı oluşturmak için IDE'nin kod düzenleyicisini kullanır. gerekli program, ardından Arduino'da tek bir tıklama ile yüklenir.

    Arduino nasıl satın alınır?

    Arduino'nun kartı ve birçok parçası İtalya, bu nedenle orijinal bileşenler oldukça pahalıdır. Ancak, İtalyan analojisine göre üretilen, ancak daha uygun fiyatlarla üretilen kit-setler adı verilen tasarımcı veya kitlerin ayrı bileşenleri vardır.

    Şu adresten bir analog satın alabilirsiniz: iç pazar veya örneğin Çin'den sipariş verin. Örneğin, birçok kişi Aliexpress web sitesini biliyor. Ancak Arduino ile tanışmaya başlayanlar için, ilk kartlarını bir Rus çevrimiçi mağazasından sipariş etmek daha iyidir. Zamanla, Çin'de pano ve parça satın almaya geçebilirsiniz. Bu ülkeden teslimat süresi iki haftadan bir aya kadar olacak ve örneğin, büyük bir kit kitinin maliyeti en fazla 60-70 dolar.

    Standart kitler genellikle aşağıdaki parçaları içerir:

    • ekmek tahtası;
    • LED'ler;
    • dirençler;
    • piller 9V;
    • voltaj regülatörleri;
    • düğmeler;
    • süveter;
    • matris klavye;
    • genişletme kartları;
    • kapasitörler.

    Programlama bilmem gerekiyor mu?

    Bir Arduino kartıyla çalışmanın ilk adımları, kartın programlanmasıyla başlar. Zaten tahta ile çalışmaya hazır olan programa eskiz denir. Programlama bilmeme konusunda endişelenmenize gerek yok. Program oluşturma süreci oldukça basittir ve Arduino topluluğu çok büyük olduğu için internette pek çok eskiz örneği vardır.

    Program derlendikten sonra panoya yüklenir (flaşlanır). Bu durumda Arduino'nun yadsınamaz bir avantajı vardır - çoğu durumda programlama için bir USB kablosu kullanılır. Yüklemeden hemen sonra, program çeşitli komutları yürütmeye hazırdır.

    Arduino ile yeni başlayanların iki temel özelliği bilmesi gerekir:

    • kurmak()– tahta açıldığında bir kez kullanılır, ayarları başlatmak için kullanılır;
    • döngü()- sürekli kullanılır, kurulumdaki son adımdır.

    İşlev Kaydı Örneği kurmak():

    Void setup() ( Serial.begin(9600); // Seri bağlantı pinMode(9, INPUT); // Pin 9'u giriş olarak ata pinMode(13, OUTPUT); // Pin 13'ü çıkış olarak ata)

    İşlev kurmak() en başta ve cihazınızı açtıktan veya yeniden başlattıktan hemen sonra yalnızca 1 kez yürütülür.

    İşlev döngü() setup() işlevinden sonra yürütülür. Döngü, döngü veya döngü olarak çevrilir. İşlev tekrar tekrar yürütülecektir. Böylece ATmega328 mikrodenetleyici (çoğu Arduino kartında bulunur), döngü işlevini saniyede yaklaşık 10.000 kez yürütür.

    Ek özelliklerle de karşılaşacaksınız:

    • pinModu– bilgi giriş ve çıkış modu;
    • analogOkuma- çıkışta ortaya çıkan analog voltajı okumanızı sağlar;
    • analog yazma– çıkış pinine analog voltaj yazmak;
    • dijitalOkuma– bir dijital çıkışın değerini okumanızı sağlar;
    • dijital Yazma– dijital çıkışın değerini düşük veya yüksek bir seviyeye ayarlamanızı sağlar;
    • seri baskı– proje hakkındaki verileri kolayca okunabilir bir metne çevirir.

    Buna ek olarak, Arduino'ya yeni başlayanlar, panoları veya ek modülleri kontrol etmenize izin veren işlev koleksiyonları olan panolar için birçok kitaplığın olmasını seveceklerdir. En popüler olanlar şunları içerir:

    • depoya okuma ve yazma,
    • İnternet bağlantısı,
    • SD kart okuma,
    • step motor kontrolü
    • metin oluşturma
    • vesaire.

    Arduino nasıl kurulur?

    Yapıcının ana avantajlarından biri, kullanıcı ayarlarıyla ilgili güvenliğidir. Arduino için potansiyel olarak zararlı olabilecek anahtar ayarlar korunur ve kullanılamaz.

    Bu nedenle, deneyimsiz bir programcı bile, istenen sonucu elde ederek çeşitli seçenekleri güvenle deneyebilir ve değiştirebilir. Ancak her ihtimale karşı, tahtayı nasıl mahvetmeyeceğinizle ilgili üç önemli materyali okumanızı önemle tavsiye ederiz:

    Klasik Ayarlama Algoritması arduino programlarıöyle görünüyor:

    • Aşağıdan veya üreticinin web sitesinden indirilebilen IDE kurulumu;
    • kurulum yazılım kullanılan PC'ye;
    • Arduino dosyasını başlatmak;
    • geliştirilen programın kod penceresine girilmesi ve panoya aktarılması (bir USB kablosu kullanılarak);
    • IDE bölümünde kullanılacak yapılandırıcı tipini seçmelisiniz. Bunu "araçlar" - "panolar" penceresinde yapabilirsiniz;
    • kodu kontrol edin ve "İleri" ye tıklayın, ardından Arduino'ya yükleme başlayacaktır.
    Sürüm pencereler Mac os işletim sistemi linux
    1.6.5 Zip
    yükleyici
    yükleyici 32 bit
    64 bit
    1.8.2 Zip
    yükleyici
    yükleyici 32 bit
    64 bit
    KOL
    1.8.5 Zip
    yükleyici
    Uygulama
    yükleyici 32 bit
    64 bit
    KOL

    el doldurma

    Karmaşık fikirleri güvenle uygulamak, yazılım ortamını ve Arduino'yu kullanmak için yeni başlayanların "ele geçirmesi" gerekir. Bunu yapmak için daha kolay görevler ve projelerle başlamanız önerilir.

    Yapabileceğiniz en basit proje Arduino kartında portun karşısında bulunan ledin her saniye yanıp sönmesini sağlamaktır.

    Bunun için ihtiyacınız var:

    • tasarımcıyı PC'ye bağlayın,
    • programı açın, "hizmet" bölümünde "seri bağlantı noktası" bloğunu arayın
    • gerekli aralığı seçin
    • bundan sonra Arduino IDE'de bulunan kodu "Örnekler" bölümüne eklemeniz gerekir.

    Yeni başlayanlar için Arduino'daki ilk projeler şunlar olabilir:

    • yanıp sönen LED;
    • sıcaklık sensörünün bağlantısı ve kontrolü;
    • hareket sensörünün bağlantısı ve kontrolü;
    • fotodirenç bağlantısı;
    • servo kontrolü.

    ilk proje

    İşte ilk projemize geliyoruz. Arduino, LED ve butonu bağlayalım. Bu proje yeni başlayanlar için harika.

    Şemamız şu şekilde olacak:

    Düğmeye bastıktan sonra LED yanacak ve bir sonraki basıştan sonra sönecektir. Arduino'nun kendisi için taslak veya program şöyle olacaktır:

    // bağlı cihazların pinleri int switchPin = 8; int ledPin = 11; // butonun ve LED'in durumunu depolamak için değişkenler boolean lastButton = LOW; boole akımıDüğme = DÜŞÜK; boolean ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // debounce fonksiyonu boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( delay (5) ); akım = digitalRead(switchPin); ) dönüş akımı; ) geçersiz döngü() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ;digitalWrite (ledPin, ledOn); )

    Henüz yazmadığımız debounce işlevini fark etmiş olabilirsiniz. için gereklidir.

    Tahta ile çalışmanın ilk becerilerini anladıktan sonra, daha karmaşık ve çok yönlü görevleri uygulamaya başlayabilirsiniz. Yapıcı, bir RC araba, kontrollü bir helikopter oluşturmanıza, kendi telefonunuzu oluşturmanıza, bir sistem oluşturmanıza vb.

    Arduino kartı ile çalışmanın gelişimini hızlandırmak için, en çok oluşturma adımlarını açıklayan bölümümüzden cihaz yapmaya başlamanızı öneririz. ilginç cihazlar ve gadget'lar.

    İyi günler Habr. Arduino ile tanışmanıza yardımcı olacak bir makale serisine başlıyorum. Ancak bu, bu işte yeni değilseniz, kendiniz için ilginç bir şey bulamayacağınız anlamına gelmez.

    giriiş

    Arduino'yu tanıyarak başlamak güzel olurdu. Arduino - bina otomasyonu ve robotik sistemler için donanım ve yazılım araçları. Başlıca avantajı, platformun profesyonel olmayan kullanıcılara yönelik olmasıdır. Yani, programlama bilgisi ve kendi becerileri ne olursa olsun herkes kendi robotunu yaratabilir.

    Başlangıç

    Arduino üzerinde proje oluşturmak 3 ana aşamadan oluşur: kod yazma, prototip oluşturma (prototipleme) ve bellenim. Kod yazmak ve ardından tahtayı flash etmek için bir geliştirme ortamına ihtiyacımız var. Aslında, bunlardan epeyce var, ancak orijinal ortamda programlayacağız - Arduino IDE. Kodun kendisini Arduino için uyarlanmış C++ ile yazacağız. Resmi web sitesinden indirebilirsiniz. Sketch (eskiz) - Arduino'da yazılmış bir program. Kod yapısına bakalım:


    main()( geçersiz kurulum()( ) geçersiz döngü()( ) )

    C++'daki zorunlu main() işlevinin Arduino'nun kendisi tarafından oluşturulduğunu not etmek önemlidir. Ve programcının gördüğü şeyin sonucu:


    geçersiz kurulum()( ) geçersiz döngü()( )

    İki zorunlu işlevle ilgilenelim. setup() işlevi, mikrodenetleyicinin başlangıcında yalnızca bir kez çağrılır. Her şeyi ifşa ediyor temel ayarlar. loop() işlevi döngüseldir. Mikrodenetleyicinin çalıştığı süre boyunca sonsuz bir döngüde çağrılır.

    İlk program

    Platformun nasıl çalıştığını daha iyi anlamak için ilk programı yazalım. Bu en basit programı (Blink) iki versiyonda çalıştıracağız. Aralarındaki fark sadece montajdadır.


    int Led = 13; // led değişkenini pin 13'te bildir (çıkış) void setup()( pinMode(Led, OUTPUT); // değişken tanımla) void loop()( digitalWrite(Led, HIGH); // pin 13'e voltaj uygula gecikme(1000) ); // 1 saniye bekle digitalWrite(Led, LOW); // pin 13'e voltaj uygulama gecikme(1000); // 1 saniye bekle )

    Bu programın çalışma prensibi oldukça basittir: LED 1 saniye yanar ve 1 saniye söner. İlk seçenek için düzeni bir araya getirmemize gerek yok. Arduino platformunda yerleşik bir LED 13. pime bağlı olduğundan.

    Arduino Donanım Yazılımı

    Taslağı Arduino'ya yüklemek için önce basitçe kaydetmemiz gerekiyor. Ardından, yükleme sırasında sorun yaşamamak için programlayıcının ayarlarını kontrol etmeniz gerekir. Bunun için üst panel"Araçlar" sekmesini seçin. Ücret bölümünde ücretinizi seçin. Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo veya diğerleri olabilir. Ayrıca "Port" bölümünde bağlantı portunuzu (platformunuzu bağladığınız port) seçmelisiniz. Bu adımlardan sonra taslağı yükleyebilirsiniz. Bunu yapmak için oku tıklayın veya "Çizim" sekmesinde "İndir"i seçin ("Ctrl + U" klavye kısayolunu da kullanabilirsiniz). Pano üretici yazılımı başarıyla tamamlandı.

    Prototipleme/Prototipleme

    Düzeni birleştirmek için aşağıdaki öğelere ihtiyacımız var: LED, direnç, kablolama (atlama telleri), devre tahtası (Breadboard). Hiçbir şeyi yakmamak ve her şeyin başarılı bir şekilde çalışması için LED ile uğraşmanız gerekir. İki "pençesi" var. Kısa - eksi, uzun - artı. "Toprağı" (GND) ve direnci kısa olana bağlayacağız (LED'e giden akımı yakmamak için azaltmak için) ve uzun olana güç sağlayacağız (bağla pim 13). Bağlandıktan sonra, daha önce yapmadıysanız çizimi panoya yükleyin. Kod aynı kalır.


    Bu ilk bölümün sonu. İlginiz için teşekkür ederiz.

    12 02.2017

    Bu yazıda size, donanım platformlarını kullanarak programlamanın en ilginç dünyasının bilgisinin eksik olacağı bir şeyden, yani bilgisayar teknolojisini incelemek ve çeşitli süreçleri otomatikleştirmek için mükemmel bir yardımcı olacak olan Arduino elektronik tasarımcısı hakkında bilgi vereceğim. Tabii ki, bu tamamen teorik olarak öğretilebilir, ancak Arduino gibi bir araç kullanırken, programlamada ustalaşmanın ve robotik kurmanın ilk adımları, doğaçlama malzemeler ve özel literatür kullanarak kendi kendine çalışmaktan daha kolay olacaktır.

    Bu makaleden şunları öğreneceksiniz:

    Tüm teknoloji severlere iyi günler! Gridin Semyon sizlerle. Bugün en yaygın panoları programlamaya başlamak için hangi ekipmanı kullanacağımıza bakacağız.

    Arduino - sen nesin?

    Elbette daha yaşlı okuyucularımız, bir zamanlar SSCB'de çocuklar için çeşitli gelişim kitlerinin üretildiğini hatırlıyor. Bunlar arasında bir dizi genç kimyager, biyolog, amatör radyo var ... Son varyasyon, teknolojiye ve çeşitli şeylerin bağımsız tasarımına karşı bir zayıflığı olanlar için özellikle ilginçti.

    Zaman geçti, birçok teknoloji ortaya çıktı ve bu tür şeyler sadece iyileştirilmedi, aynı zamanda herkesin kullanımına açıldı. Bugün fantezinin kapsamı yazılım çerçeveleriyle sınırlı değildir ve Arduino bunun canlı bir örneğidir.

    Arduino kiti, kibrit kutusu büyüklüğünde elektronik bir platformdur. Bu platforma çeşitli modüller bağlanabilir - motorlar, ampuller, sensörler, tek kelimeyle, elektrikle çalışan ve bir şekilde mikro devreye bağlanabilen her şey.

    Kimin için?

    Arduino'ya kimin ihtiyacı var?

    • Robotik ile ilgilenen çocuklar ve gençler;
    • Özel teknik üniversitelerin ve kolejlerin öğrencileri;
    • Eski becerilerini hatırlamak isteyen profesyoneller;
    • Öğretmenler öğrencilerine öğretmek için;
    • Eğlenmek isteyen tüm teknoloji meraklısı insanlar.

    Edinilen bilgileri hemen pratikte uygulayarak programlamayı öğrenin; bir bitirme projesi yazmak; yaratmak akıllı sistem cihazları ve aydınlatmayı uzaktan kontrol etmenizi sağlayacak ev için; robot tasarlamak çok uzak tam liste Arduino tarafından sağlanan olanaklar. Gerçekten sınırsızlar ve her şey sadece sizin hayal gücünüzle sınırlı! Aynı zamanda, geniş topluluk ve Web'de Rusça da dahil olmak üzere birçok Arduino dersinin varlığı nedeniyle sisteme yeni başlayanlar bile erişebilir.

    İlk buluşma. bilgisayar kurma

    Cihazı bir PC'ye bağlama konusuyla ilgilenmeden önce, hangi Arduino'yu satın almanın daha iyi olduğu sorusunu incelemelisiniz, çünkü bu kurucunun meraklılar için birçok versiyonu var. En popüler ve aynı zamanda yaklaşık 25-30 dolara mal olan. Bununla birlikte, akıllı telefonlarla etkileşim kurabilen daha pahalı, gelişmiş sürümler de vardır. Android tabanlı, port sayısı artırılmış, donanımları daha güçlü, bu konuda zaten deneyimli kullanıcılar için daha uygun olan Linux üzerindeki cihazlar. Bizim için Uno varyantı veya ona benzer (örneğin, Leonardo) daha uygundur. 32 kilobayt bellek ve yalnızca 16 megahertz frekansa sahip bir işlemci gözünüzü korkutmasın - bu, ilk araştırma için fazlasıyla yeterli!

    Platformu programlamak ve ekranda her şeyi görmek için önceden belirlenmiş eylemler, en yaygın programlama dillerinden biri olan C++ kullanılmaktadır. Bununla çalışmak, resmi Arduino IDE kabuğu kullanılarak gerçekleştirilir, ticari olmayan kullanım için tamamen ücretsizdir. Daha karmaşık ve sofistike başka seçenekler de var, ancak geliştirici tarafından önerilen seçenekle başlamak daha iyi.

    Programların hafızasına bağlantı ve yükleme, USB portu üzerinden gerçekleştirilir. Modüller birçok şekilde bağlanabilir - özel bir devre tahtası, atlama telleri, teller dahil ... Bir havya kullanmak gerekli değildir. Neredeyse her şeyi bağlayabilirsiniz - herhangi bir gadget, tasarımınızın tam teşekküllü bir parçası olabilir! Aynı zamanda, sözde çok katmanlı "sandviçler" de oluşturabilirsiniz - ek panolar, ana mikro devrenin yeteneklerini genişletiyor. Ana şey, Uno'nun kalbindeki temel süreçtir, gerisi yalnızca ek özellikler elde etmeye yarar. Örneğin, internete bağlanmak veya güçlü bir motoru sürmek olabilir.

    IDE kullanma

    Arduino platformu için yazılanlara eskiz denir. Kısaca entegre geliştirme ortamını kullanarak bir çizim oluşturabilirsiniz - IDE (resmi sürüm buna denir). Kurulan sürücüler ve bu ortam ile ilk adımınızı atabilirsiniz.

    IDE size önceden yazılmış basit eskizler sağlar. Bunlardan birini açın ve pano listesinden Arduino'nuzu seçin, ardından Yükle komutunu kullanarak taslağı cihazınıza yükleyin. Bütün bunlar çok basit bir şekilde yapılır - geliştirme ortamının arayüzü grafikseldir, sezgiseldir.

    Ayrıca Web'de çok sayıda hazır eskiz var. Örneğin, Wikipedia'da Arduino ile ilgili bir makalede bulabilirsiniz. bitmiş örnek yanıp sönen LED'i ayarlayan program. Özel kaynaklarda, Arduino'dan gerçek bir robot yapan inanılmaz derecede karmaşık algoritmalar bulacaksınız. Böyle yazmayı öğrenmek için ihtiyacınız var kesin zaman ve azim, ancak mümkün olduğunca çok sayıda platform programlama ilkesini anlamak için bunları en başından öğrenebilirsiniz. Temel bir program yazmak istiyor ve nasıl yapacağınızı bilmiyorsanız, o zaman .

    Saygılarımla, Gridin Semyon

    Yeni başlayanlar için Arduino'da amatör radyo deneyleri içeren bir dizi makale ve eğitim. Bu, bir havya, baskılı devre kartlarının dağlanması ve benzerleri olmadan, elektronikteki herhangi bir su ısıtıcısının, hem profesyonel prototipleme hem de amatör deneyler için uygun tam teşekküllü bir çalışma cihazı monte edebildiği amatör bir radyo oyuncak tasarımcısıdır. elektronik okuyorum.


    Arduino kartı, öncelikle acemi radyo amatörlerine mikro denetleyicileri programlamanın temellerini öğretmek ve ciddi teorik eğitim olmaksızın kendi elleriyle mikro denetleyici cihazları oluşturmak için tasarlanmıştır. Çarşamba arduino geliştirme hazır program kodunu derlemenizi ve kartın hafızasına yüklemenizi sağlar. Üstelik kodu indirmek son derece basittir.

    Arduino'ya yeni başlayanlar için nereden başlamalı?

    Her şeyden önce, Arduino kartı ile çalışmak için, acemi bir elektronik mühendisinin Arduino geliştirme programını indirmesi gerekir, program kodu, bir mesaj alanı, bir metin çıktı penceresi (konsol) ile çalıştığımız yerleşik bir metin düzenleyiciden oluşur. ), sık kullanılan komutlar için düğmeler ve çoklu menüler içeren bir araç çubuğu. Programlarınızı indirmek ve iletişim için bu program standart bir USB kablosu Arduino kartına bağlanır.


    Arduino ortamında yazılan koda denir. eskiz. Metin eklemek / kesmek, değiştirmek / aramak için özel araçlara sahip bir metin düzenleyicide yazılmıştır. Kaydetme ve dışa aktarma sırasında, mesaj alanında (hemen aşağıdaki yeni başlayanlar için ilk öğreticideki şekle bakın) açıklamalar gösterilir ve hatalar da görüntülenebilir. Konsol, tam hata raporları ve diğer bilgiler dahil olmak üzere Arduino mesajlarını gösterir. kullanışlı bilgi. Araç çubuğu düğmeleri, bir taslağı kontrol edip kaydetmenize, açmanıza, oluşturmanıza ve kaydetmenize, seri veri yolu izlemeyi açmanıza ve çok daha fazlasına izin verir.

    Öyleyse ilkine gidelim. Arduino dersi acemi elektronik mühendisleri için şemalar.

    Denetleyici arduino uno yeni başlayanların rahatlığı için, zaten direnci ve konektörün 13. pimine bağlı bir LED'i var, bu nedenle ilk deneyde herhangi bir harici radyo elemanına ihtiyacımız yok.


    Arduino, kodu yükleyerek programımızın sistemin başlatılmasına katılmasına izin verir. Bunu yapmak için, mikrodenetleyiciye ilk önyükleme sırasında yürüteceği komutları belirtiriz ve sonra bunları tamamen unuturuz (yani, bu komutlar Arduino tarafından başlangıçta yalnızca bir kez yürütülür). Ve bu amaçla, kodumuzda bu komutların saklandığı bir blok tahsis ediyoruz. geçersiz kurulum() veya daha doğrusu bu fonksiyonun kaşlı ayraçları içindeki o boşlukta, programlama taslağına bakın.

    Kıvırcık parantezleri unutma! Bir tanesini bile kaybetmek, tüm taslağı tamamen işlevsiz hale getirecektir. Ancak fazladan köşeli parantezler de koymayın çünkü bir hata da oluşacaktır.

    Kod indirme:
    001-1_mig-led.ino dosyasındaki yorumlar ve açıklamalarla eskiz

    İşlev boşluk döngüsü() Burası, Arduino açık olduğu sürece çalışacak komutları koyduğumuz yerdir. Yürütmeye ilk komuttan başlayarak, Arduino en sona ulaşacak ve aynı sırayı tekrarlamak için hemen başa atlayacaktır. Ve yönetim kurulu güç aldığı sürece sonsuz sayıda. Özünde, boşluk döngüsü ana işlevdir, Arduino'ya giriş noktasıdır.


    İşlev gecikme(1000), program işlemeyi 1000 milisaniye geciktirir. Bütün bunlar sonsuz bir döngü içinde gider döngü().

    Arduino'daki ilk programımızın algılanmasından sonraki ana sonuç: Void loop ve void setup fonksiyonları yardımıyla komutlarımızı mikrodenetleyiciye iletiyoruz. Kurulum bloğu içindeki her şey yalnızca bir kez yürütülür. Döngü modülünün içeriği, Arduino açık kaldığı sürece bir döngüde tekrarlanacaktır.

    Bir önceki programda LED'in açılıp kapanması arasında bir saniyelik bir gecikme vardı. Yukarıda kullanılan acemi arduinistin en basit kodunda büyük bir eksi vardı. LED'in açılıp kapanması arasındaki duraklamayı bir saniye içinde tutmak için işlevi uyguladık gecikme() ve bu nedenle, o anda kontrolör, ana işlevdeki diğer komutları yürütemez. döngü(). İşlevdeki kodun düzeltilmesi döngü() aşağıda sunulan bu sorunu çözer.

    Değeri YÜKSEK ve ardından DÜŞÜK olarak ayarlamak yerine ledPin değerini alıp ters çeviriyoruz. Varsayalım ki YÜKSEK ise, o zaman DÜŞÜK olacaktır, vb.

    Saniye led'i kontrol etmek için arduino kod varyantı Burada:

    Ardından işlevi değiştirebilirsiniz gecikme(). Bunun yerine, işlevi kullanmak daha iyidir milis(). Programın başlamasından bu yana geçen milisaniye sayısını döndürür. İşlev, kodu çalıştırdıktan yaklaşık 50 gün sonra taşacaktır.

    Benzer bir fonksiyon mikro (), kodun çalıştırılmasından bu yana geçen mikrosaniye sayısını döndürür. Program çalıştırıldıktan 70 dakika sonra fonksiyon sıfıra dönecektir.

    Elbette bu, eskizimize birkaç satır kod ekleyecektir, ancak kesinlikle sizi daha deneyimli bir programcı yapacak ve Arduino'nuzun potansiyelini artıracaktır. Bunu yapmak için, milis işlevini nasıl kullanacağınızı öğrenmeniz yeterlidir.

    Açıkça anlaşılmalıdır ki en basit fonksiyon gecikme, tüm Arduino programının yürütülmesini duraklatır ve bu süre zarfında herhangi bir görevi yerine getiremez hale getirir. Tüm programlarımızı duraklatmak yerine, eylemin tamamlanmasına kadar ne kadar zaman geçtiğini sayabiliriz. Bu güzel bir şekilde millis() işlevi kullanılarak uygulanır. Her şeyin anlaşılmasını kolaylaştırmak için, bir LED'in zaman gecikmesi olmadan yanıp sönmesi için aşağıdaki seçeneği ele alacağız.

    Bu programın başlangıcı, diğer herhangi bir standart Arduino taslağı ile aynıdır.


    Bu örnek, iki Arduino dijital G/Ç kullanır. LED, ÇIKIŞ olarak yapılandırılan pim 8'e bağlanır. GİRİŞ olarak yapılandırılan 9'a bir düğme bağlanır. Butona bastığımızda pin 9 HIGH yapılır ve program pin 8'i HIGH yaparak LED'i yakar. Düğmenin bırakılması, dokuzuncu çıkışı DÜŞÜK durumuna sıfırlar. Kod daha sonra pim 8'i DÜŞÜK konuma getirerek gösterge ışığını kapatır.

    Beş LED'i kontrol etmek için Arduino portları ile çeşitli manipülasyonlar kullanacağız. Bunu yapmak için doğrudan Arduino bağlantı noktalarına veri yazacağız, bu, LED'lerin değerlerini tek bir işlev kullanarak ayarlamanıza izin verecektir.

    Arduino UNO'nun üç bağlantı noktası vardır: B(dijital girişler/çıkışlar 8 ila 13); C(analog girişler); D(Dijital G/Ç'ler 0 ila 7)

    Her bağlantı noktası üç kaydı kontrol eder. İlk DDR ne olacağını belirtir pin girişi veya çıkış. İkinci PORT kaydının yardımıyla pini HIGH veya LOW durumuna ayarlayabilirsiniz. Üçüncünün yardımıyla, eğer bir girdi olarak çalışıyorlarsa, Arduino bacaklarının durumu hakkında bilgi okuyabilirsiniz.

    Devrenin çalışması için port B'yi kullanacağız. Bunun için portun tüm pinlerini dijital çıkış olarak ayarlayın. B portunun toplamda 6 pini vardır. DDRB kayıt bitleri ayarlanmalıdır. "1" pim bir ÇIKIŞ olarak kullanılacaksa ve "0" pini giriş (INPUT) olarak kullanmayı planlıyorsak. Bağlantı noktası bitleri 0'dan 7'ye kadar numaralandırılmıştır, ancak her zaman 8 pimin tamamına sahip değildir.

    Diyelimki: DDRB = B00111110;// port B pinlerini 1 ila 5 çıkış olarak ve 0 giriş olarak ayarlayın.

    Çalışan ışıklar devremizde beş çıkış kullanıyoruz: DDRB = B00011111; // port B pinlerini 0 ila 4 çıkış olarak ayarlayın.

    B bağlantı noktasına veri yazmak için PORTB kaydını kullanmanız gerekir. Kontrol komutunu kullanarak ilk LED'i yakabilirsiniz: PORTB=B00000001;, birinci ve dördüncü LED: PORTB=B00001001 ve benzeri

    İki ikili kaydırma operatörü vardır: sol ve sağ. Sola kaydırma operatörü, tüm veri bitlerinin sırasıyla sola hareket etmesine neden olur, sağa kaydırma operatörü bunları sağa taşır.

    Örnek:

    varA = 1; // 00000001
    varA = 1 varA = 1 varA = 1

    Şimdi programımızın kaynak koduna dönelim. İki değişkeni tanıtmamız gerekiyor: yukarı aşağı nereye taşınacağı - yukarı veya aşağı ve saniye değerlerini içerecektir saylon hangi Led'in yanacağını gösterecektir.

    Yapısal olarak, böyle bir LED'in bir tane vardır genel sonuç ve her renk için üç pim. Aşağıda, bir RGB LED'i ortak bir katot ile bir Arduino kartına bağlamanın bir şeması bulunmaktadır. Bağlantı devresinde kullanılan tüm dirençler 220-270 ohm arasında aynı değerde olmalıdır.


    Ortak bir katot ile bağlantı kurmak için, üç renkli bir led için bağlantı şeması, ortak pimin toprağa (cihazdaki topraklama) değil, +5 volt terminaline bağlanması dışında hemen hemen aynı olacaktır. Kırmızı, yeşil ve mavi çıkışlar her iki durumda da kontrolör 9, 10 ve 11'in dijital çıkışlarına bağlıdır.

    Arduino UNO'nun dokuzuncu pimine 220 ohm'luk bir dirençle harici bir LED bağlayın. İkincisinin parlaklığını sorunsuz bir şekilde kontrol etmek için işlevi kullanıyoruz analogYazma(). Denetleyici bacağına bir PWM sinyal çıkışı sağlar. Ve takım pinMode() aramak gerekli değildir. Çünkü analogWrite(pin,değer) iki parametre içerir: pin - çıkış için pin numarası, değer - 0 ila 255 arası değer.

    kod:
    /*
    Yeni başlayan bir arduino için bir eğitim örneği, LED'in Fade efektini uygulamak için analogWrite () komutunun olanaklarını ortaya koymaktadır.
    */
    int parlaklık = 0; // LED parlaklığı
    int fadeAmount = 5; // parlaklık adımı
    imzasız uzun akımZaman;
    işaretsiz uzun loopTime;

    geçersiz kurulum() (
    pinMode(9, ÇIKIŞ); // pin 9'u çıkış olarak ayarla
    currentTime = millis();
    döngüZaman = akımZaman;
    }

    geçersiz döngü() (
    currentTime = millis();
    if(currentTime >= (döngüSüresi + 20))(
    analogWrite(9, parlaklık); // pin 9'da değeri ayarla

    Parlaklık = parlaklık + fadeAmount; // bir sonraki döngüde ayarlanacak olan parlaklığı değiştirmek için bir adım ekleyin

    // eğer min. veya maks. değerler, sonra ters yönde (geri) gideriz:
    if (parlaklık == 0 || parlaklık == 255) (
    fadeAmount = -fadeAmount ;
    }
    döngüZaman = akımZaman;
    }
    }

    Arduino'yu bir kodlayıcı ile çalışmak

    Kodlayıcı, dönüş açısını şuna dönüştürmek için tasarlanmıştır: elektrik sinyali. Ondan fazda zıt olan iki sinyal (A ve B) alıyoruz. Bu eğitimde, devir başına on iki konuma sahip olan (her konum tam olarak 30°'dir) SparkFun COM-09117 kodlayıcıyı kullanacağız. Aşağıdaki şekil, kodlayıcı saat yönünde veya saat yönünün tersine hareket ettiğinde A ve B çıkışının birbirine nasıl bağlı olduğunu açıkça göstermektedir.

    A sinyali pozitiften sıfıra giderse, B çıkışının değerini okuruz. O anda B çıkışı pozitif durumdaysa, enkoder saat yönünde hareket eder, B bir sıfır seviyesi verirse, enkoder içeri doğru hareket eder. karşı yön. Her iki çıkışı da okuyarak bir mikrodenetleyici yardımıyla dönüş yönünü, enkoderin A çıkışından gelen darbeleri sayarak dönüş açısını hesaplayabiliyoruz.

    Gerekirse, kodlayıcının ne kadar hızlı döndüğünü belirlemek için frekans hesaplamasını kullanabilirsiniz.

    Eğitimimizdeki kodlayıcıyı kullanarak, PWM çıkışını kullanarak LED'in parlaklığını kontrol edeceğiz. Kodlayıcıdan veri okumak için, daha önce tartıştığımız yazılım zamanlayıcılarına dayalı bir yöntem kullanacağız.

    En hızlı durumda enkoder düğmesini saniyenin 1/10'unda 180° çevirebileceğimizi düşünürsek, bu 1/10 saniye içinde 6 darbe veya 1 saniyede 60 darbe olacaktır.

    Gerçekte, daha hızlı döndürmek mümkün değildir. Tüm yarım döngüleri takip etmemiz gerektiğinden, frekansın 120 Hertz civarında olması gerekir. Tamamen emin olmak için 200 Hz alalım.

    Bu durumda mekanik bir kodlayıcı kullandığımızdan, kontak sekmesi mümkündür ve düşük frekanslı böyle bir sıçramayı mükemmel bir şekilde filtreler.


    Yazılım zamanlayıcı sinyallerine göre enkoderin A çıkışının mevcut değerini bir önceki değerle sürekli olarak karşılaştırmak gerekir. Durum pozitiften sıfıra değişirse, B çıkışının durumunu yoklarız. Durum yoklamasının sonucuna bağlı olarak, parlaklık değeri sayacını artırır veya azaltırız. NEDEN OLMUŞ. Yaklaşık 5 ms (200 Hz) zaman aralığına sahip program kodu aşağıda gösterilmiştir:

    Arduino başlangıç ​​kodu:
    /*
    ** Kodlayıcı
    ** LED'in parlaklığını kontrol etmek için Sparkfun'dan bir kodlayıcı kullanılır
    */

    int parlaklık = 120; // LED parlaklığı, yarıdan başlayarak
    int fadeAmount = 10; // parlaklık adımı
    imzasız uzun akımZaman;
    işaretsiz uzun loopTime;
    sabit int pin_A = 12; // pim 12
    sabit int pin_B = 11; // pim 11
    imzasız karakter kodlayıcı_A;
    işaretsiz karakter kodlayıcı_B;
    imzasız karakter kodlayıcı_A_prev=0;
    geçersiz kurulum()(
    // pin 9'u bir çıkış olarak ilan edin:
    pinMode(9, ÇIKIŞ); // pin 9'u çıkış olarak ayarla
    pinMode(pin_A, GİRİŞ);
    pinMode(pin_B, GİRİŞ);
    currentTime = millis();
    döngüZaman = akımZaman;
    }
    geçersiz döngü() (
    currentTime = millis();
    if(currentTime >= (loopTime + 5))( // her 5ms'de bir durumları kontrol edin (frekans 200Hz)
    kodlayıcı_A = digitalRead(pin_A); // enkoder çıkışı A durumunu oku
    kodlayıcı_B = digitalRead(pin_B); // enkoder çıkışı B
    if((!encoder_A) && (encoder_A_prev)( // durum pozitiften sıfıra değişirse
    eğer(kodlayıcı_B) (
    // çıkış B pozitif, dolayısıyla dönüş saat yönünde
    // ışımanın parlaklığını 255'ten fazla olmayacak şekilde artırın
    if(parlaklık + fadeAmount )
    başka(
    // çıkış B sıfır durumundadır, bu nedenle dönüş saat yönünün tersinedir
    // parlaklığı azalt, ancak sıfırın altına düşürme
    if(parlaklık - fadeAmount >= 0) parlaklık -= fadeAmount;
    }

    }
    kodlayıcı_A_prev = kodlayıcı_A; // sonraki döngü için A'nın değerini kaydet

    analogWrite(9, parlaklık); // parlaklığı dokuzuncu pine ayarla

    DöngüSüresi = geçerliZaman;
    }
    }

    Bu başlangıç ​​örneğinde, ses üretmek için bir piezo buzzer ile çalışmaya bakacağız. Bunu yapmak için, oluşturmanıza izin veren bir piezoelektrik sensör alın. ses dalgaları 20 Hz - 20 kHz frekans aralığında.

    Bu, ses boyunca LED'lerin yerleştirildiği amatör bir radyo tasarımıdır. Bu şema ile çeşitli aydınlatma ve animasyon efektleri oluşturabilirsiniz. Karmaşık şemalar hatta çeşitli üç boyutlu kelimeleri gösterme yeteneğine sahiptir. Başka bir deyişle, bu temel bir surround monitördür.

    Servo, çeşitli radyo kontrollü modellerin yapımında ana unsurdur ve kontrolör ile kontrolü basit ve kullanışlıdır.


    Kontrol programı basit ve sezgiseldir. Servoyu kontrol etmek için gerekli tüm komutları içeren bir dosyanın bağlanmasıyla başlar. Sonra, servoMain gibi bir servo nesnesi yaratıyoruz. sonraki işlev servonun kontrolörün dokuzuncu çıkışına bağlı olduğunu belirttiğimiz setup().

    kod:
    /*
    arduino servosu
    */
    #katmak
    Servo ana; // Servo Nesnesi

    geçersiz kurulum()
    {
    servoMain.attach(9); // Servo pin 9'a bağlı
    }

    Boşluk döngüsü()
    {
    servoMain.write(45); // Servoyu 45° sola döndür
    gecikme(2000); // 2000 milisaniye (2 saniye) bekleyin
    servoMain.write(0); // Servoyu 0° sola döndür
    gecikme(1000); // 1 sn duraklat.

    gecikme(1500); // 1,5 saniye bekleyin.
    servoMain.write(135); // Servoyu 135° sağa döndür
    gecikme(3000); // 3 saniye duraklat
    servoMain.write(180); // Servoyu 180° sağa döndür
    gecikme(1000); // 1 saniye bekleyin.
    servoMain.write(90); // Servoyu 90° döndürün. orta konum
    gecikme(5000); // 5 saniye duraklat
    }

    ana işlevde döngü(), aralarında duraklamalar olacak şekilde servo motora komutlar veriyoruz.

    7 segmentli bir göstergede Arduino sayaç devresi

    Yeni başlayanlar için bu basit Arduino projesi, ortak bir katot 7-segment ekranda bir sayaç devresi oluşturmaktır. Program kodu, aşağıdaki düğmeyi tıkladığınızda 0'dan 9'a kadar saymaya başlamanızı sağlar.

    Yedi segmentli gösterge - ortak bir katot ile 8 LED'in (noktadan sonuncusu sorumludur) birleşimidir ve sayıları oluşturmak için istenen sırayla açılabilir. Bu devrede, aşağıdaki şekle bakın, pin 3 ve 8'in katot için ayrıldığına dikkat edilmelidir.


    Sağda Arduino pinleri ile LED gösterge pinleri arasındaki eşlemeyi gösteren bir tablo var.

    Bu proje için kod:

    bayt sayıları = (
    B11111100, B01100000, B11011010, B11110010, B01100110,
    B10110110, B10111110, B11100000, B11111110, B11100110
    };
    geçersiz kurulum()(
    for(int i = 2; i pinMode(i, OUTPUT);
    }
    pinMode(9, GİRİŞ);
    }
    int sayacı = 0;
    bool go_by_switch = doğru;
    int last_input_value = DÜŞÜK;
    geçersiz döngü() (
    if(go_by_switch) (
    int switch_input_value = digitalRead(9);
    if(last_input_value == DÜŞÜK && switch_input_value == YÜKSEK) (

    }
    last_input_value = switch_input_value;
    ) başka (
    gecikme(500);
    sayaç = (sayaç + 1) % 10;
    }
    sayı yaz(sayaç);
    }

    Void writeNumber(int sayı) (
    eğer(9 numara) (
    geri dönmek;
    }
    bayt maskesi = sayılar;
    bayt akımıPinMask = B10000000;
    for(int i = 2; i if(maske & currentPinMask) digitalWrite(i,HIGH);
    başka digitalWrite(i,LOW);
    currentPinMask = currentPinMask >> 1;
    }
    }

    Arduino kartlarının potansiyelini önemli ölçüde artırabilirsiniz. ek modüller, hemen hemen her cihazın PIN pinlerine bağlanabilir. En popüler ve ilginç genişletme modüllerini veya aynı zamanda kalkanları da düşünün.