Skocz do zawartości

ponyyou

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O ponyyou

  • Ranga
    1/10

Informacje

  • Płeć
    Mężczyzna
  1. Witam zadanie domowe wykonałem (dokładniej kod) w taki sposób : #define C 3 #define E 5 #define D 6 #define B 11 #define G 2 #define A 7 #define F 10 #define button_0 8 #define button_plus 9 #define button_minus 4 void setup() { pinMode(C, OUTPUT); pinMode(E, OUTPUT); pinMode(D, OUTPUT); pinMode(B, OUTPUT); pinMode(G, OUTPUT); pinMode(A, OUTPUT); pinMode(F, OUTPUT); pinMode(button_0, INPUT_PULLUP); pinMode(button_plus, INPUT_PULLUP); pinMode(button_minus, INPUT_PULLUP); } int i = 0; void loop() { if(digitalRead(button_0) == LOW) { i = 0; wysw(i); } if(digitalRead(button_plus) == LOW && i < 11){ i = i+1; wysw(i); while(digitalRead(button_plus) == LOW) { delay(20); } } if(digitalRead(button_minus) == LOW){ i = i-1; wysw(i); while(digitalRead(button_minus) == LOW) { delay(20); } } } void wysw(int cyfra){ switch (cyfra){ case 0: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, LOW); break; case 1: digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); break; case 2: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, LOW); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, LOW); digitalWrite(G, HIGH); break; case 3: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, HIGH); break; case 4: digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); break; case 5: digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); break; case 6: digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, HIGH); break; case 7: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); break; case 8: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, HIGH); break; case 9: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); break; case 10: digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, LOW); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, HIGH); break; default: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, LOW); i = 0; break; } } Można w jakiś zastąpić while ale nie samym delay bo wtedy przycisk działa z opóźnieniem ?
  2. Witam pytanie w sprawie PIR. Zastanawia mnie czy mogę w jakiś sposób skrócić moment w którym jest HIGH. Czy też tak macie że po stanie wysokim trzeba jakąś chwilę odczekać i dopiero potem PIR jest w stanie znowu wykryć ruch. #include "pitches.h" int melody[] = { NOTE_GS7, NOTE_AS6, NOTE_D7, 0, NOTE_C8, NOTE_B5 }; int durations [] = { 8, 8, 4, 4, 8, 8 }; void setup() { pinMode(2, INPUT); Serial.begin(9600); } boolean wejscie = false; int licznik = 0; void loop() { if(digitalRead(2) == HIGH) { Serial.println(licznik = licznik + 1); } if(digitalRead(2) == HIGH && wejscie == false) { for (int thisNote = 0; thisNote < 3; thisNote++) { int duration = 1000 / durations[thisNote]; tone(A5, melody[thisNote], duration); int pause = duration * 1.30; delay(pause); noTone(A5); } wejscie = true; } if(digitalRead(2) == LOW){ noTone(A5); wejscie = false; licznik = 0; } }
×