İ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);
 
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
128,123
Mesajlar
915,187
Kullanıcılar
449,828
Son üye
berkayerdem

Yeni konular

Geri
Üst