Dobbelsteen voor goocheltruc

De code van sparky zou daar mooi passen. Ik heb even de vrijheid genomen de code iets op te schonen:

Let op, dit is allemaal in kladblok, dus grote kans dat er nog ergens een foutje in staat.


#define PIN_LED_1  10
#define PIN_LED_2  9
#define PIN_LED_3  7
#define PIN_LED_4  8
#define BUTTON_PIN 6

const unsigned char LedLookup[7] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x0E};

void setup() {
  pinMode(PIN_LED_1, OUTPUT);
  pinMode(PIN_LED_2, OUTPUT);
  pinMode(PIN_LED_3, OUTPUT);
  pinMode(PIN_LED_4, OUTPUT);
  pinMode(BUTTON_PIN, INPUT);
  randomSeed(analogRead(0));
}

void waitForRelease() {
  int32_t buttonState = digitalRead(BUTTON_PIN);
  while (buttonState) {
    buttonState = digitalRead(BUTTON_PIN);
  }
}

void loop() {
  int32_t buttonState = digitalRead(BUTTON_PIN);
  if (buttonState) {
    rollDice();
    waitForRelease();
    delay(5000);
  } else {
    toggleLeds();
  }
  delay(100);
}

void toggleLeds() {
  digitalWrite(PIN_LED_1, !digitalRead(PIN_LED_1));
  digitalWrite(PIN_LED_2, !digitalRead(PIN_LED_2));
  digitalWrite(PIN_LED_3, !digitalRead(PIN_LED_3));
  digitalWrite(PIN_LED_4, !digitalRead(PIN_LED_4));
}

void displayNumber(unsigned char number) {
  digitalWrite(PIN_LED_1, LedLookup[number] & 0x01);  // center dot
  digitalWrite(PIN_LED_2, LedLookup[number] & 0x02);  // left top and right bottom
  digitalWrite(PIN_LED_3, LedLookup[number] & 0x04);  // left bottom and right top
  digitalWrite(PIN_LED_4, LedLookup[number] & 0x08);  // center left and right
}

void rollDice() {
  uint8_t outcome = random(1, 7);
  displayNumber(outcome);
}

PE2BAS

Superrr bedankt ga hem later uitproberen !!!!!

En weer voortbouwend op hardbass (Dus als er een foutje in stond, heb ik dat nu ook overgenomen / ik heb niet eens gecheckt of het compiled):


#define PIN_LED_1  10
#define PIN_LED_2  9
#define PIN_LED_3  7
#define PIN_LED_4  8
#define BUTTON_PIN 6
#define CHEAT_PIN 11

const unsigned char LedLookup[7] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x0E};

void setup() {
  pinMode(PIN_LED_1, OUTPUT);
  pinMode(PIN_LED_2, OUTPUT);
  pinMode(PIN_LED_3, OUTPUT);
  pinMode(PIN_LED_4, OUTPUT);
  pinMode(BUTTON_PIN, INPUT);
  randomSeed(analogRead(0));
}

void waitForRelease() {
  int32_t buttonState = digitalRead(BUTTON_PIN);
  while (buttonState) {
    buttonState = digitalRead(BUTTON_PIN);
  }
}

void loop() {
  int32_t buttonState = digitalRead(BUTTON_PIN);
  if (buttonState) {
    rollDice();
    waitForRelease();
    delay(5000);
  } else {
    toggleLeds();
  }
  delay(100);
}

void toggleLeds() {
  digitalWrite(PIN_LED_1, !digitalRead(PIN_LED_1));
  digitalWrite(PIN_LED_2, !digitalRead(PIN_LED_2));
  digitalWrite(PIN_LED_3, !digitalRead(PIN_LED_3));
  digitalWrite(PIN_LED_4, !digitalRead(PIN_LED_4));
}

void displayNumber(unsigned char number) {
  digitalWrite(PIN_LED_1, LedLookup[number] & 0x01);  // center dot
  digitalWrite(PIN_LED_2, LedLookup[number] & 0x02);  // left top and right bottom
  digitalWrite(PIN_LED_3, LedLookup[number] & 0x04);  // left bottom and right top
  digitalWrite(PIN_LED_4, LedLookup[number] & 0x08);  // center left and right
}

void rollDice() {
if(digitalRead(CHEAT_PIN)){
displayNumber(6);
}
else{
  uint8_t outcome = random(1, 6);
  displayNumber(outcome);
}
}

Zonder de random-dinges zou je nog iets als dit kunnen doen:


