Tavs šīs stundas izaicinājums: Pareizi pieslēgt spiedpogu maketo platei, nolasīt tās stāvokli (nospiesta vai atlaista) un izveidot C++ programmu, kas ieslēdz LED diodi tikai tad, kad poga ir nospiesta.
Datorika 7. klase (D.7.2.1., D.7.3.1., D.7.6.1.)Iepriekš mēs devām komandas uz āru (OUTPUT), lai ieslēgtu gaismu. Tagad mums jāsaņem informācija iekšā (INPUT) no pogas. Bet elektrībā ir kāds āķis – ja vads "karājas gaisā" un nav nekur pieslēgts, tas uztver traucējumus un "kļūst traks" (Floating pin). Lai to novērstu, mēs izmantosim iebūvēto drošības sistēmu – PULL-UP rezistoru.
pinMode(2, INPUT_PULLUP);, Arduino iekšēji pieslēdz pinu pie 5V (HIGH). Ja pogu savienosim ar mīnusu (GND), nospiežot to, strāva aizskries uz mīnusu un rādījums kļūs LOW. Tātad: Poga atlaista = HIGH; Poga nospiesta = LOW.int pogasStavoklis = digitalRead(2);if (nosacījums) { ...kods... } else { ...kods... }. Ļoti svarīgi – lai pārbaudītu, vai kaut kas ir vienāds ar kaut ko citu, OBLIGĀTI jāraksta divas vienādības zīmes ==, nevis viena![Ievietot attēlu šeit: Ekrānuzņēmums no Tinkercad ar pareizi pieslēgtu pogu pāri maketo plates viduslīnijai un bultiņām uz GND un Arduino 2. pinu]
Virtuālajā vidē pievienojiet spiedpogu un atjaunojiet LED diodes slēgumu no iepriekšējās stundas.
Uzrakstiet kodu, kas nolasa pogas stāvokli un izdrukā to ekrānā, lai mēs redzētu, vai elektronika strādā.
void setup() ierakstiet: Serial.begin(9600); (Tas atver saziņas kanālu).setup() pievienojiet: pinMode(2, INPUT_PULLUP);void loop() izveidojiet mainīgo, kas nolasa pogu: int pogasStavoklis = digitalRead(2);Serial.println(pogasStavoklis);. Pievienojiet īsu pauzi: delay(100);, lai dators nepārkarstu no datu daudzuma.Apvienojiet pogas nolasīšanu ar LED diodes kontroli – uzrakstiet "If-Else" loģiku.
void setup() pievienot LED pinu: pinMode(13, OUTPUT);void loop(), pēc pogas stāvokļa nolasīšanas mainīgajā, izveidojiet if bloku.if (pogasStavoklis == LOW) { (atcerieties, LOW nozīmē, ka poga piespiesta pie GND).{ } ierakstiet komandu LED diodes ieslēgšanai: digitalWrite(13, HIGH);} else { un iekšā ierakstiet komandu LED izslēgšanai digitalWrite(13, LOW);. Palaidiet un testējiet!Ātrākajām komandām – pievienojiet shēmai sarkanu un zaļu LED. Kad poga nav nospiesta, deg sarkanā gaisma. Kad nospiež, sarkanā izslēdzas un iedegas zaļā.
setup() sadaļā pieteikt jauno pinu kā OUTPUT.if-else bloku. "If" daļā (kad poga nospiesta) viena diode jāieslēdz (HIGH), bet otra jāizslēdz (LOW).INPUT nevis INPUT_PULLUP. Bez pull-up rezistora pins karājas gaisā un uztver radio viļņus kā traucējumus.if (pogasStavoklis == LOW). Ja uzrakstījāt tikai vienu = zīmi, dators domā, ka jūs mēģināt mainīt mainīgā vērtību, nevis uzdot jautājumu.
int buttonPin = 2; // Nodefinējam portus ar vārdiem ērtībai
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
// INPUT_PULLUP pieslēdz iekšējo rezistoru, padarot pinu HIGH (1)
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// Nolasām pogas stāvokli (0 vai 1)
int pogasStavoklis = digitalRead(buttonPin);
// Drukājam monitorā testēšanai
Serial.println(pogasStavoklis);
// Ja poga nospiesta (savienota ar zemi / LOW)
if (pogasStavoklis == LOW) {
digitalWrite(ledPin, HIGH); // Ieslēdz LED
} else {
digitalWrite(ledPin, LOW); // Izslēdz LED
}
}