Sygnał cyfrowy cz3

Sygnał cyfrowy w Arduino jest oparty na reprezentacji logicznej 1 - stan wysoki lub 0 – stan niski. Napięcie jaki określamy stan wysoki jest zależne od wersji płytki. Najczęściej jest nim napięcie 5V, gdzie przyjmujemy, że napięcie 2.4 – 5V to stan wysoki a 0 – 0.8V to stan niski.

Składnia:
  • pinMode(pin, tryb); - deklaracja pinu i jego trybu pracy
  • digitalRead(pin); - Odczyt stanu pinu
  • digitalWrite(pin, wartość); - Nadanie stanu pinu
Parametry:
  • pin: numer pin Arduino
  • wartość: HIGH lub LOW – ustawienie stanu wysokiego lub niskiego.
  • tryb: INPUT, OUTPUT, lub INPUT_PULLUP – tryb pracy pinu.
Zadanie:

Zbuduj układ, który zapala diodę Led po wciśnięciu przycisku.

Do zbudowania będziemy potrzebowali:
  • Diodę Led
  • Switch
  • Rezystor
  • Arduino (użyłem MKR1010 wifi)

Rezystor musi towarzyszyć diodzie świecącej (LED), ponieważ dioda jest elementem sterowanym prądowo. Aby obliczyć wartość rezystora użyjemy wzoru:

R = (Uzasilania - Udiody) / Ididdy

Napięcie zasilania z pinu cyfrowego to 3,3V. Diodę czerwoną ma napięcie przewodzenia od 2,0 V do 2,3 V. Prąd jaki powinien przepłynąć przez diode to 20 mA, czyli 0,02 A.

R = (3,3 – 2) / 0,02 = 65
R = (3,3 – 2,3) / 0,02 = 50

Obliczając uzyskaliśmy wynik, który informuje nas że musimy użyć rezystora z przedziału od 50Ω do 60 Ω więc użyjemy 56 Ω.


Schemat podłączeniowy z interaktywną treścią:
Arduino
Kod programu:
Kod programu:
#define Button 1  // Definicja pinu 1 jako Button
#define Led 2     // Definicja pinu 2 jako Led

void setup() {
  pinMode(Led, OUTPUT);          // Deklaracja Led jako WYJŚCIE
  pinMode(Button, INPUT_PULLUP); // Deklaracja Button jako WEJŚCIE 
  digitalWrite(Led, LOW); 	 // Wyłącz Led
}

void loop() {
    while(digitalRead(Button) == LOW && digitalRead(Led) == LOW) { // Jeśli przycisk wciśnięty i Led wyłączony
    digitalWrite(Led, HIGH); 	// Włącz Led
    delay(200); 		// Odczekaj 200ms
  } 
    while(digitalRead(Button) == LOW && digitalRead(Led) == HIGH) { // Jeśli przycisk wciśnięty i Led włączony
    digitalWrite(Led, LOW); // Wyłącz Led
    delay(200);		    // Odczekaj 200ms
  } 
}