ebSkola

2.3 Analogie signāli (Potenciometrs)

Stundas uzdevums: Pieslēgt potenciometru, izprast analogo datu nolasīšanu (no 0 līdz 1023) un izmantot iegūtos datus, lai plūstoši mainītu LED diodes spilgtumu.

Datorika 7. klase (D.7.2.1., D.7.4.1., D.7.6.1.)

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - pieslēdz potenciometra trīs kājas · 2. uzdevums (~20 min) - izdrukā vērtības 0-1023 Serial Monitor · 3. uzdevums (~25 min) - regulē LED spilgtumu ar kloķi. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver tinkercad.com un jaunu Circuit projektu - šoreiz vajadzēs arī Arduino portu ar tildes zīmi (~), jo bez tās spilgtumu regulēt nevar.

Teorija: Melnbaltā un krāsainā pasaule (Digitāls pret Analogu)

Līdz šim mēs izmantojām pogas (Digitāls signāls), kas deva tikai divas vērtības – 0 (LOW) vai 1 (HIGH). Bet reālā pasaule nav tikai melnbalta! Kā izmērīt temperatūru, gaismas spilgtumu vai pagriezt skaļuma kloķi? Tam nepieciešami analogie signāli.

  • Analogie porti (A0 līdz A5): Arduino apakšējā labajā stūrī ir īpaši porti. Tie spēj izmērīt spriegumu (no 0V līdz 5V) un pārvērst to skaitlī no 0 līdz 1023.
  • Potenciometrs: Tas ir mainīgs rezistors (gluži kā skaļuma regulēšanas poga radio). Tam ir 3 kājiņas. Ārējās pieslēdz pie 5V un GND, bet vidējā kājiņa iet uz analogo portu (A0). Griežot kloķi, spriegums vidējā kājiņā mainās.
  • analogRead(pin): Komanda, kas nolasa sensora vērtību. Piemēram: int dati = analogRead(A0);
  • analogWrite(pin, vērtība): Ja gribam plūstoši iedegt LED diodi (nevis tikai ieslēgt/izslēgt), izmantojam šo komandu. Piezīme: Tā darbojas tikai uz portiem, kuriem blakus ir vilnītis (~), piemēram, ~9. Vērtība var būt no 0 līdz 255.

Vizuālais orientieris: potenciometra vidējā kāja savienojas ar A0 pinu, bet abas ārējās kājas ar 5V un GND.

Praktiskie uzdevumi

1. uzdevums -

Pieslēdz potenciometra trīs kājas

Beigās tavs potenciometrs būs pareizi savienots un nesabojāsies simulācijā.

  1. Izveido jaunu Tinkercad projektu ar Arduino un maketo plati.
  2. Savieno 5V ar sarkano (+) līniju un GND ar melno (-) līniju.
  3. Ievelc uz maketo plates komponenti "Potentiometer".
  4. Savieno kreiso kāju (Terminal 1) ar melno GND līniju.
  5. Savieno labo kāju (Terminal 2) ar sarkano 5V līniju.
  6. Savieno vidējo kāju (Wiper) ar Arduino portu A0.

Gatavs, kad: no vidējās kājas iet vads tieši uz A0, bet abas malējās kājas nav savienotas viena ar otru.

2. uzdevums -

Izdrukā vērtības 0-1023 Serial Monitor

Beigās tu redzēsi, kā skaitlis ekrānā mainās, griežot kloķi.

  1. Pārslēdz redaktoru uz koda (Text) skatu.
  2. Ieraksti funkcijā setup() rindu Serial.begin(9600);.
  3. Ieraksti funkcijā loop() rindu int sensoraVertiba = analogRead(A0);.
  4. Pievieno zem tās Serial.println(sensoraVertiba); un delay(50);.
  5. Palaid simulāciju un atver Serial Monitor.
  6. Pagriez kloķi ar peli no viena gala līdz otram.

Gatavs, kad: vienā kloķa galā ekrānā ir aptuveni 0, otrā - aptuveni 1023.

3. uzdevums -

