Kontrolni test: Arduino i ESP32
Test proverava gradivo celog kursa: digitalne i analogne ulaze i izlaze, PWM, senzore, servo motor, ESP32 i veb server. Ima dva dela: test znanja sa 15 pitanja i praktične zadatke u kojima pišeš programe.
Šta treba znati
- razliku između
setup()iloop(), naredbepinMode,digitalWrite,digitalReadidelay - povezivanje LED diode (otpornik, anoda i katoda) i tastera sa
INPUT_PULLUP analogRead(0–1023 na Arduinu, 0–4095 na ESP32), funkcijemapiconstrain- PWM:
analogWritena Arduinu iledcWritena ESP32;toneinoTone - senzore DHT11, LDR i HC-SR04 (kako se računa rastojanje) i servo motor
- razlike između Arduina Uno i ESP32: 3,3 V, Wi-Fi, pinovi koji su samo ulazi
millis()umestodelay()i jednostavan veb server na ESP32
Kako izgleda test
- Trajanje: dva školska časa – prvi za test znanja i zadatak 1, drugi za zadatke 2 i 3 (ili kod kuće, kao vežba).
- Test znanja: 15 pitanja sa ponuđenim odgovorima, svako po 2 poena.
- Praktični zadaci: 3 zadatka po 10 poena. Za pun broj poena program mora da radi na ploči (ili u Tinkercad-u) i da bude pregledan, sa komentarima.
| Poeni (od 60) | 0–23 | 24–32 | 33–42 | 43–51 | 52–60 |
|---|---|---|---|---|---|
| Ocena | 1 | 2 | 3 | 4 | 5 |
Skala je predlog za samostalnu proveru; nastavnik može da je prilagodi.
Test znanja (15 pitanja)
Za svako pitanje izaberi jedan odgovor i klikni „Proveri“. Svaki tačan odgovor nosi 2 poena.
Otvori test
Test znanja: Arduino i ESP32 (15 pitanja)
1. Koliko puta se izvrši setup()?
2. Šta radi pinMode(7, OUTPUT)?
3. Šta je potrebno da LED dioda ne pregori?
4. Koju vrednost vraća analogRead() na Arduinu Uno kada je na pinu 5 V?
5. Šta vraća map(512, 0, 1023, 0, 100)?
6. Koji raspon prima analogWrite() na Arduinu Uno?
7. Koliki napon sme da se dovede na pin ESP32?
8. Šta meri senzor DHT11?
9. Odjek ultrazvučnog senzora vratio se posle 580 µs. Koliko je prepreka udaljena? (zvuk: 0,034 cm/µs)
10. Kako se zadaje ugao servo motora?
11. Koji pinovi ESP32 mogu da budu samo ulazi?
12. Šta je prednost millis() u odnosu na delay()?
13. Šta ESP32 ima, a Arduino Uno nema?
14. RGB LED dioda sa zajedničkom katodom dobije vrednosti (0, 0, 255). Koju boju vidimo?
15. Preko koje veze se povezuju OLED displej i MPU6050?
Praktični zadaci
Za svaki zadatak napiši program, poveži kolo i proveri da li radi. Bodovanje: tačno povezivanje 3 poena, program radi 5 poena, pregledan kod sa komentarima 2 poena.
- Tri LED diode i taster (Arduino Uno). LED diode su na pinovima 4, 7 i 12, a taster na pinu 2. Svaki pritisak tastera pali još jednu diodu; posle trećeg pritiska sve svetle, a četvrti pritisak ih gasi i sve kreće ispočetka.
- Parking senzor (Arduino Uno). Ultrazvučni senzor HC-SR04 (Trig na pinu 9, Echo na pinu 10) i zvučnik na pinu 8. Kada je prepreka bliža od 100 cm, zvučnik pišti – što je prepreka bliže, pisak je češći. Na manje od 10 cm ton je neprekidan.
- LED preko veb strane (ESP32). ESP32 pravi veb stranu sa dva linka, „Upali“ i „Ugasi“, kojima se pali i gasi LED dioda na GPIO2. Strana prikazuje da li je LED upaljena.
Rešenje 1: tri LED diode i taster
// Kontrolni – zadatak 1: taster na pinu 2 pali tri LED diode redom (4, 7, 12),
// svaki pritisak pali sledeću; posle treće sve se gase.
const int LED[3] = { 4, 7, 12 };
const int TASTER = 2;
int koliko = 0; // koliko dioda svetli (0–3)
int prethodno = HIGH;
void prikazi() {
for (int i = 0; i < 3; i++) {
digitalWrite(LED[i], i < koliko ? HIGH : LOW);
}
}
void setup() {
for (int i = 0; i < 3; i++) pinMode(LED[i], OUTPUT);
pinMode(TASTER, INPUT_PULLUP);
}
void loop() {
int sada = digitalRead(TASTER);
if (prethodno == HIGH && sada == LOW) {
koliko++;
if (koliko > 3) koliko = 0;
prikazi();
delay(30);
}
prethodno = sada;
}
Rešenje 2: parking senzor
// Kontrolni – zadatak 2: parking senzor
// Arduino Uno, HC-SR04: Trig 9, Echo 10, zvučnik na pinu 8
// što je prepreka bliže, pisak je češći; na manje od 10 cm zvuk je neprekidan.
const int TRIG = 9;
const int ECHO = 10;
const int ZVUCNIK = 8;
long rastojanjeCm() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long t = pulseIn(ECHO, HIGH, 30000); // 0 ako se odjek ne vrati
return t * 0.034 / 2; // zvuk ide do prepreke i nazad
}
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
void loop() {
long d = rastojanjeCm();
Serial.println(d);
if (d == 0 || d > 100) {
noTone(ZVUCNIK); // ništa u blizini
delay(100);
} else if (d < 10) {
tone(ZVUCNIK, 1000); // neprekidan ton
delay(100);
} else {
tone(ZVUCNIK, 1000, 80); // kratak pisak
delay(d * 10); // pauza raste sa rastojanjem
}
}
Rešenje 3: LED preko veb strane
// Kontrolni – zadatak 3: ESP32 – veb strana sa dva dugmeta pali i gasi LED na GPIO2
#include <WiFi.h>
#include <WebServer.h>
const char* SSID = "IME_MREZE";
const char* LOZINKA = "LOZINKA";
const int LED_PIN = 2;
WebServer server(80);
bool upaljena = false;
void strana() {
String s = "<!DOCTYPE html><html><head><meta charset='utf-8'></head><body>";
s += "<h1>LED je " + String(upaljena ? "upaljena" : "ugasena") + "</h1>";
s += "<p><a href='/upali'>Upali</a> | <a href='/ugasi'>Ugasi</a></p></body></html>";
server.send(200, "text/html", s);
}
void upali() {
upaljena = true;
digitalWrite(LED_PIN, HIGH);
strana();
}
void ugasi() {
upaljena = false;
digitalWrite(LED_PIN, LOW);
strana();
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
WiFi.begin(SSID, LOZINKA);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println(WiFi.localIP());
server.on("/", strana);
server.on("/upali", upali);
server.on("/ugasi", ugasi);
server.begin();
}
void loop() {
server.handleClient();
}
Posle testa
Ako si negde izgubio poene, ponovi tu lekciju:
- LED, taster i PWM – LED dioda, taster i semafor, LED dioda, taster i PWM (ESP32)
- senzori – LDR senzor, senzor temperature, ultrazvučni senzor
- zvuk i boje – zvučnik i RGB LED
- ESP32 i veb server – DHT11 i meteo stanica, pametna učionica
