Professional Documents
Culture Documents
ARS 2023-02-20 Pismeni
ARS 2023-02-20 Pismeni
1. Ispišite na ekran 8 analognih ulaza kao zarezom odvojene vrijednosti i znak enter na kraju. Kao rješenje je obvezno koristiti petlju za ispis.
2. Napišite program za blinkanje LED-ice s periodom od 1 s i to bez korištenja funkcije delay(). Koristite millis() ili Timer1 za računanje vremena.
3. Pomoću UART-a napišite program za postavljanje boje na RGB LED-ici. Pomoću serijske komunikacije se primaju R, G i B komponente.
4. Napišite program za blinkanje LED-ice. Stisak tipke na pinu 4 treba ubrzati treperenje za 20%, a stisak tipke na pinu 5 usporava za 20%.
5. Izmjerite vrijeme proteklo između dvije pojave interrupt-a na stisak tipke. Izmjereno vrijeme prikažite na ekranu u formatu "mm:ss:ms".
1. 4.
3.
#include <TimerOne.h>
String str; volatile bool bInt;
void setup() { unsigned long ms = 0;
Serial.begin(9600); void setup() {
} Serial.begin(9600);
void loop() { pinMode(2,INPUT_PULLUP);
if(Serial.available()) { attachInterrupt(
char c = Serial.read(); digitalPinToInterrupt(2),tipka,RISING);
if(c=='\n') { }
int r,g,b; void tipka() {
sscanf(str.c_str(), bInt = true;
"%d,%d,%d",&r,&g,&b); }
analogWrite( 9,r); void loop() {
analogWrite(10,g); if(bInt) {
analogWrite(11,b); bInt = false;
str = ""; ms = millis() - ms;
} else { int ss = (ms/1000)%60;
str += c; int mm = ((ms/1000)/60)%60;
} int hh = (((ms/1000)/60)/60)%24;
} Serial.println(String(mm)+":"+
} String(ss)+":"+String(ms%1000));
ms = millis();
}
}