Random LED's genereren
4 berichten
• Pagina 1 van 1
Random LED's genereren
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);
}
//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
Re: Random LED's genereren
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
}
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
}
Re: Random LED's genereren
Eigenlijk best logisch dat er maar een LED tegelijk brandt.
Kijk nog eens naar de LOOP
cpp code
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
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);
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten