Random LED's genereren

Arduino specifieke Software
Berichten: 2
Geregistreerd: 30 Jan 2022, 23:19

Random LED's genereren

Berichtdoor Tasha » 30 Jan 2022, 23:25

Ik ben in het bezit van een modelspoorbaan. In mijn huisjes heb ik LED's geplaatst. Ik wil deze random laten branden. Dit werkt al. Het enig probleem dat ik nu nog heb, is dat er slechts 1 LED afzonderlijk oplicht. Hoe moet ik mijn code veranderen zodat er meerdere LED's op hetzelfde tijdstip kan branden?

//Declare and initialize LED pin variables
int LED_1 = 2;
int LED_2 = 3;
int LED_3 = 4;

//this variable will hold a random number generated by the random() function

long randomNumber;

//Set up - this is where you get things "set-up". It will only run once

void setup() {
 
  //setup serial communications through the USB

  Serial.begin(9600);
 
  //Let's print a start messgae to the serial monitor when a new sequence of random numbers starts

  Serial.println("Starting new Random Number Sequence");

  //set the LED pins as outputs

  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
     
  //Let's make it more random

  randomSeed(analogRead(A0));  
     
}//close setup

//The loop() runs over and over again

void loop() {
 
  //generate a random number
  randomNumber = random(2,5);
 
  //display the random number on the serial monitor

  Serial.print("The Random Number is = ");
  Serial.println(randomNumber);
 
  digitalWrite(randomNumber, HIGH);
  delay(1000);
  digitalWrite(randomNumber, LOW);
 
}

Advertisement

Berichten: 68
Geregistreerd: 04 Sep 2021, 08:31

Re: Random LED's genereren

Berichtdoor RobGood » 31 Jan 2022, 23:19

Tasha, Een dergelijk project heb ik ook wel eens gemaakt.

standaard met een arduino kom je niet verder dan 15 leds... maar je kan ook een rits van schuifregisters gebruiken om het aantal pins uit te breiden
In mijn project gebruik gemaakt van WS2811 chips, resulterend in zo een 1000 verschillende leds aan te sturen met 1 standaard Arduino.
Iedere led heeft een status nodig. aan of uit. 8 leds passen in een byte.

Verder een willekeurige UITtijd in seconden en een AANtijd dus

#define aantalleds 255 //bv 255 leds =32 schuifregisters

Iedere led heeft dus 2 en 1/8 byte nodig

hiervoor allerlei array's maken...
byte uittijd[aantalleds];
byte aantijd[aantalleds];
byte ledstatus[aantalleds/8];

in de loop maak je een seconde timer...

unsigned long seconde;

loop{
if(millis()-seconde>1000){
seconde =millis();

//alle leds aflopen
for(byte i=0;i<aantalleds;i++){
//hier de status van de specifieke led[i] testen, das ff een dingetje om de juiste led uit de bytes, waar er 8 inzitten, te berekenen...kan met een paar regels...
dan verder....
Als led[i]== uit...uittijd verminderen als uittijd ==0 led aanzetten, AANtijd opnieuw random instellen AANtijd[i]=random(50,255);
Als led[i]== aan...aantijd verlagen als aantijd ==0 led uitzetten, UITtijd random instellen. UITtijd[i]=random(50,255);
}
}

enz enz...zoiets dus

Zelf heb ik het met lichtplannen gedaan, dus een lichtplan voor een straatlantaarn, een huisje, een buitenlamp enz enz en dan een modeltijd klok die de leds schakelt die op zo een lichtplan zijn ingesteld....

Zeker zijn hier vele wegen naar Rome te vinden...

Succes....
Rob


}

Berichten: 45
Geregistreerd: 08 Jan 2020, 17:23

Re: Random LED's genereren

Berichtdoor RonalT » 02 Feb 2022, 00:15

Eigenlijk best logisch dat er maar een LED tegelijk brandt.
Kijk nog eens naar de LOOP

cpp code
void loop() {

//generate a random number
randomNumber = random(2,5);

//display the random number on the serial monitor

Serial.print("The Random Numbers zijn = ");
Serial.println(randomNumber);

digitalWrite(randomNumber, HIGH);
delay(1000);
digitalWrite(randomNumber, LOW);


Je genereert in regel 4 een randomNumber en gebruikt deze om een uitgang te laten aansturen.
Dus bv het randomNumber is 2, 3 of 4 en in regel 11 maak je een pin hoog. Dan gaat er een seconde (regel 12) lang 1 LED branden. En in regel 13 doe je hem weer uit.

Als je twee uitgangspinnen tegelijk HOOG wil maken zou je regel 4 dubbel moeten uitvoeren met randomNumber1 en randomNumber2
En ookde regels 11 en 13 dubbel moeten uitvoeren.

cpp code
void loop() {

//generate a random number
randomNumber1 = random(2,5);
randomNumber2 = random(2,5);

//display the random number on the serial monitor

Serial.print("The Random Number is = ");
Serial.print(randomNumber1);
Serial.print(" - ");
Serial.println(randomNumber2);

digitalWrite(randomNumber1, HIGH);
digitalWrite(randomNumber2, HIGH);
delay(1000);
digitalWrite(randomNumber1, LOW);
digitalWrite(randomNumber2, LOW);

Berichten: 2
Geregistreerd: 30 Jan 2022, 23:19

Re: Random LED's genereren

Berichtdoor Tasha » 02 Feb 2022, 21:54

Bedankt voor de reacties. :)

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: RussellAlets en 26 gasten