Wauw, geweldig die info! Ik koop niks in China, maar als het hier te koop is prima. Ik ga er naar kijken.
En hoe krijg ik zo'n script erop? Kan ik dat zelf?
vind het leuk dat je hier de winkelier rijk gaat maken en china niet goed genoeg is.Ik denk aan mijn portemonnee en als ik het ginds voor 1 euro kan kopen ga ik hier geen 20 euro betalen voor identiek hetzelfde dat die verkoper ook daar haalt
Kan jij dan tzt zo'n programma schrijven voor mij?
// Configuratieconst int numLeds = 3; // Aantal LED'sconst int ledPins[numLeds] = {2, 3, 4}; // Pinnen waar de LED's op aangesloten zijn// Min en max aan-tijden in milliseconden voor elke LEDconst unsigned long minTimes[numLeds] = {100, 200, 300}; // Minimale aan-tijd per LEDconst unsigned long maxTimes[numLeds] = {500, 800, 1000}; // Maximale aan-tijd per LED// Variabelen voor timingunsigned long previousTimes[numLeds]; // Laatste keer dat elke LED veranderdeunsigned long intervals[numLeds]; // Huidige interval voor elke LEDbool ledStates[numLeds]; // Huidige staat van elke LEDvoid setup() { // Initialiseer seriële communicatie (optioneel voor debugging) Serial.begin(9600); // Initialiseer LED pinnen als OUTPUT for (int i = 0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); ledStates[i] = LOW; digitalWrite(ledPins[i], ledStates[i]); previousTimes[i] = 0; intervals[i] = random(minTimes[i], maxTimes[i]); }}void loop() { unsigned long currentTime = millis(); for (int i = 0; i < numLeds; i++) { // Controleer of het tijd is om de LED te schakelen if (currentTime - previousTimes[i] >= intervals[i]) { // Schakel de LED ledStates[i] = !ledStates[i]; digitalWrite(ledPins[i], ledStates[i]); // Update de vorige schakeltijd previousTimes[i] = currentTime; // Bepaal een nieuw random interval voor de volgende schakeling if (ledStates[i] == HIGH) { // LED gaat aan - gebruik aan-tijd interval intervals[i] = random(minTimes[i], maxTimes[i]); } else { // LED gaat uit - gebruik een korte uit-tijd (of pas aan-tijd aan) // Hier gebruiken we de helft van de minimale aan-tijd als uit-tijd intervals[i] = minTimes[i] / 2; } // Debug output (optioneel) Serial.print("LED "); Serial.print(i); Serial.print(": "); Serial.print(ledStates[i] ? "AAN" : "UIT"); Serial.print(", Volgende schakeling in: "); Serial.println(intervals[i]); } }}[ / c o d e ]Uitleg erbijHier is een Arduino Nano sketch die meerdere LED's onafhankelijk van elkaar random aan- en uitzet, met een tabel voor de minimale en maximale aan-tijden:```cpp// Configuratieconst int numLeds = 3; // Aantal LED'sconst int ledPins[numLeds] = {2, 3, 4}; // Pinnen waar de LED's op aangesloten zijn// Min en max aan-tijden in milliseconden voor elke LEDconst unsigned long minTimes[numLeds] = {100, 200, 300}; // Minimale aan-tijd per LEDconst unsigned long maxTimes[numLeds] = {500, 800, 1000}; // Maximale aan-tijd per LED// Variabelen voor timingunsigned long previousTimes[numLeds]; // Laatste keer dat elke LED veranderdeunsigned long intervals[numLeds]; // Huidige interval voor elke LEDbool ledStates[numLeds]; // Huidige staat van elke LEDvoid setup() { // Initialiseer seriële communicatie (optioneel voor debugging) Serial.begin(9600); // Initialiseer LED pinnen als OUTPUT for (int i = 0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); ledStates[i] = LOW; digitalWrite(ledPins[i], ledStates[i]); previousTimes[i] = 0; intervals[i] = random(minTimes[i], maxTimes[i]); }}void loop() { unsigned long currentTime = millis(); for (int i = 0; i < numLeds; i++) { // Controleer of het tijd is om de LED te schakelen if (currentTime - previousTimes[i] >= intervals[i]) { // Schakel de LED ledStates[i] = !ledStates[i]; digitalWrite(ledPins[i], ledStates[i]); // Update de vorige schakeltijd previousTimes[i] = currentTime; // Bepaal een nieuw random interval voor de volgende schakeling if (ledStates[i] == HIGH) { // LED gaat aan - gebruik aan-tijd interval intervals[i] = random(minTimes[i], maxTimes[i]); } else { // LED gaat uit - gebruik een korte uit-tijd (of pas aan-tijd aan) // Hier gebruiken we de helft van de minimale aan-tijd als uit-tijd intervals[i] = minTimes[i] / 2; } // Debug output (optioneel) Serial.print("LED "); Serial.print(i); Serial.print(": "); Serial.print(ledStates[i] ? "AAN" : "UIT"); Serial.print(", Volgende schakeling in: "); Serial.println(intervals[i]); } }}```### Uitleg:1. **Configuratie**: - `numLeds`: Aantal LED's dat je wilt aansturen - `ledPins[]`: De pinnen waarop de LED's zijn aangesloten - `minTimes[]` en `maxTimes[]`: Min en max aan-tijden in milliseconden voor elke LED2. **Werking**: - Elke LED heeft zijn eigen timing en staat - Wanneer een LED aan gaat, wordt een nieuwe random tijd tussen min en max gekozen - Wanneer een LED uit gaat, wordt een kortere tijd gebruikt (hier de helft van de minimale aan-tijd)3. **Uitbreidingen**: - Voeg meer LED's toe door `numLeds` en de tabellen aan te passen - Pas de uit-tijden aan door de berekening `minTimes[i] / 2` te wijzigen - Voor complexere patronen kun je aparte min/max tabellen voor aan- en uit-tijden maken### Aansluiting:Sluit elke LED aan met een weerstand (bijv. 220Ω) tussen de Arduino pin en de lange poot (anode) van de LED. De korte poot (kathode) gaat naar GND.Let op: De random() functie in Arduino is niet echt random maar pseudo-random. Voor meer random gedrag kun je een random seed toevoegen in setup() met `randomSeed(analogRead(0))` als je een ongebruikte analoge pin hebt.Het lijkt heel wat maar dat valt reuze mee.