Arduino sürekli aynı randomu atıyor

Bu konuyu okuyanlar

MotoGold TV

Öğrenci
Katılım
6 Temmuz 2019
Mesajlar
19
Reaksiyon puanı
2
Puanları
3
Yaş
24
Merhaba arkadaşlar okulum için bir proje yapıyordum fakat proje için random komutu kullanmam gerekiyor ve bu komut en başta doğru çalışırken şimdi sürekli aynı pini seçiyor. Proje şöyle 6 tane duba var dubalar 2 şer olarak birbirine bağlı, bir dubada bir led var.
Adsız.png

Arduino 3 pinden birini seçecek ve dubalar random yancak yanan 2 dubanın arasından bir cisim geçtiğinde o dubalar sönüp başkası yanacak cisimin geçmesi için 5 sn ayarladım. Proje şemasında göründüğü gibi 3 tane mesafe sensörü olacak. Herşey tamam ancak random sürekli 2.pini atıyor bunun için sizden yardım istiyorum.
1573905894057.png

İlgileriniz için teşekkürler.

KOD:
const int ledPin[] = {1,2,3};
int to = 4;
int er = 5;
int to1 = 6;
int er1 = 7;
int to2 = 8;
int er2 = 9;
int i;
int rando;
long sure;
long uzaklik;
void setup(){
for(i= 0; i < 3;i++){
pinMode(ledPin, OUTPUT);
}
pinMode(to, OUTPUT);
pinMode(er, INPUT);
pinMode(to1, OUTPUT);
pinMode(er1, INPUT);
pinMode(to2, OUTPUT);
pinMode(er2, INPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop(){
rando = random()%3;
if (ledPin[rando] == 1){
digitalWrite(4, LOW);
delayMicroseconds(5);
digitalWrite(4, HIGH);
delayMicroseconds(10);
digitalWrite(4 ,LOW);
sure = pulseIn(5, HIGH);
uzaklik = sure /58.2;
Serial.println(uzaklik);
if (30 <= uzaklik){
digitalWrite(1, HIGH);
}
else if (30 > uzaklik){
digitalWrite(1, LOW);
}
}
if (ledPin[rando] == 2){
digitalWrite(6, LOW);
delayMicroseconds(5);
digitalWrite(6, HIGH);
delayMicroseconds(10);
digitalWrite(6, LOW);
sure = pulseIn(7, HIGH);
uzaklik = sure /58.2;
Serial.println(uzaklik);
if (30 <= uzaklik){
digitalWrite(2, HIGH);
}
else if (30 > uzaklik){
digitalWrite(2, LOW);
}
}
if (ledPin[rando] == 3){
digitalWrite(8, LOW);
delayMicroseconds(5);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
sure = pulseIn(9, HIGH);
uzaklik = sure /58.2;
Serial.println(uzaklik);
if (30 <= uzaklik){
digitalWrite(3, HIGH);
}
else if (30 > uzaklik){
digitalWrite(3, LOW);
}


Serial.println("random: ");
Serial.println(rando);



}
}
 

ertan2002

Asistan
Katılım
9 Aralık 2008
Mesajlar
346
Reaksiyon puanı
112
Puanları
43
@MotoGold TV,

hocam gördügüm kadariyla random fonksiyonunu parametresiz cagiriyorsun, öyle bir kullanim yok arduino'da, bu C kullanimi..
burdan bakarsan iki sekilde bu metodun overloadingi var, ya max ya da min-max vereceksin. Sen 3 ile modülünü aldigin icin cok önemli degil sayisinin degeri söyle yapabilirsin

random (300) % 3

randomSeed'i de verdigin icin tek sorun random metoduna parametre vermemis gibi görünüyor olman...
 

MotoGold TV

Öğrenci
Katılım
6 Temmuz 2019
Mesajlar
19
Reaksiyon puanı
2
Puanları
3
Yaş
24
Yardımın için çok teşekkürler ancak bu kod 2 gün önce sorunsuzdu dün bozuldu dediğini deniyeceğim:)
 

ertan2002

Asistan
Katılım
9 Aralık 2008
Mesajlar
346
Reaksiyon puanı
112
Puanları
43
Yardımın için çok teşekkürler ancak bu kod 2 gün önce sorunsuzdu dün bozuldu dediğini deniyeceğim:)
calisiyor olabilir hocam ancak dogru calismayabilir.. Arduino salt bir C derleyicisi degil, sorunlar cikabilir nitekim de cikmis. O yüzden kütüphanelerin destekledigi bicimde kullanmaya calisirsan ilerde problem yasamazsin..
 

MotoGold TV

Öğrenci
Katılım
6 Temmuz 2019
Mesajlar
19
Reaksiyon puanı
2
Puanları
3
Yaş
24
Sorun dün sabah endi kendine çözüldü teşekkürler.
 
Üst