#define PIN_LED_1  10
#define PIN_LED_2  9
#define PIN_LED_3  7
#define PIN_LED_4  8
#define BUTTON_PIN 6
#define CHEAT_PIN 11

const unsigned char LedLookup[7] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x0E};

void setup() {
  pinMode(PIN_LED_1, OUTPUT);
  pinMode(PIN_LED_2, OUTPUT);
  pinMode(PIN_LED_3, OUTPUT);
  pinMode(PIN_LED_4, OUTPUT);
  pinMode(BUTTON_PIN, INPUT);
}

void loop() {
  unsigned char number;
  if(number<6) number++; else number=1;
  displayNumber(number);
  if (digitalRead(BUTTON_PIN)){
    if(digitalRead(CHEAT_PIN)){
    number=6;
    }
    displayNumber(number);
    delay(5000);
  }
  delay(20);
}

void displayNumber(unsigned char number) {
  digitalWrite(PIN_LED_1, LedLookup[number] & 0x01);  // center dot
  digitalWrite(PIN_LED_2, LedLookup[number] & 0x02);  // left top and right bottom
  digitalWrite(PIN_LED_3, LedLookup[number] & 0x04);  // left bottom and right top
  digitalWrite(PIN_LED_4, LedLookup[number] & 0x08);  // center left and right
}

Met de gotcha dat je dan bij niet-valsspelen alsnog toevallig een 6 kunt gooien. Als je dat niet wilt moet je er number<5 van maken, maar dan valt ook op dat er nooit een 6 knippert.

Eluke.nl | handgetypt | I'm a poor, lonesome cowboy, with a long, long way to go.

Knipperen werkt goed .... maar rare cijfers :)

ik denk dat 1 output verkeerd zit.
de diagonale 2 en de middelste 2 zitten gewisseld.
de eerste foto zou dan 5 zijn, de 2de een 4 en de 3de weer 5

0x04 en 0x08 hierboven dus in code, of 2 draden veranderen

ik hou van werken ..., ik kan er uren naar kijken

Hmm ok ga straks ff kijken.
Op de standaard script doet hij het wel normaal.

code verschilt.
bij die laatste is led1 op pin 10 de centerled.
en bij de voorgaanse was dat led4 op pin 8

ik hou van werken ..., ik kan er uren naar kijken

Ik heb dit in elkaar geflanst:

int pinLeds1 = 10;
int pinLeds2 = 9;
int pinLeds3 = 7;
int pinLed4 = 8;
int buttonPin = 6;
int buttonPin1 = 5;
int buttonState1;
int buttonState2;
long ran;
int time = 2000;

void setup ()
{
pinMode (pinLeds1, OUTPUT);
pinMode (pinLeds2, OUTPUT);
pinMode (pinLeds3, OUTPUT);
pinMode (pinLed4, OUTPUT);
pinMode (buttonPin, INPUT);
randomSeed(analogRead(0));
}

