Beste forumleden.
In onderstaande schets worden de relais in een bepaalde volgorde onder spanning gezet.Welke regel(s) kan ik toevoegen om deze volgorde (at random) te zetten? Of kan je mij doorsturen naar een topic betreffende deze materie ?
Dank u.
Dummy.
int relais1 = 9;
int relais2 = 10;
int relais3 = 11;
void setup(){
pinMode(relais1,OUTPUT);
pinMode(relais2,OUTPUT);
pinMode(relais3,OUTPUT);
}
void loop(){
digitalWrite(relais1,HIGH);
digitalWrite(relais2,LOW);
digitalWrite(relais3,LOW);
delay(10000);
digitalWrite(relais1,LOW);
digitalWrite(relais2,LOW);
digitalWrite(relais3,HIGH);
delay(2000);
digitalWrite(relais1,LOW);
digitalWrite(relais2,HIGH);
digitalWrite(relais3,LOW);
delay(1500);
}
[Bericht gewijzigd door Henry S. op (1%)]
switch (random(3)) {
case 0:
Serial.println("relais 1");
break;
case 1:
Serial.println("relais 2");
break;
case 2:
Serial.println("relais 3");
break;
}
Getest-en-wel.
int relais1 = 9;
int relais2 = 10;
int relais3 = 11;
void setup()
{
pinMode(relais1,OUTPUT);
pinMode(relais2,OUTPUT);
pinMode(relais3,OUTPUT);
}
void loop()
{
switch(random(3))
{ case 0:
{ digitalWrite(relais1,HIGH);
digitalWrite(relais2,LOW);
digitalWrite(relais3,LOW);
delay(10000);
break;
}
case 1:
{ digitalWrite(relais1,LOW);
digitalWrite(relais2,LOW);
digitalWrite(relais3,HIGH);
delay(2000);
break;
}
case 2:
{ digitalWrite(relais1,LOW);
digitalWrite(relais2,HIGH);
digitalWrite(relais3,LOW);
delay(1500);
break;
}
}
}
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
Keurig, @deKees! Grappig dat je ook de pauzetijd varieert per "case", hopelijk is het duidelijk dat dat maar een voorbeeld is.
Je vraag is misschien onbedoeld lastiger.
Optie1:
"random" kan namelijk zijn alle 3 de relais aanzetten maar in een willekeurige volgorde.
Dan moet je bijhouden welk relais je al hebt gehad
(de balletjes gaan niet terug in de bingo machine)
Optie 2:
1 willekeurig relais aanzetten.
deKees en Aart hebben dat laatste gemaakt.
(de balletjes gaan elke keer weer terug in de bingo machine)
Met andere woorden het kan voorkomen dat relais1 minuten lang aanblijft omdat de random telkens op 0 valt.
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Een goede random routine gaat op wat langere termijn alle relais evenveel gebruiken. Hebben dat in het verleden eens getest in Java. Na 10 000 random getallen van 1 tot 13 (poker applet) was er geen significant verschil tussen de diverse getallen.
BTW alle outputs laag maken voor de switch spaart weer enkele regels code. Er kunnen dan ook nooit 2 uitgangen gelijktijdig hoog zijn.
Op vrijdag 13 september 2024 14:49:27 schreef buckfast_beekeeper:
Een goede random routine gaat op wat langere termijn alle relais evenveel gebruiken. Hebben dat in het verleden eens getest in Java. Na 10 000 random getallen van 1 tot 13 (poker applet) was er geen significant verschil tussen de diverse getallen.BTW alle outputs laag maken voor de switch spaart weer enkele regels code. Er kunnen dan ook nooit 2 uitgangen gelijktijdig hoog zijn.
Klopt, maar als TS een 'stokkenvangspel' wil maken dan vallen er tussen geen stokken als een relais twee keer aan de beurt komt. Bij 10 relais kan het dan akelig lang duren voordat de laatste stok valt 
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Waar staat geschreven dat het om een stokkenvang spel gaat? Voor poker moet je trouwens ook de getoonde kaarten bijhouden.
Is trouwens gemakkelijk te doen voor een stokkenvang spel. Een boolean array die even groot is als het aantal gebruikte stokken. Valt er een stok zet je de bijhorende boolean om. Voor een stokkenvang spel moet je ook de tijd random gaan bepalen. Anders zit er een vast patroon in. Als stok 1 valt duurt het 5 keer langer dan bij stok 2.
TS kan dan ook de random van de stokken bepalen in een while lus, waar hij controleert of het bewuste random getal al is gebruikt.
Op vrijdag 13 september 2024 17:28:14 schreef buckfast_beekeeper:
Waar staat geschreven dat het om een stokkenvang spel gaat? Voor poker moet je trouwens ook de getoonde kaarten bijhouden. ...
Als voorbeeld gaf ik dat spel.
Omdat er die verschillende tijden bij de 'sequence' staat gok ik dat elke 10 seconden een random relais (of weer dezelfde) aanzetten niet de bedoeling is.
Even een kleine verduidelijking. Het is de bedoeling dat de relais verschillende lichten aansturen in een leegstaand huis gedurende de nacht.
Ik heb in dat verband al een eerdere vraag aan circuits on line gesteld .
Maar de voorgestelde antwoorden (waarvoor dank ) kosten geld.
Dit gebouw is niet van ons ,daarom dacht ik aan een arduino bord.
De lengte van de verschillende brandtijden van de lichten is gemakkelijk in te stellen. Maar ik had graag tussen de verschillende ontstekingen een in te stellen pauze gehad van minuten of uren zodat het gebouw geen flitsend kerstboom word.
switch(random(3))
{ case 0:
{ digitalWrite(relais1,HIGH);
digitalWrite(relais2,LOW);
digitalWrite(relais3,LOW);
delay(10000);
break;
}_ Pauze ( in te stellen )
______________________________________________________
case 1:
{ digitalWrite(relais1,LOW);
digitalWrite(relais2,LOW);
digitalWrite(relais3,HIGH);
delay(2000);
break;
Je weet dat die bouwmarkttijdklokjes ook een random functie hebben?
Ik heb niet het idee dat boeven een entropiestudie doen naar de willekeurigheid van lampen. Een weekklok met 8:22, 8:32, 7:55 etc lijkt me al afdoende.
Let wel op dat je niet of/of schakelt. Een set lampen die in dezelfde seconde uit en aangaan geven geen handbediend gevoel. En je moet eigenlijk wel minstens één lamp aanhouden.
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
ik had graag tussen de verschillende ontstekingen een in te stellen pauze gehad
Ja okee, doe dat dan toch! Zelfs die pauzetijd kan gevarieerd worden
delay(min_pauze + random(weet_ik_veel_wat) *( max_pauze - min_pauze ) )Terwijl ik de draad herlees bedenk ik dat een RasPi een beetje overkill is voor deze toepassing, een Arduino Nano of zo doet het net zo goed. Of een ESP32 Devkit, als het ook per Wifi toegankelijk moet zijn.
En nog een nevenbedenking: misschien een licht/donkerdetectie toevoegen, lichten die ook overdag aangaan zouden wel eens verdenkingen van elektronica en menselijke afwezigheid kunnen triggeren.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
#define NUMRELAYS 3
int relais[NUMRELAYS] = {9, 10, 11};
int delays[NUMRELAYS] = {500, 1000, 15000};
void setup (void)
{
for (int i=0;i<NUMRELAYS;i++)
pinMode(relais[i],OUTPUT);
}
void loop (void)
{
int r = random (NUMRELAYS);
for (int i=0;i<NUMRELAYS;i++)
digitalWrite (relais[i], i == r);
delay (delays[r]);
}
Beste forumleden.
Mag ik bij onderstaande schemerschakelaar de aansluitingdraden van de sensor verlengen ? Of weten jullie een beter model van schemerschakelaar voor arduino waarvan ik de sensor op een andere plaats kan hangen dan de plaats van de arduino ?
Dank u.
Dummy
je hebt zeker geen netwerk / internet beschikbaar. Anders kun je met je arduino gewoon de schemer tijd opvragen voor die locatie. Is ook redelijk random elke dag.
Op maandag 30 september 2024 09:55:01 schreef dummy1:
Ik heb op deze plek inderdaad geen internet of netwerk ter beschikking.
Als je wel de tijd wel goed hebt dan is een astroklok niet zo heel lastig. Je kan een tabel maken voor 365 dagen of een tabelletje maken met een nieuwe tijd voor elke week, dan zit je er maximaal zo'n 14 minuten naast.
Je kan ook iets maken als:
maand op onder delta
1 8:48 16:38 -1
2 8:22 17:21 -2
3 7:20 18:20 -2
..
10 6:40 18:20 +2Dat wil zeggen elke maand heb je juiste nieuwe tijden en elke dag doe je de delta erbij (en 's avonds eraf). In maart heb je ongeveer 2 minuten verschil per dag voor opkomst en in december is het maar 1 minuut. Als je die waardes een beetje slim kiest en je neemt nog 30 minuten extra voor het verschil ondergang/duisternis dan zit je aardig in de buurt.