Hirdetés

Új hozzászólás Aktív témák

  • DeniL

    tag

    Sziasztok,

    6 nyomógombot "szimulálnék" a GND és 0-5-ig a digitális pinek összeérintésével. A 6 nyomógombot adott sorrendben kellene lenyomni, de ha ez nem így történik, akkor futás közben kellene visszajelzést adnia, hogy "elrontottad". Ne csak a végén ellenőrizzen, ha le lett nyomva mind a 6.

    Elkezdtem többféleképpen, de már kezdem feladni és belefáradni. Remélem találok köztetek olyanokat, akik a helyes útra térítenek és segítségemre lesznek. Köszönöm :)

    1.

    #include <SoftwareSerial.h>
    int button1 = 0;
    int button2 = 1;
    boolean button1_state = false;
    boolean button2_state = false;
    int mode = 0;
    void buttoncheck1(){
    button1_state = !digitalRead(button1);
    }
    void buttoncheck2(){
    button2_state = !digitalRead(button2);
    }
    void setup() {
    Serial.begin(9600);
    pinMode(button1, INPUT);
    pinMode(button2, INPUT);
    buttoncheck1();
    buttoncheck2();
    }
    void loop() {
    while (mode == 0){
    Serial.println("elso ciklus");
    while (mode == 0){
    delay(2000);
    buttoncheck1();
    if (button1_state==true) {
    Serial.println("ez az elso");
    mode = 1;
    }
    else {
    Serial.println("rossz sorrend 1.");
    }
    }
    }
    while (mode == 1){
    Serial.println("masodik ciklus");
    while (mode == 1){
    delay(2000);
    buttoncheck2();
    if (button2_state==true) {
    Serial.println("ez az masodik");
    //mode = 3;
    }
    else {
    Serial.println("rossz sorrend 2.");
    }
    }
    }
    }

    2.

    #include <SoftwareSerial.h>
    int ButtonPins[] = {0, 1};
    int buttonState[] = {HIGH, HIGH};
    int index;
    int numberOfBUTTON = 2;
    void setup() {
    Serial.begin(9600);
    /*for (int i = 0; i < numberOfBUTTON; i++) {
    pinMode(ButtonPins, INPUT_PULLUP);
    }*/
    pinMode(ButtonPins[1], INPUT_PULLUP);
    pinMode(ButtonPins[2], INPUT_PULLUP);
    }
    void loop() {
    for (index = 0; index < numberOfBUTTON; index++)
    {
    buttonState[index] = digitalRead(ButtonPins[index]);
    if (buttonState[index] == LOW) {
    Serial.print((String)(ButtonPins[index]));
    Serial.print(" elem");
    } else {
    Serial.println("rossz sorrend");
    }
    }
    delay(2000);
    }

    3.

    #include <SoftwareSerial.h>

    int scheme[6];
    int ints_read[6];
    int but_state[6];

    void buttoncheck(){
    int i,j;

    for(j=0;j<6;j++)
    {
    if(but_state[j] != digitalRead(j))
    {
    for(i=5;i>0;i--)
    ints_read[i]=ints_read[i-1];
    ints_read[0] = j+1;

    }
    but_state[j] = digitalRead(j);
    /*Serial.print(ints_read[j]);
    Serial.print(" ");
    Serial.println(scheme[j]); */
    }

    }

    int match_buttons()
    {
    int i;
    int j;

    for(j=0;j<6;j++)
    {
    if(ints_read[j] == 0)
    return j;
    if(scheme[j] != ints_read[j])
    {
    for(i=0;i<6;i++)
    ints_read[i] = 0;
    return -1;
    }
    }
    return 6;
    }


    void setup() {
    int j;
    Serial.begin(9600);
    for(j=0;j<6;j++)
    {
    pinMode(j, INPUT);
    ints_read[j] = 0;
    }
    pinMode(6, INPUT);
    }

    void loop()
    {

    boolean match = false;

    //gombok FORDÍTOTT sorrendben. A helyes lenyomási sorrend 2,3,5,4,1,6;
    scheme[0] = 6;
    scheme[1] = 1;
    scheme[2] = 4;
    scheme[3] = 5;
    scheme[4] = 3;
    scheme[5] = 2;

    delay(2000);


    while(true)
    {
    buttoncheck();
    if(match_buttons() == -1)
    {
    Serial.println("rossz sorrend");
    //Az eddig beöltött minta már törölve
    }
    if(match_buttons() == 6)
    {
    Serial.println("jó sorrend");
    break;
    }
    delay(100);
    }


    }

Új hozzászólás Aktív témák