void loop()
{
buttonState1 = digitalRead(buttonPin);
if (buttonState1 == HIGH){
ran = random(1, 7);
if (ran == 1){
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 2){
digitalWrite (pinLeds1, HIGH);
delay (time);
}
if (ran == 3){
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 4){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}
if (ran == 5){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (buttonPin == HIGH && buttonPin1 == HIGH){

if (ran == 6){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds2, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}

}
}

digitalWrite (pinLeds1, LOW);
digitalWrite (pinLeds2, LOW);
digitalWrite (pinLeds3, LOW);
digitalWrite (pinLed4, LOW);
}

Als ik op knop1 drukt dn geeft het een willekeurige cijfer tussen de 1 en de 5.
Als ik op knop1 en knop2 drukt moet hij de 6 aangeven maar dat doet het niet.
Wat doe ik fout ?

[Bericht gewijzigd door fossie op woensdag 29 november 2023 20:53:16 (20%)

Je leest de waardes van buttonpin en buttonpin1 niet, dat moet digitalRead(buttonpin) zijn.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Waar moet dat komen te staan ?
Heeft u een voorbeeld ?

Hierbij een bijgewerkte sketch.
Niet getest, want ik heb het niet opgebouwd. Wel gecompileerd, geen compiler fouten.



int pinLeds1   = 10;
int pinLeds2   = 9;
int pinLeds3   = 7;
int pinLed4    = 8;
int pinButton1 = 6;  // Roll
int pinButton2 = 5;  // Cheat

int time = 2000;   // 2 seconden

uint32_t Timer = millis();
uint8_t  Knipper = 0; 

void setup ()
{ pinMode (pinLeds1,   OUTPUT);
  pinMode (pinLeds2,   OUTPUT);
  pinMode (pinLeds3,   OUTPUT);
  pinMode (pinLed4,    OUTPUT);
  pinMode (pinButton1, INPUT);
  pinMode (pinButton2, INPUT);
  randomSeed(analogRead(0));
}

void loop()
{
  int Getal = random(1, 6);
  
  if (digitalRead(pinButton1) == LOW)
  { // pinButton1 is ingedrukt
    
    // Alles uit
    digitalWrite (pinLeds1, LOW);
    digitalWrite (pinLeds2, LOW);
    digitalWrite (pinLeds3, LOW);
    digitalWrite (pinLed4,  LOW);
  
    if (digitalRead(pinButton2) == LOW)
    {  // pinButton2 ook ingedrukt : 6
      digitalWrite (pinLeds1, HIGH);
      digitalWrite (pinLeds2, HIGH);
      digitalWrite (pinLeds3, HIGH);
    }
    else
    { // pinButton2 niet ingedrukt
      switch(Getal)
      {  case 1 : 
            digitalWrite (pinLed4, HIGH);
            break;
         case 2:
            digitalWrite (pinLeds1, HIGH);
            break;
          case 3:
            digitalWrite (pinLeds3, HIGH);
            digitalWrite (pinLed4, HIGH);
            break;
          case 4:
            digitalWrite (pinLeds1, HIGH);
            digitalWrite (pinLeds3, HIGH);
            break;
          case 5:
            digitalWrite (pinLeds1, HIGH);
            digitalWrite (pinLeds3, HIGH);
            digitalWrite (pinLed4, HIGH);
            break;
      }
    }
    delay (time);
  }
  else
  { // pinButton1 niet ingedrukt 

    // Dan maar Knipperen
    if((millis() - Timer) > 500)
    { Timer += 500;

      Knipper += 1;
      switch(Knipper)
      {  case 1:
            digitalWrite (pinLeds1, HIGH);
            digitalWrite (pinLed4,  HIGH);
            break;
         case 2: 
            digitalWrite (pinLeds1, LOW);
            digitalWrite (pinLed4,  LOW);
            break;
         case 3: 
            digitalWrite (pinLeds2, HIGH);
            digitalWrite (pinLed4,  HIGH);
            break;
         case 4:
            digitalWrite (pinLeds2, LOW);
            digitalWrite (pinLed4,  LOW);
            break;
         case 5: 
            digitalWrite (pinLeds3, HIGH);
            digitalWrite (pinLed4,  HIGH);
            break;
         case 6:
            digitalWrite (pinLeds3, LOW);
            digitalWrite (pinLed4,  LOW);
            Knipper = 0;
            break;
      }
    }
  }
}

zo snel gekeken maak je de fout dat je bij de eerste niet kijkt of button 2 hoog was.
snelle aanpassing:
ik kijk nu als button 1 ingedrukt is EN de 2de niet, genereerd die gewoon 1-5 nummer.
als button 1 ingedrukt is EN button 2 ook, dan geeft die een 6. die if ran=6 mag weg

int pinLeds1 = 10;
int pinLeds2 = 9;
int pinLeds3 = 7;
int pinLed4 = 8;
int buttonPin = 6;
int buttonPin1 = 5;
int buttonState1;
int buttonState2;
long ran;
int time = 2000;

void setup ()
{
pinMode (pinLeds1, OUTPUT);
pinMode (pinLeds2, OUTPUT);
pinMode (pinLeds3, OUTPUT);
pinMode (pinLed4, OUTPUT);
pinMode (buttonPin, INPUT);
randomSeed(analogRead(0));
}

void loop()
{
buttonState1 = digitalRead(buttonPin);
if (buttonState1 == HIGH && buttonPin1 == LOW)){
ran = random(1, 6);
if (ran == 1){
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 2){
digitalWrite (pinLeds1, HIGH);
delay (time);
}
if (ran == 3){
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 4){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}
if (ran == 5){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (buttonPin == HIGH && buttonPin1 == HIGH){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds2, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}

}
}

digitalWrite (pinLeds1, LOW);
digitalWrite (pinLeds2, LOW);
digitalWrite (pinLeds3, LOW);
digitalWrite (pinLed4, LOW);
}

ik hou van werken ..., ik kan er uren naar kijken

C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino: In function 'void loop()':
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:25:47: error: expected primary-expression before ')' token
if (buttonState1 == HIGH && buttonPin1 == LOW)){
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino: At global scope:
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:61:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds1, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:62:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds2, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:63:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds3, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:64:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLed4, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-11576-2r4dsg.56xi2\sketch_nov30a\sketch_nov30a.ino:65:1: error: expected declaration before '}' token
}
^

