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