Skocz do zawartości

szon

Użytkownicy
  • Zawartość

    11
  • Rejestracja

  • Ostatnio

Posty napisane przez szon


  1. @Gieneq Dzięki! Oba sposoby działają. 

    4.4 z negacją

    #define LED_R 10
    #define LED_G 11
    #define LED_B 12
    #define LED_13 13
     
    #define KONTAKTRON 0
    #define PIR 2
    
    void setup() {
      Serial.begin(9600); //Ustawienie prędkości transmisji
      pinMode(LED_R, OUTPUT); //Poszczególne piny sterujące diodą jako wyjścia
      pinMode(LED_G, OUTPUT);
      pinMode(LED_B, OUTPUT);
      pinMode(7, OUTPUT);
     
      pinMode(KONTAKTRON, INPUT_PULLUP); //Kontaktron jako wejście
      pinMode(PIR, INPUT); //PIR jako wejście
        
      digitalWrite(LED_R, LOW);
      digitalWrite(LED_B, LOW);
        
      attachInterrupt(digitalPinToInterrupt(PIR), alarm, RISING); // Przerwanie reagujące na zbocze rosnące
    }
     
    void loop() { 
    }
    
    void alarm() { //Przerwanie
      digitalWrite(LED_G, !digitalRead(LED_G));  // negacja
    }

     


  2. Mam problem z zadaniem 4.4

    zrobiłem 'ręcznie'  ale nie mam pomysłu jak to zautomatyzować

    #define LED_R 10
    #define LED_G 11
    #define LED_B 12
    #define LED_13 13
     
    #define KONTAKTRON 0
    #define PIR 2
    
    volatile int ileRazy = 0;
    
    void setup() {
      pinMode(LED_R, OUTPUT); //Poszczególne piny sterujące diodą jako wyjścia
      pinMode(LED_G, OUTPUT);
      pinMode(LED_B, OUTPUT);
     
      pinMode(KONTAKTRON, INPUT_PULLUP); //Kontaktron jako wejście
      pinMode(PIR, INPUT); //PIR jako wejście
        
      digitalWrite(LED_R, LOW);
      digitalWrite(LED_G, HIGH);
      digitalWrite(LED_B, LOW);
    
      attachInterrupt(digitalPinToInterrupt(PIR), alarm, RISING); // Przerwanie reagujące na zbocze rosnące
    }
     
    void loop() {
      if (ileRazy == 0) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, HIGH);
        digitalWrite(LED_B, LOW);    
      } else if (ileRazy == 1) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, LOW);
        digitalWrite(LED_B, LOW);   
      } else if (ileRazy == 2) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, HIGH);
        digitalWrite(LED_B, LOW);  
      } else if (ileRazy == 3) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, LOW);
        digitalWrite(LED_B, LOW);   
      } else if (ileRazy == 4) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, HIGH);
        digitalWrite(LED_B, LOW);   
      } else if (ileRazy == 5) { 
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, LOW);
        digitalWrite(LED_B, LOW);   
      }
    }
    
    void alarm() { //Przerwanie
      ileRazy++; //Wykryto kolejny alarm
    }

     

    //

    Działające wersje pozostałych zadań

    4.1

    #define LED_R 10
    #define LED_G 11
    #define LED_B 12
    
    #define KONTAKTRON 0
    
    void setup() {
      pinMode(LED_R, OUTPUT); //Poszczególne piny sterujące diodą jako wyjścia
      pinMode(LED_G, OUTPUT);
      pinMode(LED_B, OUTPUT);
    
      pinMode(KONTAKTRON, INPUT_PULLUP); //Kontaktron jako wejście
    
      pinMode(A5, OUTPUT); //Konfiguracja A5 jako wyjście
      
      digitalWrite(LED_R, LOW); //Dioda wyłączona
      digitalWrite(LED_G, LOW);
      digitalWrite(LED_B, LOW);
    }
    
    void loop() {
      if (digitalRead(KONTAKTRON) == LOW) { //Jeśli czujnik zwarty
        digitalWrite(LED_R, LOW); //Stan OK - dioda zielona
        digitalWrite(LED_G, HIGH);
      } else {
        digitalWrite(LED_R, HIGH); //Stan ALARM - dioda czerwona
        digitalWrite(LED_G, LOW);
        tone(A5, 3500);
      }
    }

    4.2

    #define LED_R 10
    #define LED_G 11
    #define LED_B 12
    
    #define KONTAKTRON 0
    #define PIR 2
    
    void setup() {
      pinMode(LED_R, OUTPUT); //Poszczególne piny sterujące diodą jako wyjścia
      pinMode(LED_G, OUTPUT);
      pinMode(LED_B, OUTPUT);
    
      pinMode(KONTAKTRON, INPUT_PULLUP); //Kontaktron jako wejście
      pinMode(PIR, INPUT); //PIR jako wejście
        
      digitalWrite(LED_R, LOW); //Dioda wyłączona
      digitalWrite(LED_G, LOW);
      digitalWrite(LED_B, LOW);
    
      pinMode(A5, OUTPUT); //Konfiguracja A5 jako wyjście
    }
    
    void loop() {
      if (digitalRead(PIR) == LOW) { //Jeśli wykryto ruch
        digitalWrite(LED_R, LOW); //Stan OK - dioda zielona
        digitalWrite(LED_G, HIGH);
        noTone(A5);
      } else {
        digitalWrite(LED_R, HIGH); //Stan ALARM - dioda czerwona
        digitalWrite(LED_G, LOW);
        tone(A5, 4300); //Wygeneruj sygnał o częstotliwości 4300Hz na pinie A5  
        delay(150);  
        tone(A5, 3500); //Wygeneruj sygnał o częstotliwości 3500Hz na pinie A5  
        delay(150);
      }
    }

    4.3

    #define LED_R 10
    #define LED_G 11
    #define LED_B 12
    #define LED_SYG 13
     
    #define KONTAKTRON 0
    #define PIR 2
    
    void setup() {
      pinMode(LED_R, OUTPUT); //Poszczególne piny sterujące diodą jako wyjścia
      pinMode(LED_G, OUTPUT);
      pinMode(LED_B, OUTPUT);
      pinMode(LED_SYG, OUTPUT);
     
      pinMode(KONTAKTRON, INPUT_PULLUP); //Kontaktron jako wejście
      pinMode(PIR, INPUT); //PIR jako wejście
        
      digitalWrite(LED_R, LOW);
      digitalWrite(LED_G, HIGH);
      digitalWrite(LED_B, LOW);
    
      attachInterrupt(digitalPinToInterrupt(PIR), alarm, FALLING); // wywołanie, gdy następuje zmiana wartości ze stanu wysokiego na niski
    }
     
    void loop() {
    
    }
    
    void alarm() {
        digitalWrite(LED_R, HIGH); //Stan ALARM - dioda czerwona
        digitalWrite(LED_G, LOW);
    }

     

    • Lubię! 1

  3. @Gieneq Dzięki, poprawiłem. Teraz działa! ale zastanawia mnie punkt 1

    2. faktycznie zapomniałem w ostatniej wersji układu, dlatego mniejszy A.

    3. Tu mój błąd od początku 105 zamiast 103 używałem 

    4. Wróciłem do 10k

    z 1. mam problem, w wersji, która teraz działa mam z 3 nóżki ne555 przez rezystor 330 na anodę LEDa, a Katodę na GND. Nie tak jak na schemacie 😐 ale układ działa i jeszcze z ciekawostek bo sprawdzałem specjalnie wszystkie elementy. W jednej 104 zamiast 100nF jest 50nF, już wymieniona na nową.

    IMG_20190701_155718.jpg

    • Lubię! 1
×
×
  • Utwórz nowe...