/* • Napiši program, ki prebere stanje tipke, ki je priključena na pinu porta D2.
• Uporabi zunanji pull-up upor tako, da pritisnjena tipka zagotovi logično ničlo.
• Ob pritisnjeni tipki sveti LED dioda na pinu porta D8, sicer je LED dioda ugasnjena.
• Pravilna shema z ustrezno definiranimi vrednostmi uporov.
*/
/*int buttPin = 2;
int ledPin = 8;
void setup() {
pinMode(buttPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int but = digitalRead(buttPin);
if (but == 1) {
digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, HIGH);
}
}*/
/*• Mikrokontroler generira naključna števila od 4 do
vključno 9; uporabi tudi funkcijo randomSeed().
Naključno število se generira samo enkrat in sicer ob zagonu mikrokrmilnika.
• Generirana vrednost naj se izpiše na LED prikazovalniku,
ki je priključen na pine PORTA D (PD0 do PD6).
• S pomočjo tipke, ki je priključena na PORT D
(PD7), generirano vrednost z vsakim pritiskom na tipko
zmanjšamo za 1. Število lahko zmanjšujemo do vrednosti 0.
Nova vrednost se izpiše na LED prikazovalniku.
• Nalogo reši s pomočjo funkcij pinMode(),
digitalWrite() in digitalRead().
*/
/*int digit[] = {0xFE, 0xB0, 0xED, 0xF9, 0xB3, 0xDB, 0xDF, 0xF0, 0xFF, 0xF3};
int num;
int butPin = 7;
void setup() {
for (int x = 0; x < 7; x++) {
pinMode(x, OUTPUT);
}
randomSeed(analogRead(A0));
num = random(4, 9);
pinMode(butPin, INPUT_PULLUP);
}
void loop() {
int but = digitalRead(butPin);
if (but == 0) {
num--;
delay(400);
if (num <= 0) {
num = 0;
}
}
int k = digit[num];
for (int x = 0; x < 7; x++) {
int temp = k & 0x01;
digitalWrite(x, temp);
k = k >> 1;
}
}*/
/*
• Na PORT D priključi 8 LED diod.
• Na pin A0 priključi potenciometer. Prebrano vrednost potenciometra mapiraj tako, da bo najmanjša vrednost 0 in največja 8.
• Vrednost potenciometra določa kateri element seznama se bo izpisal na PORT D.
• Seznam določi tako, da bo pri vrednosti potenciometra 1 svetila 1 LED, pri vrednosti 2 bosta svetili 2 LED, pri 3 bodo svetile tri LED … , pri 8 bo svetilo vseh 8 LED diod.
• Nalogo reši z registri.
*/
int potValue;
int leds[] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF};
void setup() {
DDRC = 0x00;
DDRD = 0xFF;
ADMUX |= (1 << REFS0); // refs0 = Vcc (Microcontroller voltage), refs1 = AREF (refrence voltage)
ADCSRA |= (0 << ADPS2) | (0 << ADPS1) | (1 << ADPS0); // independent ADC clock set to 0b111 = 128 and 0b000 and 0b001 = 2. Bigger number in this case means faster and less accurate readings
ADCSRA |= (1 << ADEN); // enables the adc converter, to disable it, run ADMUX |= ~(1 << ADEN)
}
void loop() {
ADCSRA |= (1 << ADSC); // Starts the read of the ADSC PIN
while (ADCSRA & (1 << ADSC));
potValue = ADC;
potValue = map(potValue, 1023, 0, 8, 1); // / 128; /// 2 / 2 / 2 / 2 / 2 / 2 / 2;
PORTD = leds[potValue];
delay(100);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
pot1:VCC
pot1:SIG
pot1:GND
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
r8:1
r8:2
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C