Electronisch slot met 4 knoppen

Ik zal mezelf even introduceren,
mijn naam is David, ik ben 22 en studeer grafische vormgeving in Utrecht.

Op dit moment loop ik stage en ik wil een bijzonder stageverslag inleveren.
Mijn concept sluit aan bij een digitaal combinatieslot van 4 knoppen die altijd de zelfde combinatie houden (1,2,3,4).
Ik ben zelf geen techneut maar een stel vrienden willen mij graag bij dit project helpen.
Zij hebben wel een beetje verstand van scripten in Java, HTML en Python(?) maar ik totaal niet, en om hun al het voorwerk te besparen wil ik dit graag zelf uitzoeken.

Nou heb ik de “getting started” page aandachtig doorgelezen en begrijp ik al het een en ander (ben een beetje bekend met scripting in flash dus de basis begrijp ik nog ongeveer).

Ik heb alleen geen flauw idee welke hardware ik moet aanschaffen voor dit project. Wel heb ik natuurlijk al door de forums gesnuffeld, maar hier vond ik alleen dingen waar ik geen pap van kon maken.

Is er iemand die mij een stapje de goede richting in kan wijzen? en waar ik zo nu en dan een vraag aan kan stellen?

B.v.b.d.
David

[b]DIEPERE TOELICHTING:[/b]

Ik heb al een (amateuristische) tekening gemaakt hoe ik het ongeveer wil hebben (zie bijlage)
Volgorde van knopjes indrukken: als je 1 indrukt gaat die branden, maar als je 2,3 of 4 indrukt gebeurt er niks voordat je 1 hebt in gedrukt enzovoorts) dus je zou gewoon kunnen rammen op de knopjes totdat hij open is.

** **WAT IK GRAAG WIL:** **

  • 4 knoppen die na een bepaalde combinatie een actie uitvoeren (slot ontgrendelen).
  • verkeerde combinatie na 4 knoppen = reset. Dit wordt duidelijk door oplichten van een rood LEDje (3 sec).
  • na de juiste combinatie, oplichten van groen LEDje
  • manier om de kist weer op slot te doen
  • 1 stroombron.

Volgens mij heb ik hier een beginnetje gevonden.

const int buttonPin1 = 1; 
const int buttonPin4 = 4; 
const int buttonPin3 = 3; 
const int buttonPin2 = 2; // the pin that the pushbutton is attached to
const int correctLedPin = 7;       // the pin that the LED is attached to
const int wrongLedPin = 6;   
const int motorPin = 11;// the pin that the LED is attached to
// variables that are changed by the program
int buttonPushCounter = 0;   // counter for the number of button presses
int val = 0;
int bS1 = 0;         // current state of the button
int lBS1 = 0;     // previous state of the button


int bS2 = 0;         // current state of the button
int lBS2 = 0; 

int bS3 = 0;         // current state of the button
int lBS3 = 0; 

int bS4 = 0;         // current state of the button
int lBS4 = 0; 
// configure the pins to the right mode
void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(correctLedPin, OUTPUT);
  pinMode(wrongLedPin, OUTPUT);
  pinMode(motorPin, OUTPUT);
  Serial.begin(9600);
}

// the main loop will constantly check to see if the button has been pressed
// if it has, a counter is incremented, and then some action can be taken
void loop() {

  // read the state of the button
  static int buttonPushCounter = 0;
  bS1 = digitalRead(buttonPin1);
  bS2 = digitalRead(buttonPin2);
  bS3 = digitalRead(buttonPin3);
  bS4 = digitalRead(buttonPin4);

  // check to see if it different than the last time we checked
  if (bS1 != lBS1) {
    // either the button was just pressed or just released
    if (bS1 == HIGH) {
      // it was just pressed
      buttonPushCounter = buttonPushCounter + 1;
      Serial.println(buttonPushCounter);
      digitalWrite(correctLedPin, HIGH);
      delay(100);
      digitalWrite(correctLedPin, LOW);
      if(val == 0)
      {
        val = 1;
      }
    }
  }
  lBS1 = bS1;


if (bS2 != lBS2) {
    // either the button was just pressed or just released
    if (bS2 == HIGH) {
      // it was just pressed
      buttonPushCounter = buttonPushCounter + 1;
      Serial.println(buttonPushCounter);
      digitalWrite(correctLedPin, HIGH);
      delay(100);
      digitalWrite(correctLedPin, LOW);
      if(val == 1)
      {
        val = 2;
      }
    }
  }
  lBS2 = bS2;


if (bS3 != lBS3) {
    // either the button was just pressed or just released
    if (bS3 == HIGH) {
      // it was just pressed
      buttonPushCounter = buttonPushCounter + 1;
      Serial.println(buttonPushCounter);
      digitalWrite(correctLedPin, HIGH);
      delay(100);
      digitalWrite(correctLedPin, LOW);
      if(val == 2)
      {
        val = 3;
      }
    }
  }
  lBS3 = bS3;


if (bS4 != lBS4) {
    // either the button was just pressed or just released
    if (bS4 == HIGH) {
      // it was just pressed
      buttonPushCounter = buttonPushCounter + 1;
      Serial.println(buttonPushCounter);
      digitalWrite(correctLedPin, HIGH);
      delay(100);
      digitalWrite(correctLedPin, LOW);
      if(val == 3)
      {
        val = 4;
      }
    }
  }
  lBS4 = bS4;

if(val == 4 && buttonPushCounter == 4)
{
  digitalWrite(correctLedPin, HIGH);
  val = 0;
  buttonPushCounter = 0;
  analogWrite(motorPin
}

else if(val != 4 && buttonPushCounter == 4)
{
  digitalWrite(wrongLedPin, HIGH);
  delay(3000);
  digitalWrite(wrongLedPin, LOW);
  val = 0;
    buttonPushCounter = 0;
}


}

wat doe je op de stage, en hoe is de relatie met arduino, en ja het programma zal doen wat jij denkt dat het moet doen, jouw tekening echter niet.

shooter:
wat doe je op de stage, en hoe is de relatie met arduino, en ja het programma zal doen wat jij denkt dat het moet doen, jouw tekening echter niet.

Wat ik op stage doe, dat doet er niet toe. Het enige wat relatie heeft met Arduino is het concept van mijn stageverslag "Denker" de knopjes krijgen 4 kleuren (C,M,Y,K). Deze combinatie zal het slot doen openen maar voor de uitleg is dat denk ik niet relevant want er moet gewoon een 4 knoppen combinatie komen die kan resetten als het verkeerd gaat.

wat de tekening betreft, "Ik ben zelf geen techneut" het wat slechts een gedachtegang die gevisualiseerd moest worden zodat jij (of iemand anders) een idee krijgt waar ik heen wil.

en ik zou het erg fijn vinden als iemand mij een zetje in de goede richting wilt geven.

een uno is het meest gebruikt en kun je direct via de usb met een programma laden.
elke arduino zou dit verder aankunnen hoor.
verder heb je natuurlijk 4 knopjes een transistor of een relaisbordje.
zet het programma erin en kijk of het voor je werkt.

nice, dan ga ik die aanschaffen :wink: dankjewel