exit status 1

Compilation error: expected primary-expression before ')' token

buttonpin1 wordt nergens ingelezen

void loop()
{
buttonState1 = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin1);
if (buttonState1 == HIGH && buttonstate2 == LOW)){

ga je beneden ook moeten aanpassen dan
if (buttonPin == HIGH && buttonstate2 == HIGH){

[Bericht gewijzigd door fcapri op donderdag 30 november 2023 12:35:59 (16%)

ik hou van werken ..., ik kan er uren naar kijken

Betekent dat dat ik wat fout doet ?
Sorry voor mijn domme vragen heb er echt geen kaas van gegeten.
Lees er wel wat over.
Ben echt zo blij dat jullie er zoveel tijd en moeite insteken.

if (buttonState1 == HIGH && buttonstate2 == LOW)){

Daar staat een sluit-haakje te veel.

if (buttonState1 == HIGH && buttonstate2 == LOW)){

Heb het nu zo :

int pinLeds1 = 10;
int pinLeds2 = 9;
int pinLeds3 = 7;
int pinLed4 = 8;
int buttonPin = 6;
int buttonPin1 = 5;
int buttonState1;
int buttonState2;
long ran;
int time = 2000;

void setup ()
{
pinMode (pinLeds1, OUTPUT);
pinMode (pinLeds2, OUTPUT);
pinMode (pinLeds3, OUTPUT);
pinMode (pinLed4, OUTPUT);
pinMode (buttonPin, INPUT);
randomSeed(analogRead(0));
}

void loop()
{
buttonState1 = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin1);
if (buttonState1 == HIGH && buttonState2 == LOW){
ran = random(1, 6);
if (ran == 1){
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 2){
digitalWrite (pinLeds1, HIGH);
delay (time);
}
if (ran == 3){
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (ran == 4){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}
if (ran == 5){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds3, HIGH);
digitalWrite (pinLed4, HIGH);
delay (time);
}
if (buttonPin == HIGH && buttonState2 == HIGH){
digitalWrite (pinLeds1, HIGH);
digitalWrite (pinLeds2, HIGH);
digitalWrite (pinLeds3, HIGH);
delay (time);
}

}
}

digitalWrite (pinLeds1, LOW);
digitalWrite (pinLeds2, LOW);
digitalWrite (pinLeds3, LOW);
digitalWrite (pinLed4, LOW);
}

en krijg dit :

C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-2844-bkh1cj.v0drv\sketch_nov30a\sketch_nov30a.ino:62:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds1, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-2844-bkh1cj.v0drv\sketch_nov30a\sketch_nov30a.ino:63:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds2, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-2844-bkh1cj.v0drv\sketch_nov30a\sketch_nov30a.ino:64:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLeds3, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-2844-bkh1cj.v0drv\sketch_nov30a\sketch_nov30a.ino:65:14: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite (pinLed4, LOW);
^
C:\Users\Foss\AppData\Local\Temp\.arduinoIDE-unsaved20231030-2844-bkh1cj.v0drv\sketch_nov30a\sketch_nov30a.ino:66:1: error: expected declaration before '}' token
}
^

exit status 1

Compilation error: expected constructor, destructor, or type conversion before '(' token

denk dat er een accolade teveel staat vlak voor die laatste 4 regels tekst.
deze staan volgens mij buiten de loop nu

}

}
}

digitalWrite (pinLeds1, LOW);
digitalWrite (pinLeds2, LOW);
digitalWrite (pinLeds3, LOW);
digitalWrite (pinLed4, LOW);
}

ik hou van werken ..., ik kan er uren naar kijken

Yess dat was de fout.
Heb het nu geupload zonder errors.
Button 6 genereerd een getal tussen de 1 en de 5 zo te zien.
Alleen die andere button doet niets.

en die werkt en zit op pin 5 dan?

je moet die ook al indrukken voor je op de andere knop drukt

ik hou van werken ..., ik kan er uren naar kijken

Lieve mensen bedankt allenmaal voor jullie tijd en moeite.
Mijn gewenste sketch is bijna klaar.
Hij doet nu bijna wat ik wil.
Hieronder het resultaat.
Het enigste wat hij nog niet doet is dat alle ledjes knipperen voordat er wordt gedrukt op de knoppen.
Mocht iemand daarvoor nog een idee hebben graag !!!
Ook is het de bedoeling deze code op een attiny chippie te zetten ... weet nog niet hoe en ook de schema heb ik nog niet.

