• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sygnał losowy
#1
Witam, chciałbym poprosić o drobną pomoc, chodzi oto że z zgromadzonej wiedzy udało mi się napisać:
Kod:
byte opoznienie = 3;
byte czas_zadzialania = 1;
byte ktory_pin[]={2,3,4,5,6,7,8,9,10};
byte x = 0;

void setup() {

pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);

}

void loop() {
  
x = random(0,9);
digitalWrite(ktory_pin[x],HIGH);
delay(300*czas_zadzialania);
digitalWrite(ktory_pin[x],LOW);
delay(300*opoznienie);

}
działa to samoczynnie , ale moim założeniem było aby diody były załączane dopiero po naciśnięciu przycisku ,i puki nie nacisnę przycisku to "wylosowana" dioda cały czas jest w stanie wysokim.
 
Odpowiedź
#2
Witam,
Jak coś ma być wyzwalane przyciskiem skoro tego przycisku nie ma?
Pozdrawiam.
 
Odpowiedź
#3
(06-02-2017, 21:03)Smaczek napisał(a): Witam,
Jak coś ma być wyzwalane przyciskiem skoro tego przycisku nie ma?
Pozdrawiam.

No właśnie , nie mam pojęcia jak go tam umieścić aby działo jak ja chce, co nie co próbowałem i kończyło się niepowodzenie dlatego umieściłem ten szkic w takim stanie.
 
Odpowiedź
#4
Kod:
byte opoznienie = 3;
byte czas_zadzialania = 1;
byte ktory_pin[]={2,3,4,5,6,7,8,9,10};
byte x = 0;
const int s1=11
void setup() {
pinMode(s1,INPUT_PULLUP);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);

}

void loop() {
if(digitalRead(s1)==0){  
x = random(0,9);
digitalWrite(ktory_pin[x],HIGH);
delay(300*czas_zadzialania);
digitalWrite(ktory_pin[x],LOW);
delay(300*opoznienie);
}

}
Czy oto ci chodzi oraz zamieść szkic w jakim próbowałeś to robić jeśli nie jest to tak jak oczekujesz.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#5
(06-02-2017, 22:15)adix napisał(a):
Kod:
byte opoznienie = 3;
byte czas_zadzialania = 1;
byte ktory_pin[]={2,3,4,5,6,7,8,9,10};
byte x = 0;
const int s1=11
void setup() {
pinMode(s1,INPUT_PULLUP);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);

}

void loop() {
if(digitalRead(s1)==0){  
x = random(0,9);
digitalWrite(ktory_pin[x],HIGH);
delay(300*czas_zadzialania);
digitalWrite(ktory_pin[x],LOW);
delay(300*opoznienie);
}

}
Czy oto ci chodzi oraz zamieść szkic w jakim próbowałeś to robić jeśli nie jest to tak jak oczekujesz.

Wgrałem i podłączyłem,ale nie do końca działa tak jak mi chodziło, tz. moim założeniem było aby gdy nacisnę przycisk , "losuję" mi w tym przypadku diodę i utrzymuje stan wysoki, ponowne naciśniecie przycisku znowu "losuje" diodę (wyłącza oczywiście poprzednią) i ponownie utrzymuje ją w stanie wysokim do ponownego naciśnięcia przycisku.Pozdrawiam i dziękuję za odpowiedz. Smile
 
Odpowiedź
#6
Witam,
Kod:
const byte ile_led = 9;
const byte wej = 11;
const byte wyj[ile_led] = {2,3,4,5,6,7,8,9,10};
byte zapalona;

void setup() {
pinMode(wej,INPUT_PULLUP);

for (byte i = 0; i < ile_led; i++)
 {
 pinMode(wyj[i],OUTPUT);
 digitalWrite(wyj[i],LOW);
 }

while(digitalRead(wej))  {};
zapalona = losuj();
digitalWrite(wyj[zapalona] , HIGH);

}

void loop() {
while(digitalRead(wej))  {};
while(!digitalRead(wej))  {};
while(digitalRead(wej))  {};
digitalWrite(wyj[zapalona] , LOW);
zapalona = losuj();
digitalWrite(wyj[zapalona] , HIGH);
}

byte losuj()
{
return (byte)  (millis() % ile_led);
}
Powinno "kulać", a może "kuleć".
Pozdrawiam.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości