Näited: Arduino näited Riistvara selgitus: https://docs.google.com/document/d/1IpCPAzKfoOvDZF8ibQgvUFCHyNuvRTI7Snzj9qOUA80/edit?tab=t.0
Näidiskood:
#include <LiquidCrystal.h> #include <Servo.h> // LCD ekraan (ühendatud tavalise 16x2 LCD-ga) LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Servo mootor Servo myServo; int servoPin = 10; //Ventilaator int BIN2 = 2; // DRV8833 mootori draiveri BIN2 // Ratta mootor const int AIN1 = 12; // AIN1 ühildub Arduino pin 12 const int AIN2 = 11; // AIN2 ühildub Arduino pin 11 const int PWMA = 3; // Mootori kiiruse reguleerimine (PWM) // Nupude konstandi defineerimine const int nuppRIGHT = 0; const int nuppUP = 1; const int nuppDOWN = 2; const int nuppLEFT = 3; const int nuppSELECT = 4; const int nuppNONE = 5; /* Globaalsed muutujad */ // Vajutatud nupu muutuja konstandi salvestamine int vajutatudNupp; // Aanaloogsisendi muutuja väärtuse salvestamine int nupuSisend; void setup() { lcd.begin(16, 2); lcd.print("Test algab..."); //Ventilaatori setup pinMode(BIN2, OUTPUT); //Mootori setup pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); // pinMode(button1, INPUT_PULLUP); // pinMode(button2, INPUT_PULLUP); myServo.attach(servoPin); delay(2000); lcd.clear(); } void loop() { // ______________________LCD ekraan test lcd.setCursor(0, 0); lcd.print("LCD OK!"); // _____________________Servo mootor test_________________________ lcd.setCursor(0, 1); lcd.print("Servo liigub..."); myServo.write(0); delay(1000); myServo.write(90); delay(1000); myServo.write(180); delay(1000); //________________________ Ventilaatori test________________________ // Käivita ventilaator lcd.clear(); lcd.setCursor(0, 0); lcd.print("Vent ON"); digitalWrite(BIN2, HIGH); // Lülita mootor sisse delay(3000); // 5 sekundit töötab // Peata ventilaator digitalWrite(BIN2, LOW); // Lülita mootor välja delay(3000); // 5 sekundit paus // __________________________Väike mootor test__________________________ lcd.setCursor(0, 0); lcd.print("Ratas ON"); // 1️⃣ Mootor liigub EDASI täiskiirusel digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); // 255 = max kiirus delay(5000); // 5 sekundit edasi // 2️⃣ Peatume 2 sekundiks analogWrite(PWMA, 0); // Kiirus 0 (mootor seisab) delay(2000); // 3️⃣ Mootor liigub TAGASI poolkiirusel digitalWrite(AIN1, LOW); digitalWrite(AIN2, HIGH); analogWrite(PWMA, 128); // 128 = 50% kiirus delay(5000); // 5 sekundit tagasi // 4️⃣ Peatume uuesti 2 sekundiks analogWrite(PWMA, 0); // Mootor seisab delay(2000); lcd.clear(); // _____________________________Nupud test___________________ /* Kutsub välja funktsiooni kontrolliNuppe ja salvestab tagastatud väärtuse muutujasse */ vajutatudNupp = kontrolliNuppe(); // Kontrollib kas mõni nupp on alla vajutatud if(vajutatudNupp < nuppNONE) { lcd.clear(); // Puhastab ekraani ja liigutab kursori tagasi algasendisse lcd.print("ADC: "); // Teksti kuvamine ekraanil lcd.print(nupuSisend); // Muutuja väärtuse kuvamine ekraanil delay(500); // Lühike viide, et ekraanil väärtust liiga kiirelt ei uuendataks } } // Funktsioon võtab analoogsisendi väärtuse ja võrdleb olemasolevate väärtustega. // Tagastab arvu vahemikus 0 kuni 5 vastavalt defineeritud konstandile int kontrolliNuppe() { // Salvestab muutujasse analoogväärtuse viigult A0 nupuSisend = analogRead(A0); if (nupuSisend < 50) return nuppRIGHT; if (nupuSisend < 195) return nuppUP; if (nupuSisend < 380) return nuppDOWN; if (nupuSisend < 555) return nuppLEFT; if (nupuSisend < 790) return nuppSELECT; // Kui ühtegi nuppu pole vajutatud, siis tagastatakse "nuppNONE" return nuppNONE; }