Arduino kod yardım

Harun Emre

Üye
Katılım
25 Ocak 2024
Mesajlar
1
Puanları
1
Yaş
23
numpad üzerinden girdiğim açıya encoder ulaşınca herhangi bir çıkıştan sinyal vermesi yeterli fakat işin içinden bi türlü çıkamadım internet üzerindede kod örneği bulamadım
 
Rotary encoder'in gnd ve VCC pinlerini Arduino'nun GND ve 5V pinlerine bağlayın.
Encoder'in çıkış pinlerini (genellikle A ve B olarak adlandırılır) Arduino'nun dijital giriş pinlerine bağlayın.

Örneğin, A pinini 2'ye ve B pinini 3'e bağlayabilirsiniz.

Arduino'nun bir dijital çıkış pinine (örneğin 8) seri direnç ile led bağlayın.

Arduino IDE'de aşağıdaki kodu kullanabilirsiniz.
Bu kod, encoder döndürüldüğünde mevcut pozisyonu takip eder ve belirli bir açıya (örneğin 100 adıma) ulaşıldığında bir LED'i yakar.

// Encoder pin tanımlamaları
const int pinA = 2;
const int pinB = 3;

// Çıkış pin tanımı
const int outputPin = 8;

volatile int position = 0;
int lastPosition = 0;

void setup() {
pinMode(pinA, INPUT_PULLUP);
pinMode(pinB, INPUT_PULLUP);
pinMode(outputPin, OUTPUT);

// Encoder dönüşlerini yakalamak için kesme ayarları
attachInterrupt(digitalPinToInterrupt(pinA), encoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(pinB), encoder, CHANGE);
}

void loop() {
if (position != lastPosition) { // Pozisyon değiştiyse
lastPosition = position;
if (position == 100) { // Belirli bir açıya ulaşıldığında
digitalWrite(outputPin, HIGH); // LED'i yak
}
}
}

void encoder() {
if (digitalRead(pinA) == digitalRead(pinB)) {
position++;
} else {
position--;
}
}

Bu kodda, encoder() fonksiyonu her encoder dönüşünde çağrılır ve" position" değişkeni arttırır veya azaltır.
loop() fonksiyonu içinde, belirlenen pozisyona (bu örnekte 100 adım) ulaşıldığında çıkış pinini 5V yaparak LED'i yakar.

Encoder'ınızın özelliklerine ve dönüş başına adım sayısına bağlı olarak, belirli bir açıya karşılık gelen adım sayısını ayarlamanız gerekebilir.
 
Son düzenleme:

Forum istatistikleri

Konular
128,191
Mesajlar
915,726
Kullanıcılar
449,961
Son üye
omr70

Yeni konular

Geri
Üst