AVR Studio'da Arduino C Programlama. Arduino programlama diline giriş

Yeni başlayanlar için Arduino programlama dili aşağıdaki tabloda detaylı olarak sunulmaktadır. Arduino mikrodenetleyicisi, C/C++ tabanlı özel bir programlama dilinde programlanmıştır. Dilim Arduino programlama bir tür C++'dır, yani Arduino için ayrı bir programlama dili yoktur. PDF kitabını sayfanın sonundan indirebilirsiniz.

İÇİNDE Arduino IDE'si tüm yazılı eskizler minimum değişiklikle bir C/C++ programında derlenir. Arduino IDE derleyicisi, bu platform için program yazmayı büyük ölçüde basitleştirir ve Arduino üzerinde cihaz oluşturmak, C/C++ dili hakkında fazla bilgisi olmayan kişiler için çok daha erişilebilir hale gelir. Arduino dilinin ana fonksiyonlarını örneklerle açıklayan küçük bir yardım vereceğiz.

Arduino dilinin ayrıntılı bir referansı

Dil dört bölüme ayrılabilir: operatörler, veriler, işlevler ve kitaplıklar.

Arduino dili Örnek Tanım

operatörler

kurmak () geçersiz kurulum ()
{
pinMode (3, GİRİŞ);
}
İşlev, değişkenleri başlatmak, kart üzerindeki pinlerin çalışma modlarını belirlemek vb. için kullanılır. İşlev, mikrodenetleyiciye her güç kaynağından sonra yalnızca bir kez çalışır.
döngü () boşluk döngüsü ()
{
digitalWrite (3, YÜKSEK);
gecikme (1000);
digitalWrite (3, DÜŞÜK);
gecikme (1000);
}
Döngü işlevi, programın hesaplamaları gerçekleştirmesini ve bunlara yanıt vermesini sağlayan döngü işlevi görür. setup() ve loop() fonksiyonları, bu deyimler programda kullanılmasa bile her eskizde bulunmalıdır.

Kontrol Operatörleri

