arduino və mikrokontrollerlərin proqramlaşdırılmasına giriş
TRANSCRIPT
MIKROKONTROLLERLƏR NƏDIR?
• İnteqral sxem daxilində yerləşən kiçik və avtonom kompüter;
• Çox vaxt periferik qurğulardan ibarət olur;
• Müxtəlif paketlər halında mövcud olur;
• Müxtəlif ölçü və gücdə növlər mövcuddur;
ƏTRAF MÜHITLƏ ƏLAQƏ
• Robotlar və qurğular ətraf mühitlə əlaqəyə keçmək, baş verənləri hiss etmək,
maneə və hədəfləri görmək üçün müxtəlif sensorlardan istifadə edirlər;
• Mikrokontrollerər bu əlaqənin baş verməsində iştirak edir;
• Minlərlə müxtəlif təyinatlı sensorlar mövcuddur;
ARDUINO
• ATMega328 üzərində mühəndislik
platası;
• Gərginlik Tənzimləyici;
• Proqramlayıcı (Proqramator);
• USB Portı;
• Cəmi $10 dəyərində!
C DILINDƏ PROQRAMLAŞDIRMA
void setup() {
// Setup stuff to only run once at the beginning
}
void loop() {
// This function gets called indefinitely
}
ƏLAVƏLƏR
• ADC - Analoqn Rəqəmsala Çevirici (Analog-to-Digital Converter);
• TMRx – Zman və Say sayğacları (Counters/Timers);
• PWM – Pulse Width Modulation (CPP/PWM);
• Serial Portlar (COM/UART);
• Və daha çox digər imkanlar...
RƏQƏMSAL I/O (YAZMA/OXUMA)
• Yalnız YÜKSƏK (HIGH) və ALÇAQ (LOW) qiymətlər (1/0);
• Hər bir «pin»in giriş və ya çıxış rejimində işləyə bilməsi tənzim oluna bilir:
• pinMode (pinNumber, pinState)
• pinMode (13, İNPUT);
• pinMode (13, OUTPUT);
• Yazma: digitalWrite (pinNumber, HIGH/LOW);
• Oxuma: Int val = digitalRead (pinNumber);
ARDUINO KODU ÜZƏRINDƏ NÜMUNƏ
int ledPin = 13;
void setup() {
// Rəqəmsal pin-i çıxış kimi tənzimlə:
pinMode(ledPin, OUTPUT);
} void loop() {
// Pin-ə yüksək (HİGH) qiymət ver (1)
digitalWrite(ledPin, HIGH);
}
SERIAL İNTERFEYS (UART)
• Digər Mikrokontrollerlər və ya kompyüterlər ilə əlaqyəyə gimək üçün;
• Asinxron kommunikasiya;
• Aruinonun mövcud kitabxanaları bu işi asanlaşdırmağa köməklik edir:
• Serial.begin(baudRate)
• Serial.println(”Göndəriləcək mətn”)
• int bytesWaiting = Serial.Availible()
• Char incomingData = Serial.read()
ARDUINO KODU ÜZƏRINDƏ NÜMUNƏ
void setup() {
Serial.begin(9600);
} void loop() {
Serial.println(”Mətn daxil et”);
while(Serial.availible() < 1) {
char input = Serial.read();
}
}
ANALOQ SIQNALIN RƏQƏMSALA ÇEVRILMƏSI (ADC)
• Elektrik cərəyanını Analoq siqnal
halında hər hansı bir pindən qəbul
etmək;
• Rəqəmsal halınını proqrama
qaytarmaq;
• Bitlərin qiymətindən aşlı olaraq
dəqiqlik dəyişir.
İŞIQ SENSORLARI
• Fotorezistorlar və Fotodiodlar;
• İstifadəsi çox sadədir;
• Müqaviməti işıqlanmadan aşlı olaraq dəyişir;
• Sensordakı cərəyanı ADC ilə çevirərək ölçmək olar;
ARDUINO KODU ÜZƏRINDƏ NÜMUNƏint sensorPin = 0;
void setup() {
Serial.begin(9600); // Serial girişi aç
} void loop() {
// sensorun göstəricisini oxu:
sensorValue = analogRead(sensorPin);
// Sensorun göstəricisini əks etdir
Serial.println(sensorValue);
}
PWM MODULLARI (CCP)
• Çıxış pin-lərində PWM siqnallarının yaradılması;
• Giriş pin-lərində PWM siqnallarının ölçülməsi;
• CCP = Capture/Compare
• Bəs PWM dəqiq olaraq nədir?
PULSE WIDTH MODULATION (PWM)
• Analoq qiymətləri bir rəqəmsal giriş/çıxış pini üzərindən ötürür;
• PWM siqnalı 2 hissədən ibarətdir:
• Dövr (Period): Siqnalın təkrarlanma dövrü (intervalı);
• Pulsun Eni (Pulse Width): Siqnalın 0 (LOW) olmayana qədər neçə müddət 1 (HIGH)
olması;
• İş sikli: siqnalın 1 (HIGH) olması müddətinin %-i, və ya Puls/Dövr;