Arduino düşük seviye programlama. Arduino programlama dili

  • 21.09.2019

Arduino'da ustalaşmak için çalışmaya başlamanız gereken ilk şey, bir hata ayıklama kartı satın almaktır (hemen bir devre kartı vb. satın almak güzel olurdu). Piyasada ne tür Arduino kartları olduğunu zaten açıkladım. Yazıyı henüz okumadıysanız okumanızı tavsiye ederim. Temel bilgileri öğrenmek için standart bir Arduino Uno kartı seçiyoruz (orijinal veya iyi bir Çince kopyası size kalmış). Orijinal kartı ilk bağladığınızda, herhangi bir sorun olmamalıdır, ancak "Çince" ile biraz kazmanız gerekecek (endişelenme - her şeyi göstereceğim ve anlatacağım).

Arduino'yu USB kablosuyla bilgisayara bağlayın. Kart üzerindeki LED yanmalıdır. ÜZERİNDE". Cihaz yöneticisinde yeni bir cihaz görünecek bilinmeyen aygıt". Bir sürücü yüklemeniz gerekiyor. Burada küçük bir ekleyeceğim belirsizlik(kedi dikkati dağıttı - hangi sürücülerin karar verdiğini hatırlamadım " bilinmeyen cihaz sorunu».

Arduino yazılımını daha önce indirip paketinden çıkardınız ( arduino-1.6.6-pencereler). Sonra bunu indirdi. Kendinden çıkarmadır. dosyayı başlattı CH341SER.EXE. seçti kurulum (KURULUM). Kurulumdan sonra bir mesaj belirdi, tıklandı " Tamam(Okumaya vaktim olmadı).

Hala “bilinmeyen aygıtın” özelliklerine gittikten ve “Sürücüyü Güncelle” düğmesini seçtikten sonra. "Listeden veya belirtilen konumdan yükle" seçeneğini seçtim - sıkıştırılmamış Arduino yazılım ortamının bulunduğu klasörü belirttim. Ve bakalım - her şey yolunda gitti ...

Arduino programını başlatıyoruz (benim durumumda 1.6.6) ve erişime izin veriyoruz.

Arduino için tüm projeler (programlar) iki bölümden oluşur: geçersiz kurulum Ve boşluk döngüsü. geçersiz kurulum sadece bir kez yürütüldü, boşluk döngüsü tekrar tekrar gerçekleştirildi.

Devam etmeden önce tamamlamamız gereken iki adım var:

- Arduino yazılım ortamında hangi kartı kullandığınızı belirtin. Araç->tahta->Arduino Uno. İşaret zaten tahtadaysa, ihtiyacınız olan - bu iyi, değilse - bir işaret koyun.

- kartla iletişim kurmak için hangi seri bağlantı noktasını kullandığınızı yazılım ortamında belirtin. Araç->bağlantı noktası->COM3. İşaret zaten limandaysa - bu iyi, değilse - bir işaret koyun. Eğer portlar kısmında birden fazla port varsa karta bağlanmak için hangisinin kullanıldığını nasıl anlarsınız? Tahtayı alıyoruz ve kabloyu ondan ayırıyoruz. Yine limanlara gidiyoruz ve hangisinin kaybolduğunu görüyoruz. Benim durumumda, "bağlantı noktaları" sekmesi hiç etkin olmadı.

USB kablosunu yeniden bağlayın.

İlk program için ek modüllere gerek yoktur. Kart üzerine monte edilmiş olan LED'i açacağız (mikrodenetleyicinin 13. çıkışında).

İlk olarak pin 13'ü (giriş veya çıkış için) yapılandıralım.

Bunu yapmak için bloğa girin " geçersiz kurulum" emretmek pinMode , parantez içinde parametreleri belirtin (13,ÇIKTI) (Hangi çıkış dahil, Çalışma modu). Yazılım ortamı, kelimeleri/komutları uygun yazı tipi renginde vurgular.

bloğa git boşluk döngüsü"ve komutu girin dijitalWrite parametrelerle (13, YÜKSEK) .


İlk program hazır, şimdi mikrodenetleyiciye indirmeye devam ediyor. YÜKLE düğmesine basın.

LED yandı. Ancak ilk programın basitliği konusunda bu kadar şüpheci olmayın. Az önce ilk kontrol komutunda ustalaştınız. Sonuçta, bir LED yerine, herhangi bir yükü bağlayabilirsiniz (bir odadaki aydınlatma veya su kaynağını kapatan bir servo olsun), ancak bunların hepsini daha sonra konuşacağız ...

LED'i açtık, biraz parladı, kapatma zamanı. Bunun için yazdığımız programı modifiye ediyoruz. Onun yerine " YÜKSEK " yazı yazmak " DÜŞÜK ».


YÜKLE düğmesine basın. LED kapalı.

"" kavramıyla zaten tanıştık, onu kullanma zamanı. Diğer programlar daha büyük ve daha karmaşık hale gelecek ve bu kod yazma stilini terk edersek, onları değiştirme işi giderek daha fazla zaman alacak.