Regulē LED spilgtumu ar kloķi

Beigās diode kļūs gaišāka un tumšāka, kad tu griez potenciometru.

  1. Pievieno LED ar 220 omu rezistoru pie Arduino 9. porta - tam blakus ir tildes zīme (~).
  2. Ieraksti funkcijā setup() rindu pinMode(9, OUTPUT);.
  3. Ieraksti funkcijā loop() rindu int gaisma = sensoraVertiba / 4;.
  4. Pievieno zem tās rindu analogWrite(9, gaisma);.
  5. Palaid simulāciju un pagriez kloķi lēnām.
  6. Pieraksti vienu secinājumu: kāpēc rādījums jādala tieši ar 4.

Gatavs, kad: diode plūstoši maina spilgtumu, nevis tikai ieslēdzas un izslēdzas.

Papildu uzdevums - Instrumentu panelis ar sliekšņiem

Ja pamatdarbs ir gatavs, izveido skaļuma indikatoru no trim diodēm.

  1. Pievieno vēl divas LED diodes ar rezistoriem pie 10. un 11. porta.
  2. Pieteic abus jaunos portus funkcijā setup() kā OUTPUT.
  3. Uzraksti nosacījumu: ja vērtība ir mazāka par 300, deg tikai pirmā diode.
  4. Pievieno zaru: ja vērtība ir no 300 līdz 700, deg pirmā un otrā.
  5. Pievieno pēdējo zaru: ja vērtība ir lielāka par 700, deg visas trīs.

Gatavs, kad: lēnām griežot kloķi, diodes iedegas pa vienai, nevis visas reizē.

Biežākās kļūdas (un kā tās labot):

  • Sakausējums (īssavienojums): Vidējā kāja savienota ar 5V vai GND, bet abas malējās savienotas kopā. Simulācijā potenciometrs "uzsprāgs". Vienmēr pārbaudi vidējo vadu - tam jāiet uz A0.
  • Serial Monitor rāda haotiskus skaitļus (lēkā): A0 vadam ir slikts savienojums vai 5V/GND vadi nav pievienoti. Analogais ports karājas gaisā un nolasa traucējumus.
  • LED spilgtums mainās dīvaini vai nedeg: Tu lietoji digitalWrite (tikai ieslēgt/izslēgt) analogWrite vietā, vai arī pievienoji LED portam bez tildes (piemēram, 8 vai 13), kas neprot analogo spriegumu.

Koda piemērs (0-1023 pārvēršana par 0-255 - grūtākā daļa)

// Divas vietas, kur šajā stundā apstājas gandrīz visi:
//   1) analogRead dod 0..1023, bet analogWrite pieņem tikai 0..255,
//      tāpēc rādījums JĀDALA ar 4 (1023 / 4 = 255).
//   2) analogWrite strādā TIKAI portos ar tildes zīmi ~ (3, 5, 6, 9, 10, 11).
//      Portā 13 spilgtums nemainīsies - diode tikai iedegsies vai nodzisīs.

int potPin = A0;  // Potenciometra pieslēgvieta
int ledPin = 9;   // LED pieslēgvieta (OBLIGĀTI ar ~ zīmi)

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 1. Nolasa potenciometra stāvokli (0 līdz 1023)
  int sensoraVertiba = analogRead(potPin);
  
  // 2. Pielāgo matemātiku (Dalām ar 4, lai iegūtu skaitli no 0 līdz ~255)
  int spilgtums = sensoraVertiba / 4;
  
  // 3. Izdrukā datus pārbaudei
  Serial.println(spilgtums);
  
  // 4. Padod mainīgu spriegumu uz LED diodi
  analogWrite(ledPin, spilgtums);
  
  delay(15); // Neliela pauzīte stabilitātei
}
        
Griežot kloķi, diode plūstoši kļūst gaišāka vai tumšāka, un Serial Monitor rāda skaitli no 0 līdz 255. Ja aizmirsti dalīt ar 4, skaitlis pāraug 255 un diode pēc tam vairs nekļūst gaišāka - tā "iesprūst" maksimumā.