Eğer
eğer (x>
eğer (x< 100) digitalWrite (3, LOW );
if ifadesi, karşılaştırma operatörleriyle birlikte kullanılır (==,! =,<, >) ve koşulun doğru olup olmadığını kontrol eder. Örneğin x değişkeninin değeri 100'den büyükse çıkış 13'teki LED yanar, daha küçükse LED söner.
eğer..else
if (x> 100) digitalWrite (3, YÜKSEK);
başka digitalWrite (3, DÜŞÜK);
else ifadesi, birbirini dışlayan birkaç kontrol gerçekleştirmek için if'de belirtilenden farklı bir kontrol yapmanızı sağlar. Kontrollerin hiçbiri TRUE sonucunu almadıysa, else içindeki ifadeler bloğu yürütülür.
yer değiştir
anahtar (x)
{


durum 3: kırılma;

}
Bir if gibi, bir switch ifadesi bir programı kontrol ederek farklı koşullar altında gerçekleştirilecek eylemleri belirtmenize olanak tanır. Break, ifadeden çıkmak için kullanılan komuttur, herhangi bir alternatif seçilmemişse varsayılan olarak yürütülür.
için geçersiz kurulum ()
{
pinMode (3, ÇIKIŞ);
}
boşluk döngüsü ()
{
for (int ben = 0; ben<= 255; i++){
analogWrite (3, i);
gecikme (10);
}
}
for yan tümcesi, küme parantezleri içine alınmış ifadeleri tekrarlamak için kullanılır. Örneğin, bir LED'in yumuşak karartılması. for döngüsü başlığı üç bölümden oluşur: for (başlatma; koşul; artış) - başlatma bir kez gerçekleştirilir, ardından koşul koşulu kontrol edilir, koşul doğruysa artış yürütülür. Döngü, koşul yanlış olana kadar tekrarlanır.
süre boşluk döngüsü ()
{
süre (x< 10)
{
x = x + 1;
Seri.println (x);
gecikme (200);
}
}
while ifadesi, parantez içindeki koşul doğru olduğu sürece çalışacak bir döngü olarak kullanılır. Örnekte, while döngüsü, x 10'dan küçük olana kadar parantez içindeki kodu süresiz olarak tekrarlayacaktır.
yaparken boşluk döngüsü ()
{
yapmak
{
x = x + 1;
gecikme (100);
Seri.println (x);
}
süre (x< 10);
gecikme (900);
}
do… while döngüsü ifadesi, while döngüsüyle aynı şekilde çalışır. Ancak parantez içindeki ifade doğruysa döngü devam eder ve döngüden çıkmaz. Yukarıdaki örnekte, 10'dan büyük x için, toplama işlemi devam eder, ancak 1000 ms'lik bir duraklama ile.
kırmak
devam etmek
anahtar (x)
{
durum 1: digitalWrite (3, YÜKSEK);
durum 2: digitalWrite (3, DÜŞÜK);
durum 3: kırılma;
durum 4: devam et;
varsayılan: digitalWrite (4, YÜKSEK);
}
Break, döngünün tamamlanmasını beklemeden switch, do, for ve while döngülerinden çıkmaya zorlamak için kullanılır.
Devam ifadesi, geçerli döngü adımında kalan ifadeleri atlar.

Sözdizimi

;
(noktalı virgül)

digitalWrite (3, YÜKSEK);
Noktalı virgül, bir ifadenin sonunu belirtmek için kullanılır. Bir satırın sonunda unutulan noktalı virgül, derleme hatasına neden olur.
{}
(parantez)
geçersiz kurulum ()
{
pinMode (3, GİRİŞ);
}
Açılış parantezinden “(” sonra bir kapanış parantezi “)” gelmelidir. Eşlenmemiş parantezler, bir çizim derlerken gizli ve anlaşılmaz hatalara yol açabilir.
//
(bir yorum)
x = 5; // bir yorum

Mikrodenetleyicileri incelemek karmaşık ve kafa karıştırıcı görünüyor mu? 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 yapıcıdır. Projenin ilk amacı, elektronik kısımda minimum zaman harcayarak insanların elektronik cihazları nasıl programlayacaklarını kolayca öğrenmelerini sağlamaktır.

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

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

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

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

Arduino kartı görüntüsü ve her pinin fonksiyonlarını deşifre etme, Arduino UNO pin çıkışı

Bu kart üzerindeki mikrodenetleyici, DIP28 paketindeki mikro devrenin uzunluğudur, yani 28 bacağa sahiptir.

Bir sonraki en popüler tahta, bir öncekinin fiyatının neredeyse yarısına mal oluyor - 2-3 dolar. Bu bir ücrettir. Mevcut kartlar aynı Atmega328 tarafından inşa edilmiştir, işlevsel olarak UNO'ya benzerler, boyut ve USB ile eşleştirme çözümlerinde farklılıklar, daha sonra daha fazlası. 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ı, pakete ADC6 ve ADC7'nin eklendiğini, diğer iki "ekstra" bacağın güç yolunu kopyaladığını görebilirsiniz. . Boyutları oldukça kompakt - başparmağınızın boyutuyla ilgili.

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

Bu, gözden geçirilenlerin en küçük panosudur, 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ı karşılaştırmak ayrı bir makalenin konusu.

Üst kısımda, USB-UART bağlantı şeması, "GRN" pimi mikrodenetleyicinin sıfırlama devresine bağlanmıştır, daha sonra öğreneceğiniz farklı şekilde çağrılabilir.

UNO prototipleme için uygunsa, Nano ve Pro Mini projenizin son sürümleri için uygundur, çünkü az yer kaplarlar.

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

Arduino Uno ve Nano bilgisayarınıza USB üzerinden bağlanır. Aynı zamanda, USB bağlantı noktası için donanım desteği yoktur, burada genellikle USB-Seri veya USB-UART (rs-232) olarak adlandırılan bir seviye dönüştürme devresi çözümü kullanılır. Aynı zamanda mikrodenetleyicinin içine özel bir Arduino bootloader dikilerek bu buslarda flashing yapılmasına olanak sağlanmaktadır.

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 analog CH340 tarafından gerçekleştirilir. Bu bir mikrodenetleyici değil - bir seviye dönüştürücüdür, bu gerçek Arduino Nano'yu kendi ellerinizle sıfırdan monte etmeyi kolaylaştırır.

Sürücüler genellikle Arduino kartı bağlandığında otomatik olarak yüklenir. Ancak satın aldığımda Çince kopya Arduino Nano, cihaz tanındı ama çalışmadı, çeviriciye çıkış tarihi ile ilgili verilerin olduğu yuvarlak bir etiket yapıştırılmış, bu bilerek mi yapıldı bilmiyorum ama soyduğumda CH340'ı gördüm. işaretleme.

Ondan önce buna rastlamadı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" istendiğinde bulmak çok kolay. Basit bir kurulumdan sonra işe yaradı!

Mikrodenetleyiciye aynı USB portu üzerinden güç verilebilir, yani. bir cep telefonu adaptörüne bağlarsanız, sisteminiz çalışacaktır.

Kartımda USB yoksa ne olur?

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 için 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 ve genellikle dönüştürücülerde besleme voltajını değiştirmek için bir jumper bulunur.

Pro Mini yanıp sönerken, başlatmadan hemen önce RESET'e basmanız gerekir, ancak DTR'li dönüştürücülerde buna gerek yoktur, bağlantı şeması aşağıdaki şekildedir.

Özel dişi-bayan terminalleri ile birleştirilirler.

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

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

Eskizlerle çalışmak için (ürün yazılımının adı Arduino dilindedir), Arduino IDE için özel bir entegre geliştirme ortamı vardır, resmi web sitesinden veya herhangi bir tematik kaynaktan ücretsiz olarak indirebilirsiniz, genellikle sorun olmaz kurulum ile.

Programın arayüzü böyle görünüyor. Arduino için özel olarak geliştirilmiş basitleştirilmiş C AVR dilinde programlar yazabilirsiniz, aslında Wiring adı verilen bir dizi kütüphanenin yanı sıra saf C AVR'dir. Kullanımı kodu kolaylaştırır ve işini 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 örnekleri ile projeleri açabileceğiniz tanıdık bir menü vardır. 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 amacını görebilirsiniz.

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 Programlama 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ı bir kitaplık ekleyin

#define peremennaya 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 oluşturun ve ona "13" değerini atayın

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

Dijital sinyal, digitalWrite komutu (pin, değer) tarafından yazılır, örneğin:

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

Anlayabileceğiniz gibi, bağlantı noktalarına erişim, karttaki ilgili rakam olan numaralandırma ile yapılır. İşte önceki koda benzer bir örnek:

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

Değeri milisaniye cinsinden ayarlanan gecikme () komutu ile sık istenen bir zaman geciktirme işlevi çağrılır, mikrosaniyeler kullanılarak elde edilir.

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

Giriş ve çıkış için bağlantı noktası ayarları, geçersiz kurulum () işlevinde şu komut kullanılarak 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" LED yanıp sönen program olduğundan, kodunu analiz edelim:

Başlangıçta pinMode komutu ile mikrodenetleyiciye çıkışa ledli bir port atamasını söyledik. Kodda “LED_BUILTIN” değişkeninin bir bildirimi olmadığını zaten fark ettiniz, gerçek şu ki, Uno, Nano ve fabrikadan gelen diğer kartlarda, pim 13'e yerleşik bir LED bağlanır ve üzerine lehimlenir. yazı tahtası. Projelerinizde endikasyonlar için veya flasher programlarınızın en basit testi için tarafınızca kullanılabilir.

Ardından, LED'in lehimlendiği çıkışı bir (5 V) olarak ayarlıyoruz, sonraki satır MK'yi 1 saniye beklemeye zorluyor ve ardından LED_BUILTIN pinini sıfıra ayarlıyor, bir saniye bekliyor ve program bir daire içinde tekrar ediyor , bu nedenle, LED_BUILTIN 1 olduğunda, LED (ve porta bağlı diğer herhangi bir yük) 0 - kapalıyken yanar.

Değeri analog porttan okuyoruz ve okunan verileri kullanıyoruz

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

Daha açık hale getirmek için durumu ele alalım, diyelim ki analog girişteki voltaj değeri 2,5 V, yani voltaj 0 - "0" ise mikrodenetleyici "512" pininden değeri okuyacaktır ve eğer 5 ise V - (1023). 1023 - çünkü sayma 0'dan başlar, yani. 0, 1, 2, 3 vb. toplamda 1023 - 1024 değere kadar.

Standart bir "analogInput" çizimi örneğini kullanarak kodda bu şekilde görünü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 bildiririz:

    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, bir tamsayı okuma değerini depolamak ve onunla daha fazla çalışmak için bir değişkendir.

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

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

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önme açısıyla, yani yarım devir (180 derece) (yarım devir) ile sınırlıdır. servo motor, maksimum fonksiyon argümanı "180"

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

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

(harita (analogOkuma (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

Harita değerleri:

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

Ve bağlantı şeması.

Sonuçlar Arduino, mikrodenetleyicilerle nasıl çalışılacağını öğrenmek için çok uygun bir araçtır. Saf bir C AVR kullanırsanız veya bazen "Pure C" olarak adlandırılırsa, kodun ağırlığını önemli ölçüde azaltırsınız ve mikrodenetleyicinin belleğine daha fazla sığar, sonuç olarak mükemmel bir fabrika elde edersiniz. -USB üzerinden flaş yapabilme özelliğine sahip hata ayıklama panosu.

arduinoyu severim. Deneyimli mikrodenetleyici programcılarının çoğunun, bunun çok basit olduğu için temelsizce eleştirmesi ü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 gereksiz önyükleyiciler olmadan orada istediğiniz kodu doldurabilirsiniz.

Elektronik ile oynamak isteyenler için gelişmiş bir kurucu olarak mükemmeldir, ancak deneyimli programcılar için montaj gerektirmeyen bir tahta olarak da faydalı olacaktır!

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

Tarihsel olarak, Arduino yazılımı, yazılı kodu donanıma yazmanıza, derlemenize ve yüklemenize izin veren entegre bir yazılım ortamından (IDE) oluşur. ArduinoIDE ortamı ve Wiring dilinin kendisi öncelikle İşleme, dolaylı olarak C / C ++ üzerine kuruludur. Aslında, Arduino IDE eğlence için değil, rahatlık için büyük bir prefabrik karmakarışıktır.

Hatta dıştan veArduinoIDE veİşleme benzer


Program (eskiz) nelerden oluşur?
Her program, ne kadar karmaşık görünse de, ayrı kümelerden oluşur. bloklar kaşlı ayraçlar () ile gösterilen kod. Minimal bir program için sadece 2 blok gereklidir: kurulum ve döngü. Arduino için herhangi bir C++ programında bunların varlığı gereklidir, aksi takdirde derleme aşamasında hata alabilirsiniz.
geçersiz kurulum () () geçersiz döngü () ()
setup() fonksiyonunda, değişkenlerin ve kayıtların başlangıç ​​ayarları yer alır. Kurulum () tamamlandıktan sonra kontrol, gövdede (() arasında) yazılmış sonsuz bir döngü olan loop() işlevine geçer. Denetleyicinin tüm algoritmik eylemlerini gerçekleştiren bu komutlardır.

Donanım "Merhaba, Dünya! " - LED yanıp sönüyor.
Arduino ile ilk tanışmanın yazılım ve donanım kavşağında başladığı yer, bir LED'in yanıp sönmesidir.


İlk olarak, minimum programı tamamlamanız gerekir. Arduino için (örneğin UNO), LED'i pim 12'ye ve GND'ye bağlayın (LED'in rengi kişisel tercihlerden seçilir).

Void kurulumu () (pinMode (12, OUTPUT);) void döngüsü () (digitalWrite (12, YÜKSEK); gecikme (100); digitalWrite (12, DÜŞÜK); gecikme (900);)
Ctrl + C -> Ctrl + V yapın, derleyin, yükleyin, hakim olun. Bir saniyeden fazla sürmeyen bir ışık gösterisi görüyoruz. Bunun neden olduğunu anlayalım.

Daha önce boş olan bloklara birkaç tane ekledik. ifade ... Kurulum ve döngü fonksiyonlarının küme parantezleri arasına yerleştirildiler.
Her ifade işlemci için bir talimattır. Bir blok içindeki ifadeler, herhangi bir duraklama veya geçiş olmaksızın kesinlikle sırayla, birbiri ardına yürütülür. Yani, belirli bir kod bloğundan bahsediyorsak, ne yapıldığını anlamak için yukarıdan aşağıya okunabilir.

arada neler oluyor{ } ?
Bildiğiniz gibi Arduino pinleri hem çıkış hem de giriş olarak çalışabilir. Bir şeyi kontrol etmek istediğimizde, kontrol pinini çıkışta çalışma durumuna getirmemiz gerekir. Bu, bir fonksiyondaki bir ifade ile yapılır. kurmak:
pinMode (12, ÇIKIŞ); Bu durumda, ifade gerçekleşir işlev çağrısı ... pinMode'da belirtilen pin, belirtilen moda (GİRİŞ veya ÇIKIŞ) ayarlanır. Hangi pinden ve hangi moddan bahsettiğimiz virgülle ayrılmış parantez içinde belirtilir. Bizim durumumuzda 12. pinin çıkış olarak çalışmasını istiyoruz. ÇIKIŞ, çıktı anlamına gelir, GİRİŞ, girdi anlamına gelir. 12 ve ÇIKIŞ gibi netleştirici değerlere denir. fonksiyon argümanları ... Bir fonksiyonun kaç argümana sahip olduğu, fonksiyonun özüne ve yaratıcısının iradesine bağlıdır. Kurulum ve döngüde olduğu gibi, işlevlerin hiçbir argümanı olamaz.

Ardından, sırayla döngü bloğuna gidin:
-yerleşik digitalWrite işlevini çağırın. Belirli bir pime mantıksal bir sıfır (DÜŞÜK, 0 volt) veya mantıksal bir (YÜKSEK, 5 volt) sağlamak için tasarlanmıştır.digitalWrite işlevine 2 argüman iletilir: bir pim numarası ve bir mantıksal değer.
- gecikme işlevini çağırın. Bu, yine, işlemciyi "uyku" yapan yerleşik bir işlevdir. kesin zaman... Yalnızca bir argüman alır: uyumak için milisaniye cinsinden süre. Bizim durumumuzda, bu 100 ms'dir. 100ms geçer geçmez işlemci uyanır ve hemen bir sonraki ifadeye geçer.
- yerleşik digitalWrite işlevini çağırın. Sadece bu sefer ikinci argüman DÜŞÜK. Yani 12. pime mantıksal bir sıfır ayarlıyoruz -> 0 volt besliyoruz -> LED'i kapatıyoruz.
- gecikme işlevine bir çağrı. Bu sefer biraz daha uzun "uyuyoruz" - 900 ms.

Son işlev yürütülür yürütülmez döngü bloğu sona erer ve her şey tekrar tekrar olur. Aslında, örnekte sunulan koşullar oldukça değişkendir ve gecikme değerleriyle oynayabilir, birkaç LED bağlayabilir ve bir trafik ışığı veya bir polis flaşörü gibi görünmesini sağlayabilirsiniz (hepsi yaratıcının hayal gücüne ve iradesine bağlıdır) .

Bir sonuç yerine, biraz temizlik hakkında.
Aslında, tüm boşluklar, satır sonları ve sekmeler derleyici için önemli değildir. Boşluğun olduğu yerde satır sonu olabilir ve bunun tersi de olabilir. Aslında, arka arkaya 10 boşluk, 2 satır sonu ve 5 boşluk daha, hepsi bir boşluğa eşdeğerdir.


Boş alan yardımıyla programı anlaşılır ve görsel hale getirebilir veya tam tersine tanınmayacak şekilde bozabilirsiniz. Örneğin, örnek program şu şekilde değiştirilebilir:

void ayarı () (pinMode (12, OUTPUT);) void döngüsü () (digitalWrite (12, YÜKSEK); gecikme (100); digitalWrite (12, DÜŞÜK); gecikme (900);)

Okurken birinin gözlerinden kanamayı önlemek için birkaç basit kuralı takip edebilirsiniz:


1. Her zaman, arasında yeni bir blok başlatırken( ve ) girintiyi artırın. Genellikle 2 veya 4 boşluk kullanılır. Değerlerden birini seçin ve her yere bağlı kalın.

Void döngüsü () (digitalWrite (12, YÜKSEK); gecikme (100); digitalWrite (12, DÜŞÜK); gecikme (900);)
2. Normal dilde olduğu gibi: virgüllerden sonra bir boşluk bırakın.

digitalWrite (12, YÜKSEK);
3. Blok başlangıç ​​karakterini (geçerli girinti düzeyinde yeni bir satırda veya öncekinin sonunda. Ve blok bitiş karakterini) geçerli girinti düzeyinde ayrı bir satıra yerleştirin:

void setup () (pinMode (12, OUTPUT);) void setup () (pinMode (12, OUTPUT);)
4. Anlam bloklarını ayırmak için boş satırlar kullanın:

void loop() (digitalWrite (12, YÜKSEK); gecikme (100); digitalWrite (12, DÜŞÜK); gecikme (900); digitalWrite (12, YÜKSEK); gecikme (100); digitalWrite (12, DÜŞÜK); gecikme ( 900);)
5. Beyin çocuğunuzun okuması keyifli olması için sözde yorumlar var. Bunlar, program kodunda derleyici tarafından tamamen göz ardı edilen ve yalnızca okuyucu için anlamlı olan yapılardır. Yorumlar çok satırlı veya tek satırlı olabilir:

/ * bu çok satırlı bir yorumdur * / // bu tek satırlık bir yorumdur

İhtiyacın olacak

  • - Arduino UNO kartı,
  • - USB kablosu(USB A - USB B),
  • - Kişisel bilgisayar,
  • - Işık yayan diyot,
  • - 220 Ohm direnç,
  • - 5-10 cm'lik bir çift tel,
  • - varsa - devre tahtası.

Talimatlar

İşletim sisteminiz için Arduino geliştirme ortamını (Windows, Mac OS X, Linux desteklenir) http://arduino.cc/en/Main/Software adresinden indirin, kurulumunu yapabilirsiniz, yapabilirsiniz. İndirilen dosya ayrıca Arduino kartlarının sürücülerini de içerir.

Sürücüyü yükleyin. Windows işletim sistemi için bir seçenek düşünelim. Bunu yapmak için bekleyin işletim sistemi sürücüyü yüklemenizi ister. Reddetmek. Win + Duraklat'a basın, Aygıt Yöneticisi'ni başlatın. "Bağlantı Noktaları (COM ve LPT)" bölümünü bulun. Orada "Arduino UNO (COMxx)" adında bir bağlantı noktası göreceksiniz. Tıklamak sağ tık fareyi üzerine getirin ve "Sürücüyü Güncelle" yi seçin. Ardından, az önce indirdiğiniz sürücünün konumunu seçin.

Geliştirme ortamı, kurulun işleyişini incelemek için halihazırda birçok örnek içermektedir. Yanıp Sönme örneğini açın: Dosya> Örnekler> 01.Temel Bilgiler> Göz Kırp.

Geliştirme ortamına panonuzu söyleyin. Bunu yapmak için Araçlar> Pano'ya gidin ve "Arduino UNO" seçeneğini seçin.

Arduino kartının atandığı portu seçin. Kartın hangi porta bağlı olduğunu öğrenmek için cihaz yöneticisini başlatın ve Portlar (COM & LPT) bölümünü bulun. Bağlantı noktası, kart adından sonra parantez içinde belirtilecektir. Pano listede yoksa, bilgisayardan deneyin ve birkaç saniye bekledikten sonra tekrar deneyin.

Kartı bilgisayardan ayırın. Devreyi şekilde görüldüğü gibi kurunuz. Lütfen LED'in kısa bacağının GND pinine, uzun bacağının Arduino kartının dijital pin 13'ü olan bir direnç üzerinden bağlanması gerektiğini unutmayın. Bir breadboard kullanmak daha uygundur, ancak yoksa, telleri bükerek bağlayabilirsiniz.
Önemli Not! Dijital pim 13, kartta zaten kendi direncine sahiptir. Bu nedenle LED'i karta bağlarken harici bir direnç kullanılmasına gerek yoktur. LED'i diğer Arduino pinlerine bağlarken kullanılması zorunludur!

Artık programı kart belleğine yükleyebilirsiniz. Kartı bilgisayara bağlayın, kartın başlatılması için birkaç saniye bekleyin. "Yükle" düğmesine tıklayın, sizinki Arduino kartının hafızasına yazılacaktır. Arduino programlama çok sezgiseldir ve hiç de zor değildir. Resme bakın - programa yapılan yorumlarda küçük açıklamalar var. Bu, ilk denemenizle başa çıkmak için yeterlidir.

İlgili videolar

Not

Arduino kartını tutarken dikkatli olun - bu, dikkatli kullanım gerektiren elektronik bir üründür. Kartın alt kısmında çıplak iletkenler vardır ve kartı iletken bir yüzeye yerleştirirseniz kartın yanma ihtimali vardır. Ayrıca, tahtaya ıslak veya nemli ellerle dokunmayın ve çalışırken nemli alanlardan kaçının.

Faydalı tavsiye

İnternette birçok Arduino sitesi var. Oku, usta, denemekten ve yeni şeyler öğrenmekten korkma!

Kaynaklar:

  • yanıp sönen LED

Programlama birçok kişiyi çeker ve ilgilendirir modern insanlar, özellikle gelecekteki mesleklerini seçmeye yeni başlayan genç ve acemi uzmanlar. Genellikle şu soruyla karşı karşıya kalırlar - programlama öğrenmeye nereden başlamalı? Programlamayı öğrenmeye karar verirseniz, yaygın bir hata yapmamalısınız - hemen başlamayın. karmaşık sistemler ve diller (örneğin, C). Aşırı karmaşık bir dille başlamak size genel olarak yanlış programlama izlenimi verebilir. Yeni başlayanlar en çok basit sistemler- örneğin, BASIC'te program yazmayı öğrenmek. Bu dili öğrenmek başarmanızı sağlayacaktır. iyi sonuçlar... PureBasic'i öğrenmesi kolaydır - çok yönlü derlenmiş bir dildir. bol fırsatlar, programlamanın temellerini anlamanıza ve gelecekte becerilerinizi geliştirmenize yardımcı olacaktır.

Talimatlar

Programlamanın temellerini öğrenmeniz yaklaşık bir yılınızı alabilir. Prosedürel ve nesne yönelimli programlamanın özelliklerini, ikili ağaçlar, diziler, listeler vb. ile çalışma ilkelerini öğreneceksiniz. Sadece temel bilgileri öğrendikten sonra daha zor görevlere geçin.

Programlama dilleri geliştiricilerinin sitelerini ziyaret edin, belgeleri inceleyin. Programcıların forumlarında sohbet ettiğinizden emin olun, genellikle yeni başlayanların sorularının çoğuna cevap verirler.

Matematik

Programlamayı öğrenmek istiyorsanız, sadece matematik bilmeniz yeterlidir. Çalışma sürecinde, bu bilimin temellerini bilmeden çözülemeyecek çok sayıda problemle yüzleşmek zorundasınız. Var olmak çok sayıda programlama sürecini büyük ölçüde basitleştiren matematik, sistemler ve teoriler (Fourier serileri, Fibonacci sayıları, vb.).

Öğrenme bitmiyor

Programlama dillerinin evrimi durmuyor, gelişimleri devam ediyor. Çalışmayı planladığınız programlama alanında mümkün olduğunca çok literatür okumaya çalışın. Her zaman ortaya çıkan sorunlara alternatif çözümler arayın, bu, yarattığınız işin verimliliğini sürekli olarak artırmanıza yardımcı olacaktır. program kodu... İle sohbet et profesyonel programcılar, her zaman belirli bir sorunla nasıl başa çıkılacağı konusunda tavsiyede bulunabileceklerdir. Programlarının kodlarını okumanız da size büyük fayda sağlayacaktır.
Her şeyi her zaman akılda tutmak imkansızdır. Programlama dili referansını kullanmaktan çekinmeyin.

Programlama görevleri, ne kadar basit olurlarsa olsunlar, asla bir çırpıda çözülmezler. Her zaman çalışılmaları gerekir doğru algoritma Bu özel durumda etkili olan eylemler. Optimum algoritmaları bulmak, sürekli uygulama ve eğitim gerektirir. Küçük programlama problemlerini daha sık çözmeye çalışın (bunları özel sitelerde bulabilirsiniz), bu, bu alandaki becerilerinizi yavaş yavaş geliştirmenize yardımcı olacaktır.

Arduino'da ustalaşmaya başlamak için 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çin (orijinal veya iyi bir Çince kopya - bu size kalmış). Orijinal kartı ilk kez bağladığınızda, herhangi bir sorun olmamalıdır, ancak "Çince" ile daha derine inmeniz gerekecek (endişelenme - size her şeyi göstereceğim ve anlatacağım).

Arduino'yu bağladık bilgisayar USB'si kablo. Kart üzerindeki LED yanmalıdır" ÜZERİNDE". Cihaz yöneticisinde yeni bir cihaz görünecek " Tanımlanmamış cihaz". Sürücünün yüklenmesi 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 ortamını önceden indirmiş ve paketinden çıkarmış ( arduino-1.6.6-pencereler). Sonra bunu indirdim. Kendinden çıkarmadır. Dosyayı başlattı CH341SER.EXE... seçti kurulum (KURULUM)... Kurulumdan sonra bir mesaj belirdi, tıklandı " tamam”(Okumak için zamanım olmadı).

Sonra hala "bilinmeyen aygıtın" özelliklerine gittim ve "Sürücüyü Güncelle" düğmesini seçtim. "Belirtilen bir konumdan yükle" seçeneğini seçtim - sıkıştırılmamış Arduino yazılım ortamının bulunduğu klasörü gösterdim. Ve bakalım - her şey yolunda gitti ...

Arduino programını çalıştırın (benim durumumda 1.6.6) ve erişime izin verin.

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 yalnızca bir kez yürütülür ve boşluk döngüsü tekrar tekrar koşar.

Devam etmeden önce, gerekli iki adım vardır:

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

- kart ile iletişim kurmak için hangi seri portu kullandığınızı yazılım ortamında belirtin. Araç-> bağlantı noktası-> COM3. İşaret zaten limandaysa, bu iyi, değilse bir işaret koyarız. Portlar bölümünde 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. Limanlara geri dönüyoruz ve hangisinin kaybolduğunu görüyoruz. Benim durumumda, "bağlantı noktaları" sekmesi hiç etkin değil.

USB kablosunu tekrar bağlayın.

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

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

Bunu yapmak için “bloğa girin” geçersiz kurulum"Emretmek pinModu , parantez içinde parametreleri belirtiyoruz (13, ÇIKTI) (Hangi sonuç dahil, Çalışma modu). Yazılım ortamı, kelimeleri / komutları uygun yazı tipi rengiyle vurgular.

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


İlk program hazır, şimdi mikrodenetleyiciye yüklemek için kaldı. YÜKLE düğmesine basın.

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

LED'i açtık, biraz parladı, kapatma zamanı geldi. Bunun için yazdığımız programı değiştireceğiz. Onun yerine " YÜKSEK "Yazmak" DÜŞÜK ».


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

"" Konseptini zaten tanıdık, kullanma zamanı. Bu kodlama stilini terk edersek, diğer programlar giderek daha karmaşık hale gelecek ve bunları değiştirme çalışmaları giderek daha fazla zaman alacaktır.

Programa bakıyoruz (LED'i tekrar açın). Mikrodenetleyicinin pin numarasını sayı ile değil 13 , ancak ilgili çıktının değeri atanacak bir değişken (bizim durumumuzda, 13). Gelecekte, değerlerin değiştirilmesi 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 açık. 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_pin, DÜŞÜK).


YÜKLE düğmesine basın. Ve ne görüyoruz? LED "siparişin zeminine kadar" yanar. Bunun nedeni, iki durumun anahtarlama süresinin ( YÜKSEK ve DÜŞÜK ) ihmal edilebilir düzeydedir ve insan gözü bu geçişleri yakalayamaz. Durumlardan birinde LED tarafından harcanan süreyi artırmak gerekir. Bunu yapmak için komutu yazın 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ı değiştirelim.


YÜKLE düğmesine basın. LED, titreştiği gibi titrer.

Yazmış olduğumuz programı sonlandıralım. Görevler aşağıdaki gibidir:

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

Programda oluşturulan zaman gecikmelerinden sorumlu 2 değişken vardır. Biri LED'in açık çalışma süresini tanımlar ve ikincisi LED'in kapalı çalışma süresini belirler.

İlginiz için teşekkür ederim. Yakında görüşürüz!

Konunun devamı:
Android

Ukraynalılar, Maidan yetkilileri tarafından engellenen Rus sosyal ağı VKontakte'nin bir analogunu oluşturamadı. Bu, Facebook'ta yazarlardan biri tarafından bildirildi ...