Atskleiskite Arduino galią! Šis vadovas apima viską nuo pagrindų iki pažangių technikų, įgalindamas novatorius visame pasaulyje.
Arduino programavimas: išsamus vadovas pasaulio novatoriams
Sveiki atvykę į jaudinantį Arduino programavimo pasaulį! Šis išsamus vadovas skirtas visų lygių asmenims, nuo pradedančiųjų, žengiančių pirmuosius žingsnius elektronikoje, iki patyrusių inžinierių, norinčių praplėsti savo įgūdžius. Mes išnagrinėsime Arduino pagrindus, gilinsimės į programavimo koncepcijas ir pateiksime praktinių pavyzdžių, kurie padės jums įgyvendinti savo kūrybines idėjas. Šis vadovas pritaikytas pasaulinei auditorijai, užtikrinant prieinamumą ir aktualumą, nepriklausomai nuo jūsų buvimo vietos ar patirties.
Kas yra Arduino?
Arduino yra atvirojo kodo elektronikos platforma, pagrįsta lengvai naudojama aparatine ir programine įranga. Ji skirta visiems, norintiems kurti interaktyvius objektus ar aplinkas. Arduino plokštės gali nuskaityti įvesties signalus – šviesą jutiklyje, piršto paspaudimą ant mygtuko ar „Twitter“ žinutę – ir paversti juos išvesties signalu – variklio aktyvavimu, šviesos diodo įjungimu, informacijos paskelbimu internete. Galite nurodyti savo plokštei, ką daryti, nusiųsdami instrukcijų rinkinį į plokštėje esantį mikrovaldiklį. Tam naudojate Arduino programavimo kalbą (pagrįstą C++) ir Arduino IDE (integruotą kūrimo aplinką), pagrįstą „Processing“.
Kodėl Arduino toks populiarus visame pasaulyje?
- Paprastas naudojimas: Arduino supaprastina sudėtingas elektronikos koncepcijas, todėl jos tampa prieinamos pradedantiesiems.
- Atvirasis kodas: Atvirojo kodo pobūdis skatina gyvybingą bendruomenę ir bendradarbiavimą.
- Daugiaplatformiškumas: Arduino IDE veikia „Windows“, „macOS“ ir „Linux“ sistemose, užtikrinant prieinamumą vartotojams visame pasaulyje.
- Ekonomiškumas: Arduino plokštės yra palyginti nebrangios, todėl prieinamos plačiam vartotojų ratui.
- Gausios bibliotekos: Didžiulė iš anksto parašyto kodo biblioteka supaprastina įprastas užduotis ir pagreitina kūrimo procesą.
Arduino aplinkos paruošimas
Prieš pradedant programuoti, turėsite paruošti savo Arduino aplinką. Štai žingsnis po žingsnio vadovas:
1. Atsisiųskite Arduino IDE
Apsilankykite oficialioje Arduino svetainėje (arduino.cc) ir atsisiųskite naujausią Arduino IDE versiją, skirtą jūsų operacinei sistemai. Įsitikinkite, kad atsisiunčiate versiją, tinkamą jūsų operacinei sistemai („Windows“, „macOS“ ar „Linux“). Svetainėje pateikiamos aiškios diegimo instrukcijos kiekvienai platformai.
2. Įdiekite Arduino IDE
Vykdykite ekrane pateikiamas instrukcijas, kad įdiegtumėte Arduino IDE. Diegimo procesas yra paprastas ir paprastai apima sutikimą su licencijos sutartimi bei diegimo katalogo pasirinkimą.
3. Prijunkite savo Arduino plokštę
Prijunkite savo Arduino plokštę prie kompiuterio naudodami USB kabelį. Plokštę turėtų automatiškai atpažinti jūsų operacinė sistema. Jei ne, gali tekti įdiegti tvarkykles. Arduino svetainėje pateikiami išsamūs tvarkyklių diegimo vadovai skirtingoms operacinėms sistemoms.
4. Pasirinkite savo plokštę ir prievadą
Atidarykite Arduino IDE. Eikite į Tools > Board (Įrankiai > Plokštė) ir pasirinkite savo Arduino plokštės modelį (pvz., Arduino Uno, Arduino Nano, Arduino Mega). Tada eikite į Tools > Port (Įrankiai > Prievadas) ir pasirinkite nuoseklųjį prievadą, prie kurio prijungta jūsų Arduino plokštė. Teisingas prievado numeris priklausys nuo jūsų operacinės sistemos ir prie kompiuterio prijungtų nuosekliųjų įrenginių skaičiaus.
5. Išbandykite savo sąranką
Norėdami patikrinti, ar jūsų sąranka veikia teisingai, įkelkite paprastą eskizą, pvz., „Blink“ (Mirksėjimas), į savo Arduino plokštę. Šis pavyzdys tiesiog mirksi įmontuotu plokštės šviesos diodu. Norėdami įkelti eskizą, eikite į File > Examples > 01.Basics > Blink (Failas > Pavyzdžiai > 01.Pagrindai > Mirksėjimas). Tada spustelėkite mygtuką „Upload“ (Įkelti) (rodyklės į dešinę piktograma), kad sukompiliuotumėte ir įkeltumėte eskizą į savo plokštę. Jei šviesos diodas pradeda mirksėti, jūsų sąranka veikia teisingai!
Arduino programavimo pagrindai
Arduino programavimas pagrįstas C++ programavimo kalba. Tačiau Arduino supaprastina sintaksę ir pateikia bibliotekų rinkinį, kuris palengvina sąveiką su aparatine įranga. Panagrinėkime keletą pagrindinių programavimo koncepcijų:
1. Pagrindinė Arduino eskizo struktūra
Arduino eskizą (programą) paprastai sudaro dvi pagrindinės funkcijos:
setup()
: Ši funkcija iškviečiama vieną kartą programos pradžioje. Ji naudojama kintamiesiems inicijuoti, kontaktų režimams nustatyti ir nuosekliajai komunikacijai pradėti.loop()
: Ši funkcija iškviečiama nuolat posetup()
funkcijos. Joje yra pagrindinė jūsų programos logika.
Štai pagrindinis pavyzdys:
void setup() {
// čia įrašykite savo sąrankos kodą, kuris bus paleistas vieną kartą:
pinMode(13, OUTPUT);
}
void loop() {
// čia įrašykite savo pagrindinį kodą, kuris bus vykdomas nuolat:
digitalWrite(13, HIGH); // įjunkite šviesos diodą (HIGH yra įtampos lygis)
delay(1000); // palaukite sekundę
digitalWrite(13, LOW); // išjunkite šviesos diodą, nustatydami žemą įtampos lygį (LOW)
delay(1000); // palaukite sekundę
}
Šis kodas sukonfigūruoja 13-ąjį kontaktą kaip išvestį ir po to nuolat įjungia ir išjungia prie to kontakto prijungtą šviesos diodą su 1 sekundės delsa.
2. Kintamieji ir duomenų tipai
Kintamieji naudojami duomenims saugoti jūsų programoje. Arduino palaiko įvairius duomenų tipus, įskaitant:
int
: Sveikieji skaičiai (pvz., -10, 0, 100).float
: Slankiojo kablelio skaičiai (pvz., 3.14, -2.5).char
: Pavieniai simboliai (pvz., 'A', 'b', '5').boolean
: Loginės reikšmės (true
arbafalse
).byte
: Beženklis 8 bitų sveikasis skaičius (nuo 0 iki 255).long
: Ilgieji sveikieji skaičiai.unsigned int
: Beženkliai sveikieji skaičiai.
Pavyzdys:
int ledPin = 13; // Apibrėžkite kontaktą, prijungtą prie šviesos diodo
int delayTime = 1000; // Apibrėžkite delsos laiką milisekundėmis
3. Valdymo struktūros
Valdymo struktūros leidžia valdyti jūsų programos eigą. Įprastos valdymo struktūros apima:
if
sąlygos sakiniai: Vykdo kodą pagal sąlygą.if (sensorValue > 500) { digitalWrite(ledPin, HIGH); // Įjunkite šviesos diodą } else { digitalWrite(ledPin, LOW); // Išjunkite šviesos diodą }
for
ciklai: Kartokite kodo bloką nurodytą kartų skaičių.for (int i = 0; i < 10; i++) { Serial.println(i); // Spausdinkite i reikšmę į nuoseklųjį monitorių delay(100); // Palaukite 100 milisekundžių }
while
ciklai: Kartokite kodo bloką, kol sąlyga yra teisinga.while (sensorValue < 800) { sensorValue = analogRead(A0); // Nuskaitykite jutiklio reikšmę Serial.println(sensorValue); // Spausdinkite jutiklio reikšmę delay(100); // Palaukite 100 milisekundžių }
switch
sakiniai: Parenka vieną iš kelių kodo blokų vykdyti pagal kintamojo reikšmę.switch (sensorValue) { case 1: Serial.println("Atvejis 1"); break; case 2: Serial.println("Atvejis 2"); break; default: Serial.println("Numatytasis atvejis"); break; }
4. Funkcijos
Funkcijos leidžia jums apgaubti pakartotinai naudojamus kodo blokus. Galite apibrėžti savo funkcijas, kad atliktumėte konkrečias užduotis.
int readSensor() {
int sensorValue = analogRead(A0); // Nuskaitykite jutiklio reikšmę
return sensorValue;
}
void loop() {
int value = readSensor(); // Iškvieskite readSensor funkciją
Serial.println(value); // Spausdinkite jutiklio reikšmę
delay(100); // Palaukite 100 milisekundžių
}
5. Skaitmeninė ir analoginė įvestis/išvestis (I/O)
Arduino plokštės turi skaitmeninius ir analoginius įvesties/išvesties (I/O) kontaktus, kurie leidžia jums sąveikauti su išoriniais įrenginiais.
- Skaitmeninė I/O: Skaitmeninius kontaktus galima sukonfigūruoti kaip įvestis arba išvestis. Jie gali būti naudojami skaitmeniniams signalams (HIGH arba LOW) nuskaityti arba skaitmeniniams įrenginiams (pvz., šviesos diodams, relėms) valdyti. Funkcijos, tokios kaip
digitalRead()
irdigitalWrite()
, naudojamos sąveikai su skaitmeniniais kontaktais.int buttonPin = 2; // Apibrėžkite kontaktą, prijungtą prie mygtuko int ledPin = 13; // Apibrėžkite kontaktą, prijungtą prie šviesos diodo void setup() { pinMode(buttonPin, INPUT_PULLUP); // Sukonfigūruokite mygtuko kontaktą kaip įvestį su vidiniu „pull-up“ rezistoriumi pinMode(ledPin, OUTPUT); // Sukonfigūruokite šviesos diodo kontaktą kaip išvestį } void loop() { int buttonState = digitalRead(buttonPin); // Nuskaitykite mygtuko būseną if (buttonState == LOW) { digitalWrite(ledPin, HIGH); // Įjunkite šviesos diodą, jei mygtukas paspaustas } else { digitalWrite(ledPin, LOW); // Išjunkite šviesos diodą, jei mygtukas nepaspaustas } }
- Analoginė I/O: Analoginiai kontaktai gali būti naudojami analoginiams signalams (pvz., iš jutiklių) nuskaityti. Funkcija
analogRead()
nuskaito įtampą analoginiame kontakte ir grąžina reikšmę nuo 0 iki 1023. Šią reikšmę galite naudoti jutiklio rodmeniui nustatyti.int sensorPin = A0; // Apibrėžkite kontaktą, prijungtą prie jutiklio int ledPin = 13; // Apibrėžkite kontaktą, prijungtą prie šviesos diodo void setup() { Serial.begin(9600); // Inicijuokite nuosekliąją komunikaciją pinMode(ledPin, OUTPUT); // Sukonfigūruokite šviesos diodo kontaktą kaip išvestį } void loop() { int sensorValue = analogRead(sensorPin); // Nuskaitykite jutiklio reikšmę Serial.print("Jutiklio reikšmė: "); Serial.println(sensorValue); // Spausdinkite jutiklio reikšmę į nuoseklųjį monitorių if (sensorValue > 500) { digitalWrite(ledPin, HIGH); // Įjunkite šviesos diodą, jei jutiklio reikšmė didesnė nei 500 } else { digitalWrite(ledPin, LOW); // Išjunkite šviesos diodą, jei jutiklio reikšmė mažesnė nei 500 } delay(100); // Palaukite 100 milisekundžių }
Pažangūs Arduino programavimo metodai
Kai gerai suprasite pagrindus, galėsite tyrinėti pažangesnius metodus:
1. Bibliotekos
Bibliotekos yra iš anksto parašyto kodo rinkiniai, kurie supaprastina įprastas užduotis. Arduino turi didžiulę bibliotekų kolekciją, skirtą viskam nuo variklių valdymo iki prisijungimo prie interneto. Galite įtraukti bibliotekas į savo eskizą naudodami direktyvą #include
.
Populiarių bibliotekų pavyzdžiai:
Servo
: Servo varikliams valdyti.LiquidCrystal
: Tekstui rodyti LCD ekranuose.WiFi
: Prisijungti prie Wi-Fi tinklų.Ethernet
: Prisijungti prie Ethernet tinklų.SD
: Duomenims skaityti ir rašyti į SD korteles.
Pavyzdys naudojant Servo biblioteką:
#include
Servo myservo;
int potpin = A0;
int val;
void setup() {
myservo.attach(9);
}
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
delay(15);
}
2. Pertrauktys
Pertrauktys leidžia jums reaguoti į išorinius įvykius realiuoju laiku. Kai įvyksta pertrauktis, Arduino plokštė sustabdo dabartinį vykdymą ir pereina prie specialios funkcijos, vadinamos pertraukties aptarnavimo rutina (ISR). Baigus ISR, programa tęsia darbą nuo ten, kur buvo sustojusi.
Pertrauktys yra naudingos užduotims, reikalaujančioms neatidėliotino dėmesio, pvz., reaguojant į mygtukų paspaudimus ar aptinkant jutiklių reikšmių pokyčius.
volatile int state = LOW;
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), blink, CHANGE);
}
void loop() {
digitalWrite(13, state);
}
void blink() {
state = !state;
}
3. Nuoseklioji komunikacija
Nuoseklioji komunikacija leidžia siųsti ir gauti duomenis tarp jūsų Arduino plokštės ir kompiuterio ar kitų įrenginių. Galite naudoti Serial
objektą duomenims spausdinti į nuoseklųjį monitorių arba siųsti duomenis kitiems įrenginiams per nuoseklųjį prievadą.
Nuoseklioji komunikacija naudinga derinti kodą, rodyti jutiklių reikšmes arba valdyti Arduino plokštę iš kompiuterio.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Sveikas, pasauli!");
delay(1000);
}
4. Kelių failų naudojimas
Didesniems projektams dažnai naudinga padalinti kodą į kelis failus. Tai daro jūsų kodą tvarkingesnį ir lengviau prižiūrimą. Galite sukurti atskirus failus skirtingiems moduliams ar funkcijoms ir tada juos įtraukti į savo pagrindinį eskizą naudodami direktyvą #include
.
Tai padeda didelių projektų organizavimui ir skaitomumui.
Arduino projektų idėjos pasaulio novatoriams
Štai keletas projektų idėjų, kurios jus įkvėps:
- Išmaniųjų namų automatizavimas: Valdykite šviesas, prietaisus ir apsaugos sistemas naudodami išmanųjį telefoną ar balso komandas. Tai galima pritaikyti įvairiems regioniniams elektros standartams ir prietaisų tipams.
- Aplinkos stebėjimo stotis: Rinkite duomenis apie temperatūrą, drėgmę, oro kokybę ir kitus aplinkos veiksnius. Tai taikoma visame pasaulyje, tačiau konkretūs jutikliai gali būti parenkami atsižvelgiant į vietines aplinkos problemas (pvz., radiacijos jutikliai vietovėse netoli atominių elektrinių).
- Robotikos projektai: Kurkite robotus įvairioms užduotims, pvz., valymui, pristatymui ar tyrinėjimui. Robotų tipus galima pritaikyti sprendžiant vietines problemas (pvz., žemės ūkio robotai mažiems ūkiams).
- Dėvima technologija: Kurkite dėvimus įrenginius, kurie seka fizinį aktyvumą, stebi sveikatą ar teikia pagalbines technologijas. Funkcionalumą galima modifikuoti atsižvelgiant į specifines sveikatos problemas ar negalias, paplitusias skirtinguose regionuose.
- Daiktų interneto (IoT) įrenginiai: Prijunkite kasdienius daiktus prie interneto, leisdami juos valdyti ir stebėti nuotoliniu būdu. Ryšio metodus (Wi-Fi, mobilusis ryšys) galima pasirinkti atsižvelgiant į interneto prieigos prieinamumą ir kainą skirtingose srityse.
- Interaktyvios meno instaliacijos: Kurkite interaktyvius meno kūrinius, kurie reaguoja į vartotojo veiksmus ar aplinkos sąlygas. Menas gali būti programuojamas bet kuria kalba, leidžiant kultūrinę išraišką.
Ištekliai tolesniam mokymuisi
Štai keletas išteklių, padėsiančių tęsti jūsų Arduino kelionę:
- Oficiali Arduino svetainė (arduino.cc): Tai geriausia vieta rasti dokumentaciją, pamokas ir Arduino IDE.
- Arduino forumas (forum.arduino.cc): Puiki vieta užduoti klausimus ir gauti pagalbos iš kitų Arduino vartotojų.
- Arduino bibliotekos: Ištirkite turimas bibliotekas, kad išplėstumėte savo Arduino galimybes.
- Internetinės pamokos: Daugybė svetainių ir „YouTube“ kanalų siūlo Arduino pamokas visų lygių vartotojams. Ieškokite „Arduino pamoka“, kad rastumėte gausybę informacijos.
- Kūrybinės dirbtuvės (Makerspaces and Hackerspaces): Prisijunkite prie vietinių kūrybinių dirbtuvių, kad bendradarbiautumėte su kitais kūrėjais ir išmoktumėte naujų įgūdžių.
Išvada
Arduino yra galingas įrankis, kurį galima naudoti kuriant platų interaktyvių projektų spektrą. Išmokę Arduino programavimo pagrindus ir ištyrę turimus išteklius, galite atskleisti savo kūrybiškumą ir įgyvendinti savo idėjas. Raginame jus eksperimentuoti, bendradarbiauti ir dalintis savo kūriniais su pasauline Arduino bendruomene. Sėkmingos kūrybos!