İki adet kodu birleştirmek

batinuysal

Üye
Katılım
16 Eki 2021
Mesajlar
1
Puanları
0
Öncelikle herkese merhaba, elimde 2 adet kod bulunmakta ve bu kodları 2 adet void loop olduğu için birleştirme yapamıyorum @FakirMaker hocam belki siz yardım edersiniz.
1.kodum
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
2.Kodum
#define led 3
#define pot A0

void loop() {

int deger = analogRead(pot);
deger = map(deger,0,1023,0,255);
analogWrite(led,deger);
 

FakirMaker

Paylaşımcı üye
Katılım
5 May 2009
Mesajlar
672
Puanları
106
Sevgili kardeşim step motor için yapılmış kitaplıklar var onları neden kullanmıyorsun. digitalWrite gibi üst seviye fonksiyonlar doğrudan registerların değerini değiştirmediği için zaman kaybı oluşturur. Ayrıca delay fonksiyonu kullanmak pot değerini okumanı yavaşlatacaktır. Ben sana ilkel yolla bu motoru sürecek bir kod parçası bırakıyorum ama bunu günlük hayatta kullanmamanı şiddetle tavsiye ediyorum. Derledim ama çalıştırmadım hatalar olabilir.

C++:
const uint8_t led = 3, pot = A0;
const uint8_t motorPinler[4] ={8,9,10,11};
const bool adimSirasi[4][4] ={{HIGH,LOW,LOW,LOW},{LOW,HIGH,LOW,LOW},{LOW,LOW,HIGH,LOW},{LOW,LOW,LOW,HIGH}};
uint8_t adimDurum = 0;

unsigned long birOncekiZaman = 0;
const long delayTime = 500;

void setup() {
  for(int i=0;i<sizeof(motorPinler);i++){
    pinMode(motorPinler[i],OUTPUT);
    digitalWrite(motorPinler[i],LOW);
  }
}

void loop() {
  unsigned long simdikiZaman = millis();
  if(simdikiZaman - birOncekiZaman >= delayTime){
    for(int i=0;i<sizeof(motorPinler);i++)
      digitalWrite(motorPinler[i],adimSirasi[adimDurum][i]);
    if(++adimDurum == 4)
      adimDurum = 0;
    birOncekiZaman = simdikiZaman;
  }
  uint16_t deger = analogRead(pot);
  deger = map(deger,0,1023,0,255);
  analogWrite(led,deger);
}
 

Forum istatistikleri

Konular
118,481
Mesajlar
834,264
Kullanıcılar
430,455
Son üye
omer4088

Yeni konular

Çevrimiçi üyeler

Üst