Skocz do zawartości

Lampka na Arduino


woskod

Pomocna odpowiedź

Witam,

Zaciekawiony ostatnim wpisem na forum na temat lampki sterowanej gestami, postanowiłem, że ja również wykonam taki projekt. Niestety ze względu na brak niektórych komponentów, mój projekt wyglądać będzie trochę inaczej. I napotkałem następujący problem:

Czujnik HC-SR04 co pół sekundy wykonuję pomiar. Gdy odległość będzie mniejsza od 30cm, arduino ma dać prąd na odpowiednim wyjściu, i włączyć przekaźnik. Następnie ma czekać znowu na na mniej niż 30 cm i go wyłączyć. I nie wiem w jaki sposób to zrobić. Napsałem kod, używając if ale gdy odległość wynosi mniej niż 30 zapalają się, i za chwilę gasną.

Podpowiedzcie, jak należy to zrobić?

Link do komentarza
Share on other sites

Miałem dokładnie ten sam pomysł co Ty . Udało mi się napisać kod który włącza i wyłącza lampkę przez tranzystor. Całość działa tak że gdy czujnik wykryje coś w podanej odległości  to zapala lampkę następnym razem ją gasi. 

Kod:

#define trigPin 12
#define echoPin 11
#define led 13
#define przycisk 10
bool stan = 0;
bool stanP = 0;
int odleglosc = 15;
void setup() {
  Serial.begin (9600);
  pinMode(przycisk,INPUT_PULLUP);
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  pinMode(led,OUTPUT);
}
 
void loop() { 
  
  if(digitalRead(przycisk) == LOW && stanP == 0){
   odleglosc = 70;
    stanP = 1;
    delay(500);
  }else if(digitalRead(przycisk) == LOW && stanP == 1){
   odleglosc = 15;
    stanP = 0;
    delay(500);
  }
  


  long czas, dystans;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
 
  czas = pulseIn(echoPin, HIGH);
  dystans = czas / 58;


 
   if(dystans < odleglosc && stan == 0){
    digitalWrite(led,HIGH);
   stan = 1;
   delay(300);
  }
   else if(dystans < odleglosc && stan == 1){
    digitalWrite(led,LOW);
    stan = 0;
    delay(300);
  }

}

Jeśli masz jakieś pytania do kodu to pytaj.🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Ja również zrobiłem sobie lampkę ale dotykową na ESP32, bo ma piny z wbudowanym czujnikiem dotyku. Żarówkę przerobiłem na prąd stały, żeby mieć PWM i móc ją ściemniać.

Lampka przy krótkim dotyku zapala się lub gaśnie, przy przytrzymaniu "płynnie" jaśnieje. Fajne jako lampka nocna, bo można na oślep ją wymacać i zapala się delikatnie nie oślepiając.

 

#define LED_IN1 15 //PIN MINUSA
#define LED_IN2 2 //PIN PLUSA
int touchAvrg;
int onoff;
int i;
int a;
const int threshold = 16;
const int freq = 5000;     //Wartości dla
const int ledChannel = 0;  //PWM na ESP32
const int resolution = 8;  //Bo na ESP32 nie działa zwykłe AnalogWrite

void setup() {
  ledcSetup(ledChannel, freq, resolution);
  ledcAttachPin(LED_IN2, ledChannel);
  pinMode(LED_IN1, OUTPUT);
  digitalWrite(LED_IN1, LOW);
  onoff = 0;
}

void loop() {
  touchAvrg = 0;
  for(int a=0; a< 20; a++){ // Zbieranie wartości dla uśrednienia 20 wyników z pomiarów z PINu dotykowego
    touchAvrg += touchRead(4);
  }
  touchAvrg = touchAvrg / 20;
  if (touchAvrg < threshold) {
    delay(250);
    if (touchRead(4) < threshold) {
      i = 0;
      while (touchRead(4) < threshold && i < 255) { //Dłuższe przytrzymanie lampki stopniowo podnosi jej jasność
        ledcWrite(ledChannel, i);
        delay(20);
        i++;
      }
      onoff = 1;
    }
    else {
    switch (onoff) { //Krótkie dotknięcie lampki zapala ją z minimalną mocą lub gasi
      case 0:
          ledcWrite(ledChannel, 30);
          onoff = 1;
          break;
      case 1:
          ledcWrite(ledChannel, 0);
          onoff = 0;
          i = 0;
          break;
    }
  }
}
}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.