Arduino Hareket Sensörü İle Led Yakma

perqest

Üye
Katılım
5 Nis 2022
Mesajlar
4
Puanları
1
Arduino hareket sensörü her çalıştığında led yakmasını istiyorum.Mesela 1 kere hareketi algıladı 1. Pindeki led, 1 kere daha algıladı 2. Pindeki led bunu nasıl yapabilirim.Çok acil
 
int led1 = 2;
int led2 = 3;
int led3 = 4;
int sensor = 7;

int val = 0;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(sensor, INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(sensor);
if (val == HIGH) {
digitalWrite(led1, HIGH);
delay(500);
val ==0;
}
 
C++:
const uint8_t sensor_pin = PB0, //Arduino 8
          led1 = PD2,           //Arduino 2
          led2 = PD3,           //Arduino 3
          led3 = PD4,           //Arduino 4
          led_sayisi = 3;
int sira = -1;
uint8_t ledler[led_sayisi] = {led1,led2,led3};

void setup() {
  DDRB &= ~(1<<sensor_pin);
  PORTB |= (1<<sensor_pin);  //dahili pull-up kullanmayacaksan burayı sil
  DDRD |= (1 << led1) | (1 << led2) | (1 << led3);
}

void loop() {
  if(!(PINB & (1<<sensor_pin))){  //Sensör pozitif çıkış veriyorsa baştaki ! işaretini kaldır
    do{
      delay(250);
    }
    while(!(PINB & (1<<sensor_pin))); //Sensör pozitif çıkış veriyorsa baştaki ! işaretini kaldır
      PORTD = ~(1 << ledler[sira%led_sayisi]) & PORTD;
      PORTD |= (1 << ledler[++sira%led_sayisi]);

  }

}
 
Son düzenleme:
C++:
const uint8_t sensor_pin = PB0, //Arduino 8
          led1 = PD2,           //Arduino 2
          led2 = PD3,           //Arduino 3
          led3 = PD4,           //Arduino 4
          led_sayisi = 3;
int sira = -1;
uint8_t ledler[led_sayisi] = {led1,led2,led3};

void setup() {
  DDRB &= ~(1<<sensor_pin);
  PORTB |= (1<<sensor_pin);  //dahili pull-up kullanmayacaksan burayı sil
  DDRD |= (1 << led1) | (1 << led2) | (1 << led3);
}

void loop() {
  if(!(PINB & (1<<sensor_pin))){  //Sensör pozitif çıkış veriyorsa baştaki ! işaretini kaldır
    do{
      delay(250);
    }
    while(!(PINB & (1<<sensor_pin))); //Sensör pozitif çıkış veriyorsa baştaki ! işaretini kaldır
      PORTD = ~(1 << ledler[sira%led_sayisi]) & PORTD;
      PORTD |= (1 << ledler[++sira%led_sayisi]);

  }

}
Peki 2. Led yanarken 1. Yi kapatmamasını sağlayabilir miyiz? Sıra sıra yanıyor evet ama
Örnek olarak: 1. Led yandı 2. Led yanarken 1. Led sönüyor ya da 3. Led yandı ama 1 ve 2. Ledler sönüyor.Ben yandıktan sonra sönmemesini istiyorum.
 
Peki 2. Led yanarken 1. Yi kapatmamasını sağlayabilir miyiz? Sıra sıra yanıyor evet ama
Örnek olarak: 1. Led yandı 2. Led yanarken 1. Led sönüyor ya da 3. Led yandı ama 1 ve 2. Ledler sönüyor.Ben yandıktan sonra sönmemesini istiyorum.
Yeminle sıtkım sıyrıldı ya böyle sorulardan. Ne bi teşekkür ne bi nezaket var. Yazdıklarımı zerre kadar anlamaya çalşmak yok tamamen işini halletmeye yönelik sorular. Ödev felandır Allah bilir.

C++:
PORTD = ~(1 << ledler[sira%led_sayisi]) & PORTD;

sil bu satırı ve Allah rızası için başka soru sorma!
 
Yeminle sıtkım sıyrıldı ya böyle sorulardan. Ne bi teşekkür ne bi nezaket var. Yazdıklarımı zerre kadar anlamaya çalşmak yok tamamen işini halletmeye yönelik sorular. Ödev felandır Allah bilir.

C++:
PORTD = ~(1 << ledler[sira%led_sayisi]) & PORTD;

sil bu satırı ve Allah rızası için başka soru sorma!
Kötü bir şekilde yazdığımı düşünmüyorum.Sağlayabilir miyiz? diye sormuşum evet ya da hayır deseydin zaten cevabını alırdın.Yine de teşekkür ederim.
 
Son düzenleme:

Forum istatistikleri

Konular
128,336
Mesajlar
916,799
Kullanıcılar
450,178
Son üye
Esat YILDIZ

Yeni konular

Geri
Üst