int pinLeds1 = 10;
int pinLeds2 = 9;
int pinLeds3 = 7;
int pinLed4 = 8;
int buttonPin = 6;
int buttonPin2 = 5;
int buttonState1;
int buttonState2;
long ran;
int time = 2000;

void setup() {
pinMode(pinLeds1, OUTPUT);
pinMode(pinLeds2, OUTPUT);
pinMode(pinLeds3, OUTPUT);
pinMode(pinLed4, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
randomSeed(analogRead(0));
}

void loop() {
buttonState1 = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);

if (buttonState1 == HIGH && buttonState2 == HIGH) {
ran = 6; // Set the desired number to generate (in this case, 6)

if (ran == 6) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds2, HIGH);
digitalWrite(pinLeds3, HIGH);
delay(time);
}
} else {
buttonState1 = digitalRead(buttonPin);

if (buttonState1 == HIGH) {
ran = random(1, 6);

if (ran == 1) {
digitalWrite(pinLed4, HIGH);
delay(time);
}
if (ran == 2) {
digitalWrite(pinLeds1, HIGH);
delay(time);
}
if (ran == 3) {
digitalWrite(pinLeds3, HIGH);
digitalWrite(pinLed4, HIGH);
delay(time);
}
if (ran == 4) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds3, HIGH);
delay(time);
}
if (ran == 5) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds3, HIGH);
digitalWrite(pinLed4, HIGH);
delay(time);
}
}
}

digitalWrite(pinLeds1, LOW);
digitalWrite(pinLeds2, LOW);
digitalWrite(pinLeds3, LOW);
digitalWrite(pinLed4, LOW);
}

plak het donkere er eens tussen.
hier ga je na de ifloop, als je de knop NIET hebt ingedrukt, de leds even hoog zetten, 200ms wachten en dan weer de leds laag:

int pinLeds1 = 10;
int pinLeds2 = 9;
int pinLeds3 = 7;
int pinLed4 = 8;
int buttonPin = 6;
int buttonPin2 = 5;
int buttonState1;
int buttonState2;
long ran;
int time = 2000;

void setup() {
pinMode(pinLeds1, OUTPUT);
pinMode(pinLeds2, OUTPUT);
pinMode(pinLeds3, OUTPUT);
pinMode(pinLed4, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
randomSeed(analogRead(0));
}

void loop() {
buttonState1 = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);

if (buttonState1 == HIGH && buttonState2 == HIGH) {
ran = 6; // Set the desired number to generate (in this case, 6)

if (ran == 6) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds2, HIGH);
digitalWrite(pinLeds3, HIGH);
delay(time);
}
} else {
buttonState1 = digitalRead(buttonPin);

if (buttonState1 == HIGH) {
ran = random(1, 6);

if (ran == 1) {
digitalWrite(pinLed4, HIGH);
delay(time);
}
if (ran == 2) {
digitalWrite(pinLeds1, HIGH);
delay(time);
}
if (ran == 3) {
digitalWrite(pinLeds3, HIGH);
digitalWrite(pinLed4, HIGH);
delay(time);
}
if (ran == 4) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds3, HIGH);
delay(time);
}
if (ran == 5) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds3, HIGH);
digitalWrite(pinLed4, HIGH);
delay(time);
}
}
}

if (buttonState1 == LOW) {
digitalWrite(pinLeds1, HIGH);
digitalWrite(pinLeds2, HIGH);
digitalWrite(pinLeds3, HIGH);
digitalWrite(pinLed4, HIGH);
delay(200);
}

digitalWrite(pinLeds1, LOW);
digitalWrite(pinLeds2, LOW);
digitalWrite(pinLeds3, LOW);
digitalWrite(pinLed4, LOW);
}

ik hou van werken ..., ik kan er uren naar kijken

Super hij laad alle ledjes branden als er niet wordt gedrukt.
Nu ff kijken waar het veranderd moet worden zodat het gaat knipperen.

[Bericht gewijzigd door fossie op donderdag 30 november 2023 21:59:52 (11%)

aja, voeg onderaan nog eens toe delay(200) voor die laatste accolade.

hij zet de leds aan, wacht 200ms, zet ze uit en gaat ze direct weer aanzetten.
je zal dan wel 0,4sec vertraging krijgen op de knop

ik hou van werken ..., ik kan er uren naar kijken