Mikróvezérlők Programozás · 鴨騎士
鴨騎士 · ポートフォリオ
Főoldal 12. Évfolyam Mikróvezérlők Programozás
12. ÉVFOLYAM · 第十二学年

Mikróvezérlők Programozás

Arduino és mikrokontrollerek programozása, GPIO vezérlés, szenzorkezelés – 12. évfolyam összefoglalója.

Vissza a főoldalra

Mikróvezérlők alapjai

A mikróvezérlő (MCU) egy egychipes számítógép, amely tartalmaz processzort, memóriát és be/kimeneti perifériákat. Ipari és beágyazott rendszerekben széles körben alkalmazzák.

Arduino Uno jellemzői

JellemzőÉrték
ProcesszorATmega328P (8-bit)
Órajel16 MHz
Flash memória32 KB
SRAM2 KB
Digitális I/O lábak14 (6 PWM)
Analóg bemenetek6 (10-bites ADC)
Üzemi feszültség5V

Arduino programozás alapjai

A program szerkezete

Minden Arduino program két fő részből áll: a setup() egyszer fut le indításkor, a loop() pedig folyamatosan ismétlődik.

C++ · Alap program szerkezet – LED villogtatás
void setup() {
  // Egyszer fut le indításkor
  pinMode(13, OUTPUT);    // LED pin kimenetnek
  Serial.begin(9600);     // Soros kommunikáció
}

void loop() {
  // Folyamatosan ismétlődik
  digitalWrite(13, HIGH); // LED be
  delay(1000);             // 1 másodperc várakozás
  digitalWrite(13, LOW);  // LED ki
  delay(1000);
}

Analóg olvasás

C++ · Analóg feszültség mérés
int ertek = analogRead(A0);           // 0–1023 közötti érték
float feszultseg = ertek * (5.0 / 1023.0);
Serial.println(feszultseg);

Fontosabb GPIO függvények

FüggvényLeírásPélda
pinMode()Pin irány beállításapinMode(7, INPUT)
digitalWrite()Digitális kimenet írásadigitalWrite(7, HIGH)
digitalRead()Digitális bemenet olvasásadigitalRead(2)
analogRead()Analóg bemenet olvasása (0–1023)analogRead(A0)
analogWrite()PWM jel generálása (0–255)analogWrite(9, 128)
delay()Várakozás milliszekundumbandelay(500)

Szenzorkezelés

DHT11 – Hőmérséklet és páratartalom szenzor

C++ · DHT11 szenzor kezelés
#include <DHT.h>
#define DHTPIN   2
#define DHTTYPE  DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float homerseklet = dht.readTemperature();
  float paratartalom = dht.readHumidity();
  Serial.print("Hőmérséklet: ");
  Serial.print(homerseklet);
  Serial.println(" °C");
  Serial.print("Páratartalom: ");
  Serial.print(paratartalom);
  Serial.println(" %");
  delay(2000);
}
ℹ️ A DHT11 szenzor ±2°C hőmérséklet és ±5% relatív páratartalom pontossággal rendelkezik. Pontosabb méréshez DHT22 ajánlott.

Projektfeladat

A projektet egy vasúti sorompó működését reprezentálja – azon belül is a sorompó fel-le mozgatása szervómotor segítségével, és a lámpa megfelelő működése Arduino segítségével.

A projekthez 3D nyomtató segítségével nyomtattam ki az egyes elemeket: a vasúti átkelőhely alapját, a motornak egy kisebb dobozt – ami megtartja a motort és rácsatlakoztatható a sorompó –, valamint a lámpát.