Arduino Polska Forum
Sygnał losowy - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Jak zacząć z Arduino (https://forum.arduinopolska.pl/dzial-jak-zacz%C4%85%C4%87-z-arduino)
+--- Wątek: Sygnał losowy (/watek-sygna%C5%82-losowy--1290)



Sygnał losowy - apool1998 - 06-02-2017

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.


RE: Sygnał losowy - Smaczek - 06-02-2017

Witam,
Jak coś ma być wyzwalane przyciskiem skoro tego przycisku nie ma?
Pozdrawiam.


RE: Sygnał losowy - apool1998 - 06-02-2017

(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.


RE: Sygnał losowy - adix - 06-02-2017

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.


RE: Sygnał losowy - apool1998 - 08-02-2017

(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


RE: Sygnał losowy - Smaczek - 13-02-2017

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.