This is an old revision of the document!
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;
}