Programa bakıyoruz (LED'i tekrar açın). Mikrodenetleyici pin numarasını sayı değil ayarlayalım 13 , ancak ilgili çıktının değeri atanacak bir değişken (bizim durumumuzda, 13). Gelecekte, değerleri değiştirmeniz gereken yerleri aramak için kodu karıştırmak yerine, programın başında değişkenlerin değerlerini değiştirmek çok uygun olacaktır.

Genel bir değişken oluşturun int LED_pin = 13; (değişken türü, değişken adı, kendisine atanan değer).


YÜKLE düğmesine basın. LED yanar. Her şey mükemmel çalışıyor.

Bu dersimizde LED'i açıp kapatmanın yanı sıra nasıl yanıp söneceğini de öğreneceğiz.

Bunu yapmak için ikinci komutu girin " dijitalWrite» parametrelerle (LED pimi, DÜŞÜK).


YÜKLE düğmesine basın. Ve ne görüyoruz? LED "yetki katında" parlıyor. Bunun nedeni, iki durumun anahtarlama süresinin ( YÜKSEK Ve DÜŞÜK ) ihmal edilebilir düzeydedir ve insan gözü bu geçişleri algılayamaz. Durumlardan birinde LED'in harcadığı süreyi artırmak gerekir. Bunun için şu komutu yazıyoruz. gecikme parametreli (1000 ) . Milisaniye cinsinden gecikme: 1000 milisaniye - 1 saniye. Program algoritması aşağıdaki gibidir: LED'i açın - 1 saniye bekleyin, LED'i kapatın - 1 saniye bekleyin, vb.


YÜKLE düğmesine basın. LED titremeye başladı. Herşey çalışıyor.

Gecikme süresinden sorumlu bir değer atanacak bir değişken oluşturarak programı sonlandıralım.


YÜKLE düğmesine basın. LED titrerken titrer.

Yazmış olduğumuz programı sonlandıralım. Görevler şunlardır:

  • LED 0,2 saniye açık ve 0,8 saniye kapalı;
  • LED 0,7 saniye açık ve 0,3 saniye kapalı.

Programın zaman gecikmelerinden sorumlu 2 değişkeni vardır. Biri LED'in açık olduğu zamanı, ikincisi ise LED'in kapalı olduğu zamanı belirler.

Dikkatiniz için teşekkürler. Yakında görüşürüz!

Arduino aslında tüm durumlar için benzersiz projelerin geliştirilmesidir. Daha önce de yazdığım gibi Arduino, üzerine mikrodenetleyici yerleştirilmiş, sorunsuz programlanabilen bir tür karttır.

Bu manipülasyonların nihai amacı, sayısız işlemin kolay kontrolünü sağlamaktır. harici cihazlar. Bu pano, dış dünya ile birçok ekleme yoluyla etkileşime girer:

  • sensörler,
  • ledler,
  • motorlar,
  • internet
  • vb.

Bu, onu çeşitli seviyelerdeki birçok proje için oldukça çok yönlü bir platform haline getirecektir. Şu anda, Arduino'nun özellikle popüler olduğu, en inanılmaz projelerin ve ağdaki gelişmelerin aktif olarak yerleştirilmesiyle ilişkili oldukça fazla farklı mikrodenetleyici var.

Milyonlarca fikirden birini kolayca uygulamak için birçok sitede bağımsız olarak bulunan en güncel bilgileri rahatlıkla kullanabilirsiniz. Aşağıda, bu fikirlerden birinin uygulanmasına bir örnek verilmiştir - kontrol edilebilen bir Noel zili:

Nasıl yapılır, aşağıdaki derslerden birinde analiz edeceğiz.

Mikrodenetleyiciler (programlama ve ayarlar) konusunda en ufak bir deneyiminiz olmasa bile, özellikler sayesinde nispeten kısa deneyler yaparak kendi başınıza kolayca öğrenebilirsiniz. Aşağıda sadece Arduino'nun bazı yeteneklerini analiz etmeyi öneriyorum, bu benzersiz kurucuyu kullanmanın en iyi olduğu yerlerin örnekleri.

Arduino Eskizleri

Aslında, bu tür bir mikrodenetleyici için program denir. kroki. Bu tür herhangi bir program doğrudan iki ana işlevden oluşur.

Kurmak

Setup() - bu fonksiyon içinde kullanıcının tüm temel ayarları yapabilmesi sağlanır.

Örneğin, gelecekte hangi çıktıların çıktı veya girdi olarak çalışacağı belirlenir, belirli kütüphanelerin bağlantısı belirlenir, hatta değişkenler başlatılır, tüm bunlar bu işlevsellik kullanılarak belirlenir.

Lansman, bu programın yürütülmesinin başlangıcı işaretlendiğinde, tüm taslak boyunca kesinlikle bir kez gerçekleştirilir.

döngü

Döngü() - başlatmadan hemen sonra gerçekleştirilen ana işlevdir (sadece bu durumda kullanılır kurmak()).

Aslında bu programın kendisidir, bu işlev kullanıcı cihazın gücünü kapatana kadar sonsuz bir modda yürütülecektir.

Çizim örnekleri

Ekipmanın sonraki çalışması için bir rehber olacak bazı eskiz örneklerini düşünebilirsiniz. Aşağıdaki materyallerde örneklerin her birini uygulamaya çalışacağım. Bugün sadece olasılıklardan bahsedeceğiz.

örnek 1

İlginç çizimlerden biri, kontrolörün tam çalışma süresini görüntülemektir, ayrıca “yanıp sönme” komutunu kabul ederek, LED elemanlarının yanıp sönme prosedürünü başlatmak için sağlanır.

Aslında, taslakta özellikle yararlı olan hiçbir şey yoktur, ancak aynı zamanda belirli bir “Alınan Veriler” ifadesini rastgele gösterme olasılığını da düzenler, daha sonra doğrudan modüler bir elemanın çalışması için belirlenmiş kuralları test etmek ve analiz etmek için kullanılabilir.

Örnek 2

Özel bir bağlantı mevcut su seviye sensörü, yağmur sensörü. Belirli bir projeyi uygulamak için şunlara sahip olmalısınız:

Su sensörünün kendisi,
- Arduino denetleyicisi,
- bir dizi bağlantı kablosu,
- Kablolu bilgisayar ve IDE programı, uygun devre tahtası.

Sonuç olarak, mikrodenetleyicinin nispeten basit ayarı nedeniyle, sensörün çalışması için en uygun koşulların oluşturulması sağlanır.

Örnek 3

olasılığına özel dikkat gösterilmelidir. karakter çıkışı, ekipmanın durumu üzerinde en kolay ve en güvenilir kontrolü sağlayacak olan LCD5110'a yazı tiplerinin müteakip kurulumu.

Fontların çıktısı ve değiştirilmesi Arduino'nun yetenekleri kullanılarak gerçekleştirilir. Bu durumda, kaynak kodunun yanı sıra hazır bir veri kitaplığı kullanmanız gerekecektir.

Arduino kullanma örnekleri

Arduino'nun sayısız örneği göz önüne alındığında, proje geliştiricilerin yaratıcı yaklaşımına ve olağanüstü hayal gücüne ancak şaşırabilirsiniz. Aslında, en inanılmaz şeyleri yaratabilirsiniz, örneğin, aynı bir dizi LED'li müzik çalar.

Böyle bir gelişme, müzik severler tarafından çok beğenilecek ve yalnızca orijinal bir film müziği yaratmanıza değil, aynı zamanda size parlak, olağanüstü bir renk kombinasyonunun keyfini çıkarma fırsatı da verecek.

Kediler gibi evcil hayvanlar bile projeleri değerlendirebilecek. nedeni olacak otomatik kedi besleyici, örneğin, sadece değil, geleneksel bir CD çalar temelinde geliştirilebilir.

Bu ekipmanın avantajları arasında, hayvana ölçülü yem temini olasılığına dikkat edilmelidir, artık kasedeki yiyecek miktarını düzenli olarak kontrol etmeye gerek yoktur. Açılış saati belirlenir, bundan sonra kedi, sahibinin orijinal fikrinin tadını çıkararak, belirlenen programa göre kesinlikle besleyici yiyecekler alır.

Tamamen sıra dışı projelerden bahsedersek, vurgulayabiliriz. otomatik çiçek ekipmanları, artık mevcut durumu hakkında bilgileri doğrudan Twitter'a gönderebilecek. Bütün bunlar, bunun için doğrudan bir İnternet bağlantısı kullanarak veri aktarmanıza izin verecek olan Arduino mikro denetleyicisinin yetenekleri kullanılarak yapılır. Gördüğünüz gibi örnekler çok farklı olabilir, ilerleyen yazılarda her birine dikkat etmeye çalışacağım.

Arduino, çeşitli cihazlar, ilginç araçlar ve hatta bilgi işlem platformları oluşturmak için kullanılan küçük bir tahtadır. Açık kaynak kodlu ve birçok uygulamanın birlikte kullanılabileceği bu karta mikrodenetleyici denir.

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 ne işe yaradığına, 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 panosudur. Buna dayanarak, robotlar veya dronlar gibi karmaşık emek yoğun projelerin yanı sıra basit devrelere sahip cihazlar oluşturabilirsiniz.

Tasarımcının temeli, giriş-çıkış kartı (donanım kısmı) ve yazılım kısmıdır. Arduino tabanlı yapıcı 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ındaki ek bir başarı faktörü, gerekli parçalar (dirençler, diyotlar, transistörler vb.) denetleyiciye lehimlemeye gerek kalmadan bağlandığında bir breadboard ile çalışabilmesiydi.

Çoğu Arduino kartı bir USB kablosuyla bağlanır. Böyle bir bağlantı, panoya güç sağlamanıza ve eskizleri indirmenize, yani. mini programlar. Programlama süreci de son derece basittir. Öncelikle kullanıcı gerekli programı oluşturmak için IDE kod düzenleyicisini kullanır, ardından Arduino'ya tek tıklama ile yüklenir.

Arduino'yu nasıl satın alabilirim?

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-set denilen tasarımcı veya kitlerin ayrı bileşenleri var.

İç piyasada bir analog satın alabilir veya örneğin Çin'den sipariş verebilirsiniz. Örneğin, birçok kişi Aliexpress web sitesini biliyor. Ancak Arduino ile tanışmaya başlayanlar için, ilk tahtalarını bir Rus çevrimiçi mağazasında 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;
  • jumperlar;
  • matris klavye;
  • genişleme panoları;
  • kapasitörler.

Programlama bilmem gerekiyor mu?

Arduino kartı ile çalışmanın ilk adımları, kartı programlamakla 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 birçok eskiz örneği vardır.

Program derlendikten sonra tahtaya 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'ya yeni başlayanların iki temel özelliği bilmesi gerekir:

  • kurmak()– kart 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.

Fonksiyon 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şında 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 mikro denetleyicisi (çoğu Arduino kartı içerir), döngü işlevini saniyede yaklaşık 10.000 kez yürütür.

Ayrıca ek özelliklerle karşılaşacaksınız:

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

Buna ek olarak, Arduino'ya yeni başlayanlar, kartı veya ek modülleri kontrol etmenizi sağlayan işlev koleksiyonları olan panolar için birçok kitaplığın bulunmasını sevecektir. En popüler olanları şunlardır:

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

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ğinize dair üç önemli materyali okumanızı şiddetle tavsiye ederiz:

Arduino programının klasik kurulumu için algoritma şöyle görünür:

  • Aşağıdan veya üreticinin web sitesinden indirilebilen IDE kurulumu;
  • kullanılan bilgisayara yazılımın yüklenmesi;
  • Arduino dosyasını başlatmak;
  • geliştirilen programın kod penceresine girilmesi ve karta aktarılması (bir USB kablosu kullanılarak);
  • IDE bölümünde, kullanılacak yapıcı türünü 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 Posta kodu
yükleyici
yükleyici 32 bit
64 bit
1.8.2 Posta kodu
yükleyici
yükleyici 32 bit
64 bit
KOL
1.8.5 Posta kodu
yükleyici
Uygulama
yükleyici 32 bit
64 bit
KOL

bir el doldurma

Karmaşık fikirleri güvenle uygulamak, yazılım ortamını ve Arduino'yu kullanmak için yeni başlayanların “ellerini alması” gerekir. Bunu yapmak için daha kolay görev ve projelerle başlamanız önerilir.

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

Bunun için ihtiyacınız olan:

  • tasarımcıyı bilgisayara bağlayın,
  • programı açın, "servis" 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.

Arduino'da yeni başlayanlar için 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.

İlk proje

İşte geliyoruz ilk projemize. 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 saklamak için değişkenler boolean lastButton = LOW; boolean currentButton = DÜŞÜK; boolean ledOn = yanlış; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // debounce işlevi boolean debounse(boolean son) ( boolean current = digitalRead(switchPin); if(son != akım) ( gecikme (5 ); akım = digitalRead(switchPin); ) dönüş akımı; ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ;digitalWrite (ledPin, ledOn); )

Henüz hakkında yazmadığımız geri dönme işlevini fark etmiş olabilirsiniz. için gereklidir.

Tahtayla ç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 ilginç cihazları ve gadget'ları oluşturma adımlarını açıklayan bölümümüzden cihaz yapmaya başlamanızı öneririz.

Arduino'nun temel unsurlarıyla tanıştıktan ve “Merhaba Dünya!” programını yazdıktan sonra. programlama diline aşina olmanın zamanı geldi.

Dilin yapısı öncelikle C/C++'a dayanmaktadır, bu nedenle daha önce bu dilde programlama yapmış olanlar Arduino programlamada ustalaşmakta zorluk çekmeyecektir. Geri kalanlar, kontrol komutları, veri türleri ve işlevleri hakkında temel bilgileri öğrenmelidir.

Burada yer alan bilgilerin çoğu, veri türlerindeki farklılıklara ve ayrıca G/Ç bağlantı noktalarının programlanmasıyla ilgili birkaç özel yönergeye tabi olarak herhangi bir C/C++ kursuyla uyumlu olacaktır.

Temel bilgilerin temelleri

Birkaç resmi şey, yani herkesin bildiği ama bazen unuttuğu şeyler ...

Arduino IDE'de, C/C++'da olduğu gibi, karakter durumunun farkında olmanız gerekir. if, for gibi anahtar kelimeler her zaman küçük harfle yazılır. Her komut ";" ile biter. Noktalı virgül, derleyiciye hangi bölümün bir ifade olarak yorumlanacağını söyler.

Parantezler (..) program bloklarını belirtmek için kullanılır. Bunları bir işlevin gövdesini (aşağıya bakın), döngüleri ve koşullu ifadeleri sınırlamak için kullanırız.

Program içeriğine yorum eklemek iyi bir uygulamadır, bu, kodun anlaşılmasını kolaylaştırır. Tek satırlık yorumlar şununla başlar: // (çift eğik çizgi). Çok satırlı yorumlar şununla başlar: /* ve ile bitirmek */

Programımıza herhangi bir kütüphane eklemek istiyorsak, include komutunu kullanırız. Kitaplıkları bağlama örnekleri:

#Dahil etmek // standart kitaplık #include "svoya_biblioteka.h" // proje dizinindeki kitaplık

Arduino'daki Fonksiyonlar

Bir işlev (alt program), bir programın bazı işlemleri gerçekleştiren ayrı bir parçasıdır. Fonksiyonlar, ana programı basitleştirmek ve kod okunabilirliğini geliştirmek için kullanılır. Bir çok projemizde rahatlıkla kullanabildiğimiz için fonksiyonları kullanmakta fayda var.

Standart programlama kursu, aşağıdaki makalelerde sunacağımız fonksiyonlar hakkında bilgiler içerir. Arduino söz konusu olduğunda, en basit programın bile iki özel işlevi olması gerektiğinden, fonksiyonlar başlangıçta tartışılacaktır. Bu, önceki makalelerde zaten belirtilmişti, ancak burada bu bilgiyi sistematize ediyoruz.

fonksiyon bildirimi

İşlev bildirim şeması şöyle görünür:

fonksiyon_adı(parametre) yazın ( // yürütülecek komutlar (işlev gövdesi) dönüş (/* dönüş değeri*/); )

tip verilen programlama dilinde mevcut herhangi bir veri türünün adıdır. Arduino programlanırken kullanılabilen türlerin listesi ayrı bir makalede verilecektir.

Yürütmeden sonra, işlev bildirilen türün değerini döndürür. İşlev herhangi bir dönüş değeri kabul etmezse, veri türü "void" olacaktır.

fonksiyon adı benzersiz bir şekilde tanımlanmasını sağlar. Bir fonksiyonu çağırmak (çalıştırmak) için ona bir isim veriyoruz.

parametre— işlev çağrısı parametresi. Parametreler isteğe bağlıdır, ancak genellikle yararlıdır. Argümanı olmayan bir fonksiyon yazarsak parantezleri boş bırakırız.

Parantezlerin içinde "(...)", yürütmek istediğimiz işlevin veya talimatın gerçek gövdesini içerir. Özel talimatların açıklaması ayrı bir makalede belirtilecektir.

Bir değer döndüren tüm işlevler, bir dönüş ifadesi ve ardından bir dönüş değeri ile biter. Yalnızca boş gösterici ("void") ile bildirilen işlevler bir dönüş ifadesi içermez. Konumdan bağımsız olarak return ifadesinin işlevin yürütülmesini sonlandırdığını bilmeniz gerekir.

Aşağıda bazı fonksiyon bildirim örnekleri verilmiştir.

Void f1() ( //işlev gövdesi ) ————————————— int eksi() ( //işlev gövdesi dönüşü (0); ) ——————————— ——— int artı(int a, int b) ( dönüş (a+b); )

Örneklerden de görebileceğiniz gibi, bir işlev bildirimi, ihtiyaçlarınıza bağlı olarak birçok biçim alabilir.

Kendi programlarınızı yazarken fonksiyonları öğrenmenizi ve kullanmanızı şiddetle tavsiye ederiz. Zamanla, her programcının "tüm durumlar için" kendi işlev kitaplığı vardır, bu da yeni programlar yazmayı daha kolay ve daha hızlı hale getirir.

Artık kendi fonksiyonumuzu nasıl yazacağımızı bildiğimize göre, onu nasıl kullanacağımızı da öğrenmemiz gerekiyor.

işlev çağrısı

Tüm fonksiyonları tek bir dosyaya/programa yazıyoruz. Elbette daha zarif bir çözüm var, ancak bir dahaki sefere onu açıklamaya çalışacağız.

Bir fonksiyon bildirerek, onu uygun isim ve gerekli parametrelerle diğer fonksiyonlarda kullanabiliriz. Aşağıda yukarıda verdiğimiz fonksiyonları çağırma örnekleri verilmiştir:

F1(); artı(2,2); y=artı(1.5);

Örneklerde görebileceğiniz gibi, bir fonksiyonun çağrılması, adı ve gerekli parametre sayısı belirtilerek yapılır. Bir işlevi her zaman bildirimine göre çağırmak önemlidir.

f1() işlevi parametresiz olarak bildirilirse, çağrılırken hiçbir parametre belirtilemez, yani. f1(0) işlevini çağırmak yanlış olacaktır.

plus(int a, int b) işlevi tam olarak iki parametre gerektirir, bu nedenle bir veya üç parametre ile çağrı yapmak mümkün değildir.

y=plus(1,5)'in çağrılması, "1" ve "5" parametreleriyle "artı" fonksiyonunu çalıştıracak ve dönüş değerini "y" değişkeninde saklayacaktır.

setup() ve loop() fonksiyonları.

Bildirme ve çağırma fonksiyonları hakkında bilgi sahibi olarak Arduino sistem fonksiyonlarına geçebiliriz: kurmak() Ve döngü(). Arduino IDE, bu iki işlevi bildirmek için gereklidir.

setup(), güç açıldığında veya RESET düğmesine basıldığında otomatik olarak çağrılan bir fonksiyondur.

Adından da anlaşılacağı gibi, genellikle başlangıç ​​parametrelerinde verilen değişkenlerin başlangıç ​​değerlerini, sistemin giriş ve çıkış bildirimlerini ayarlamak için kullanılır. Özgünlüğü nedeniyle bu işlev bir değer döndürmez ve parametrelerle çağrılmaz. setup() fonksiyonunun doğru beyanı aşağıda verilmiştir:

Void setup() (//fonksiyon gövdesi - sistem başlatma)

loop(), sonsuz bir döngüde çağrılan bir fonksiyondur. Bu fonksiyon ayrıca bir değer döndürmez ve parametrelerle çağrılmaz. Aşağıdaki, loop() işlevinin doğru bildirimidir:

Void döngüsü () ( // fonksiyon gövdesi - program kodu )

Gördüğünüz gibi, loop() işlevinin bildirimi, setup() işlevinin bildirimi ile aynıdır. Fark, bu işlevlerin mikrodenetleyici tarafından performansında yatmaktadır.

Şimdi aşağıdaki sözde kodu analiz edeceğiz:

void setup () ( on_led1 (); // led1'i aç off_led1 (); // led1'i kapat) void döngüsü () ( on_led2 (); // led2'yi off_led2'yi aç (); // led2'yi kapat)

setup() fonksiyonunda iki komut vardır, ilki karta bağlı led1'i (örneğin pin 13) açar, ikincisi led1'i kapatır.

loop() işlevi, karta bağlı led2'yi açmak ve kapatmak için aynı talimatlara sahiptir (örn. pin 12).

Programın çalıştırılması sonucunda led1 bir kez yanıp sönecek, led2 ise Arduino açık olduğu sürece açılıp kapanacaktır.

RESET butonuna basmak led1'in bir kez daha yanıp sönmesine ve led2'nin tekrar yanıp sönmeye başlamasına neden olacaktır.

Özetle:

  • setup() ve loop() fonksiyonları, her projede tanımlanması gereken sistem fonksiyonlarıdır. Bunlardan birine herhangi bir kod yazmadığımız bir durumda bile, yine de bu iki işlevi bildirmemiz gerekiyor;
  • setup() işlevi bir kez çalışır, loop() sürekli çalışır;
  • Tek bir dosyada kendi fonksiyonlarımızı oluşturuyoruz;
  • Fonksiyonlarımızı hem setup() ve loop()'dan hem de diğer fonksiyonlardan çağırabiliriz;
  • Kendi fonksiyonlarımız parametrelerle çağrılabilir ve bir değer döndürebilir;
  • Bildirimine uygun olarak bir işlev çağrısı yapılmalıdır.

Mikrodenetleyicileri öğrenmek karmaşık ve anlaşılmaz bir şey gibi görünüyor? Arudino'nun ortaya çıkmasından önce, gerçekten kolay değildi ve belirli bir dizi programcı ve diğer ekipman gerektiriyordu.

Bu bir tür elektronik tasarımcı. Projenin ilk amacı, insanların elektronik parçaya minimum zaman ayırırken, elektronik cihazların nasıl programlanacağını kolayca öğrenmelerini sağlamaktır.

En karmaşık devrelerin montajı ve panoların bağlantısı, bir havya olmadan, ancak çıkarılabilir erkek ve dişi bağlantılara sahip jumperların yardımıyla gerçekleştirilebilir. Bu şekilde, arduinoschikov sözlüğünde basitçe "Kalkanlar" (kalkan) olarak adlandırılan hem ekler hem de genişletme kartları bağlanabilir.

Yeni başlayanlar için satın alınan ilk Arduino kartı nedir?

Temel ve en popüler tahta olarak kabul edilir. Bu ücret yaklaşık bir kredi kartı büyüklüğündedir. Oldukça büyük. Satışta olan çoğu kalkan onunla mükemmel uyum sağlar. Kart üzerinde harici cihazları bağlamak için prizler bulunmaktadır.

2017 yılı için yurtiçi mağazalarda fiyatı 4-5 dolar civarında. Modern modellerde kalbi Atmega328'dir.

Arduino kartının görüntüsü ve her bir pinin işlevlerinin kodunun çözülmesi, Arduino UNO pin çıkışı

Bu karttaki mikrodenetleyici, DIP28 paketindeki uzun bir çiptir, yani 28 pinlidir.

Bir sonraki en popüler tahta, öncekinden neredeyse iki kat daha ucuza mal oluyor - 2-3 dolar. Bu bir ücrettir. Mevcut kartlar aynı Atmega328 üzerine inşa edilmiştir, işlevsel olarak UNO'ya benzerler, farklılıklar boyut ve USB eşleştirme çözümündedir, daha sonra bahsedeceğiz. Diğer bir fark, cihazları karta bağlamak için iğne şeklinde fişlerin sağlanmasıdır.

Bu kartın pin (bacak) sayısı aynı, ancak mikrodenetleyicinin daha kompakt bir TQFP32 paketinde yapıldığını, ADC6 ve ADC7'nin pakete eklendiğini, diğer iki "ekstra" bacağın güç bus'ını çoğalttığını görebilirsiniz. . Boyutları oldukça kompakt - başparmağınızın boyutuyla ilgili.

En popüler üçüncü anakart ise, bilgisayara bağlanmak için bir USB portuna sahip olmaması, bağlantının nasıl yapıldığını biraz sonra anlatacağım.

Bu, gözden geçirilenlerin en küçüğüdür, aksi takdirde önceki ikisine benzer ve kalbi hala Atmega328'dir. Bu yeni başlayanlar için bir makale olduğu için diğer panoları dikkate almayacağız ve panoların karşılaştırılması ayrı bir makalenin konusu.

Üst kısımda USB-UART bağlantı şeması, “GRN” pini mikrodenetleyicinin reset devresine bağlanmıştır, farklı denilebilir buna neden ihtiyaç duyulduğunu daha sonra anlayacaksınız.

UNO, devre tahtası için kullanışlıysa, Nano ve Pro Mini az yer kapladığından projenizin son sürümleri için iyidir.

Arduino'yu bilgisayara nasıl bağlarım?

Arduino Uno ve Nano bilgisayara USB üzerinden bağlanır. Aynı zamanda, USB portu için herhangi bir donanım desteği yoktur; burada genellikle USB'den Seri'ye veya USB-UART (rs-232) olarak adlandırılan bir seviye dönüştürme devresi çözümü kullanılır. Aynı zamanda, mikrodenetleyiciye özel bir Arduino önyükleyici flaşlanır, bu da bu otobüsler arasında flaş yapmanızı sağlar.

Arduino Uno, bu bağlantıyı USB destekli bir mikro denetleyicide uygular - ATmega16U2 (AT16U2). Ana mikrodenetleyiciyi flaş etmek için kartta ek bir mikrodenetleyiciye ihtiyaç olduğu ortaya çıktı.

Arduino Nano'da bu, FT232R çipi veya onun CH340 karşılığı tarafından uygulanır. Bu bir mikrodenetleyici değil - bir seviye dönüştürücüdür, bu gerçek kendi ellerinizle sıfırdan bir Arduino Nano oluşturmayı kolaylaştırır.

Arduino kartını bağladığınızda genellikle sürücüler otomatik olarak yüklenir. Ancak Arduino Nano'nun Çince bir kopyasını aldığımda cihaz tanındı, ancak çalışmadı, dönüştürücünün üzerine çıkış tarihini içeren yuvarlak bir çıkartma yapıştırıldı, bu bilerek mi yapıldı bilmiyorum ama soyduğumda CH340 işaretini gördüm.

Ondan önce bununla karşılaşmadım ve tüm USB-UART dönüştürücülerin FT232 üzerine monte edildiğini düşündüm, sürücüleri indirmek zorunda kaldım, "Arduino ch340 sürücüleri" isteğinde bulmak çok kolay. Basit bir kurulumdan sonra - her şey çalıştı!

Mikrodenetleyici aynı USB bağlantı noktasından da çalıştırılabilir, yani. bir cep telefonu adaptörüne bağlarsanız, sisteminiz çalışacaktır.

Kartımda USB yoksa ne yapmalıyım?

Arduino Pro Mini kartı daha küçüktür. Bu, bellenim için USB konektörünün ve aynı USB-UART dönüştürücünün çıkarılmasıyla sağlandı. Bu nedenle, ayrı olarak satın alınmalıdır. CH340 (en ucuz), CPL2102 ve FT232R'deki en basit dönüştürücü 1 dolara satılıyor.

Satın alırken, bu adaptörün hangi voltaj için tasarlandığına dikkat edin. Pro mini, 3.3 ve 5 V versiyonlarında gelir, genellikle dönüştürücülerde besleme voltajını değiştirmek için bir jumper bulunur.

Pro Mini'yi yanıp sönerken başlatmadan hemen önce RESET'e basmanız gerekiyor, ancak DTR'li dönüştürücülerde bu gerekli değildir, bağlantı şeması aşağıdaki şekildedir.

Özel terminaller "Anne-Anne" (dişi-dişi) ile birleştirilirler.

Aslında tüm bağlantılar bu tür terminaller (Dupont) kullanılarak yapılabilir, her iki tarafta prizli ve fişli olup bir tarafta priz, diğer tarafta fiş vardır.

Arduino için programlar nasıl yazılır?

Eskizlerle çalışmak için (arduino dilinde bellenimin adı), Arduino IDE'nin geliştirilmesi için özel bir entegre ortam vardır, resmi web sitesinden veya herhangi bir tematik kaynaktan ücretsiz olarak indirebilirsiniz, genellikle vardır. kurulumda sorun yok.

Program arayüzü böyle görünüyor. Arduino için özel olarak geliştirilmiş basitleştirilmiş bir C AVR dilinde programlar yazabilirsiniz, aslında bu, saf C AVR'nin yanı sıra Wiring adı verilen bir dizi kitaplıktır. Kullanımı kodu kolaylaştırır ve çalışmasını hızlandırır.

Pencerenin üst kısmında, bir dosyayı açabileceğiniz, ayarlar yapabileceğiniz, çalıştığınız panoyu seçebileceğiniz (Uno, Nano ve diğerleri) ve ayrıca hazır kod örnekleriyle projeleri açabileceğiniz tanıdık bir menü var. Aşağıda, ürün yazılımı ile çalışmak için bir dizi düğme bulunmaktadır, aşağıdaki şekilde tuşların atamasını göreceksiniz.

Pencerenin alt kısmında proje, kodun durumu, bellenim ve hataların varlığı hakkında bilgi görüntülemek için bir alan vardır.

Arduino IDE'de programlamanın temelleri

Kodun başında, değişkenleri bildirmeniz ve varsa ek kütüphaneleri bağlamanız gerekir, bu şu şekilde yapılır:

#include biblioteka.h; // "Biblioteka.h" adlı kütüphaneyi dahil et

#define değişkeni 1234; // 1234 değerinde bir değişken tanımla

Tanımla komutu, derleyicinin değişkenin türünü seçmesine izin verir, ancak bunu örneğin bir tamsayı int veya kayan noktalı kayan nokta gibi manuel olarak ayarlayabilirsiniz.

int led = 13; // bir "led" değişkeni yarattı ve ona "13" değerini atadı

Program pinin durumunu 1 veya 0 olarak tanımlayabilir. 1 mantıksal birimdir, pin 13 1 ise, fiziksel bacağındaki voltaj mikrodenetleyici besleme voltajına eşit olacaktır (arduino UNO ve Nano - 5 V için) )

DigitalWrite(pin, value) komutu kullanılarak bir dijital sinyal yazılır, örneğin:

digitalWrite(led, yüksek); //birimi pin 13 (yukarıda açıkladık) günlüğüne kaydedin. Birimler.

Anlayabileceğiniz gibi, portlara yapılan itiraz, karttaki numaralandırmaya, ilgili numaraya göre gider. İşte önceki koda benzer bir örnek:

digitalWrite(13, yüksek); // pin 13'ü bire ayarla

Değeri milisaniye olarak verilen delay() komutu ile sıklıkla istenen bir zaman geciktirme fonksiyonu çağrılır, mikrosaniye ile ulaşılır.

gecikmeMikrosaniye() Gecikme(1000); //mikrodenetleyici 1000ms (1 saniye) bekleyecek

Giriş ve çıkış için bağlantı noktası ayarları, void setup() işlevinde şu komutla ayarlanır:

pinMode(NOMERPORTA, ÇIKIŞ/GİRİŞ); // argümanlar - değişken adı veya bağlantı noktası numarası, seçim için giriş veya çıkış

İlk Blink programını anlama

Mikrodenetleyiciler için bir tür "Merhaba dünya" olarak, bir LED'i yanıp sönmek için bir program var, koduna bakalım:

Başlangıçta pinMode komutu ile mikrodenetleyiciye LED'li portu çıkışa atamasını söyledik. Kodun “LED_BUILTIN” değişkenini bildirmediğini zaten fark ettiniz, gerçek şu ki Uno, Nano ve fabrikadaki diğer kartlarda, pin 13'e yerleşik bir LED bağlanır ve kart üzerine lehimlenir. Projelerinizde endikasyon için veya flasher programlarınızın basit testleri için tarafınızca kullanılabilir.

Ardından, LED'in lehimlendiği pini bir (5 V) olarak ayarlıyoruz, sonraki satır MK'yi 1 saniye bekletiyor ve ardından LED_BUILTIN pinini sıfıra ayarlıyor, bir saniye bekliyor ve program bir daire içinde tekrar ediyor, yani LED_BUILTIN 1 - LED (ve porta bağlı diğer herhangi bir yük) etkinleştirildiğinde, 0'a ayarlandığında devre dışı bırakılır.

Analog bağlantı noktasından değeri okuyun ve okunan verileri kullanın

AVR Atmega328 mikrodenetleyici, yerleşik bir 10-bit analogdan dijitale dönüştürücüye sahiptir. 10 bitlik bir ADC, tüm sinyal genliğinin (5 V) 1/1024'lük adımlarla 0 ila 5 volt arasındaki voltaj değerini okumanıza olanak tanır.

Daha açık hale getirmek için durumu düşünün, analog girişteki voltaj değerinin 2,5 V olduğunu varsayalım, bu, mikrodenetleyicinin voltaj 0 - "0" ise ve 5 V ise "512" pininden değeri okuyacağı anlamına gelir. - (1023). 1023 - çünkü sayım 0'dan başlar, yani. 0, 1, 2, 3 vb. toplamda 1023 - 1024 değere kadar.

Örnek olarak standart "analogInput" taslağını kullanarak kodda nasıl göründüğü aşağıda açıklanmıştır.

int sensörPin = A0;

int ledPin = 13;

int sensörDeğeri = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, YÜKSEK);

gecikme (sensorValue);

digitalWrite(ledPin, DÜŞÜK);

gecikme (sensorValue);

Değişkenleri bildiriyoruz:

    Ledpin - bağımsız olarak çıkışa yerleşik LED'li bir pin atayın ve bireysel bir ad verin;

    sensörPin - kart üzerindeki işarete göre ayarlanmış analog giriş: A0, A1, A2, vb.;

    sensorValue - okunan tamsayı değerini depolamak ve onunla daha fazla çalışmak için bir değişken.

Kod şu şekilde çalışır: sensorValue, sensorPin'den (analogRead komutu) okunan analog değeri kaydeder. - burada analog sinyalle çalışma biter, o zaman her şey önceki örnekteki gibidir.

ledPin'e bir birim yazıyoruz, led yanıyor ve sensorValue değerine eşit bir süre bekliyoruz, yani. 0 ila 1023 milisaniye. LED'i kapatıyoruz ve bu süre boyunca tekrar bekliyoruz, ardından kod tekrarlanıyor.

Böylece potansiyometrenin konumuna göre LED'in yanıp sönme frekansını ayarlamış oluyoruz.

Arudino için harita işlevi

Aktüatörlerin tüm işlevleri (hiçbirini bilmiyorum) argüman olarak "1023"ü desteklemez, örneğin servo dönüş açısı ile sınırlıdır, yani servo motorun yarım dönüşü (180 derece) (yarım dönüş) , işlevin maksimum argümanı "180"

Şimdi sözdizimi hakkında: map (çevirdiğimiz değer, girdinin minimum değeri, girdinin maksimum değeri, minimum çıktı, maksimum çıktı değeri).

Kodda şöyle görünür:

(harita(analogRead(pot), 0, 1023, 0, 180));

Potansiyometreden (analogRead (pot)) 0'dan 1023'e kadar olan değeri okuyoruz ve çıktıda 0'dan 180'e kadar sayılar alıyoruz

Büyüklük haritasının değerleri:

Uygulamada bunu aynı servonun koduna uyguluyoruz, Arduino IDE'den gelen koda bir göz atın, önceki bölümleri dikkatlice okursanız açıklama gerektirmez.

Ve bir bağlantı şeması.

Arduino, mikrodenetleyicilerle çalışmayı öğrenmek için çok kullanışlı bir araçtır. Ve eğer saf C AVR kullanırsanız veya bazen "Saf C" olarak adlandırılırsa - kodun ağırlığını önemli ölçüde azaltırsınız ve mikrodenetleyicinin hafızasına daha fazla sığar, sonuç olarak mükemmel bir fabrika yapımı elde edersiniz. USB üzerinden yanıp sönme özelliğine sahip hata ayıklama panosu.

arduinoyu severim. Birçok deneyimli mikrodenetleyici programcısının, çok basitleştirilmiş olması nedeniyle sebepsiz yere onu azarlaması üzücü. Prensip olarak, yalnızca dil basitleştirilmiştir, ancak kimse sizi onu kullanmaya zorlamaz, ayrıca mikro denetleyiciyi ICSP konektörü aracılığıyla flaş edebilir ve ihtiyacınız olmayan herhangi bir önyükleyici olmadan istediğiniz kodu oraya yükleyebilirsiniz.

Elektronik ile oynamak isteyenler için gelişmiş bir tasarımcı olarak mükemmel olacak ve deneyimli programcılar için montaj gerektirmeyen bir tahta olarak da faydalı olacak!

Arduino ve çeşitli devrelerde kullanım özellikleri hakkında daha fazla bilgi için e-kitaba bakın - .