Skocz do zawartości

matfar

Użytkownicy
  • Zawartość

    6
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O matfar

  • Ranga
    2/10
  1. @Belferek coś takiego. Dodam jeszcze, że chciałbym aby były dwa czujniki
  2. @es2 A jak do tego dodać czujnik ultradźwiękowy hc-sr04? Chodzi mi o to jaka jest na to komenda, że gdy czujnik wykryje diody się zapalają. Może inaczej można użyć digitalRead?
  3. Panowie, poddaje się. Nie mam bladego pojęcia jak to napisać. Przeczytałem cały kurs m.in. o millis, while itp. ale dalej nie wiem jak do tego podejść. Moglibyście mi pomóc #define trigPin 3 #define echoPin 2 #define trigPin2 7 #define echoPin2 6 #define OTWIERANIE 8 #define ZAMYKANIE 9 int czas = 8000; unsigned long aktualnyczas = 0; unsigned long zapamietanyczassilnika = 0; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT); pinMode(OTWIERANIE, OUTPUT); pinMode(ZAMYKANIE, OUTPUT); } void loop () { aktualnyczas = millis(); } int czyjnik1() { long czas, dystans; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); dystans = czas / 58; } int czujnik2() { long czas, dystans; digitalWrite(trigPin2, LOW); delayMicroseconds(2); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); czas = pulseIn(echoPin2, HIGH); dystans = czas / 58; } Taki mam początek. Pytanie tylko czy to jest dobrze? Kładzie mnie na łopatki te millis z tymi warunkami digitalWrite(OTWIERANIE, HIGH); delay(czas); digitalWrite(OTWIERANIE, LOW); delay(czas); digitalWrite(ZAMYKANIE, HIGH); delay(czas); digitalWrite(ZAMYKANIE, LOW); Chciałbym, żeby to się tam znalazło, ale warunek ma być taki, że przy zamykaniu czujnik nie może nic wykryć jeśli wykryje, klapa ma się otworzyć i po jakimś czasie znowu zamknąć. Prosiłbym jeszcze raz o pomoc, ale bardziej szczegółowo. Pomimo czytania dalej nie wiem jak to napisać.
  4. Bardzo wam dziękuje za radę. Spróbuje poczytać coś więcej na te tematy, które zasugerowaliście. Jeśli będę miał jakiekolwiek pytania na ten temat, odezwę się.
  5. Witam, robię projekt na Arduino uno, który będzie sterować silnikiem. Do tego projektu zamierzam użyć dwa czujniki odległości. Mój silnik mam za zadanie otworzyć i zamknąć klape. Gdy czujnik coś wyłapie na danej odległości kapa ma się otwierać przez jakiś czas, później chwila pauzy no i po pauzie ma się zamknąć. Mój problem polega na tym, że nie wiem jak napisać kod, który zatrzyma silnik przy zamykaniu klapy wtedy, gdy czujnik odległości coś wykryje. Chciałbym, żeby to działało na takiej samej zasadzie jak brama wjazdowa. Czyli jak fotokomórka coś wykryje przy zamykaniu bramy to wtedy brama się zatrzyma i po chwili zacznie się na nowo otwierać. Kod który mam już napisany #define trigPin 3 #define echoPin 2 #define trigPin2 7 #define echoPin2 6 int OTWIERANIE = 8; int ZAMYKANIE = 9; int czas1 = 8000; int czas2 = 8000; int pauza = 10000; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT); pinMode(OTWIERANIE, OUTPUT); pinMode(ZAMYKANIE, OUTPUT); } void loop() { { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance < 50) { CZUJNIK1(); } else { } if (distance >= 200|| distance <= 0){ Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } long duration2, distance2; digitalWrite(trigPin2, LOW); delayMicroseconds(2); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); duration2 = pulseIn(echoPin2, HIGH); distance2 = (duration2/2) / 29.1; if (distance2 < 50) { CZUJNIK2(); } else { } if (distance2 >= 200 || distance2 <= 0){ Serial.println("Out of range"); } else { Serial.print(distance2); Serial.println(" cm"); } } { } } void CZUJNIK1(){ digitalWrite(OTWIERANIE, HIGH); delay(czas2); digitalWrite(OTWIERANIE, LOW); delay(pauza); digitalWrite(ZAMYKANIE, HIGH); delay(czas1); digitalWrite(ZAMYKANIE, LOW); } void CZUJNIK2(){ digitalWrite(OTWIERANIE, HIGH); delay(czas2); digitalWrite(OTWIERANIE, LOW); delay(pauza); digitalWrite(ZAMYKANIE, HIGH); delay(czas1); digitalWrite(ZAMYKANIE, LOW); } Z góry dziękuję za pomoc!
×
×
  • Utwórz nowe...