Projekt intelligente Klingel

vor 26 weeks 1 day von marvinmarco

Hey,
ich arbeite in der Schule immo am Projekt "intelligente Klingel". Dazu steht mir ein Arduino UNO zur verfügung, Schalter Kabel Lautsprecher und co. Ich möchte mir mit dem Arduino eine eigene Klingel bauen und keine ansteuern. Mein Problem dabei ist jetz, dass ich nicht weiß wie man ein Programm schreibt, welches Klingelzeichern erkennnt. Zum einen soll der Arduino die gedrückten sekunden Zählen und bei einer bestimmten Anzahl etwas tun( ein Knopf, drei LEDs)zum anderen soll er bestimmte Morse(Klingelzeichen) erkennen und darauf etwas tun.
Es wäre ziemlich cool wenn mir jemand helfen könnte:)

Ähnliche Posts

3 Antworten auf “Projekt intelligente Klingel”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. mitch4 sagt:

    Ich hab da mal so ein Codeschloss gehabt als lernbeispiel da musste man mittels 2 Taster einen code eingeben um zb; eine türe zu öffnen. wenn man den ersten taster 5 sek. drückt kann man die eingabe wiederholen fals man sich vertippt hat.

    ist zwar nicht genau dass was du brauchst aber vl. kannst du ja ein par änsätze zu lösung deines problems finden.

    // Franzis Arduino
    // Codeschloss

    int LED_rot=4;
    int LED_gruen=5;
    int SW1=2;
    int SW2=3;
    int Buzzer=8;
    int x,y,code1,code2,resetTimer=0;

    void setup()
    {

    pinMode(LED_rot,OUTPUT);
    pinMode(LED_gruen,OUTPUT);
    pinMode(Buzzer,OUTPUT);

    pinMode(SW1,INPUT);
    digitalWrite(SW1,HIGH);

    pinMode(SW2,INPUT);
    digitalWrite(SW2,HIGH);
    Clr_Code();

    }

    void loop()
    {

    // Code 1 = 5
    if(!digitalRead(SW1))
    {
    delay(50);
    if(!digitalRead(SW1))
    {
    Blink();
    x++;
    if(x==5)
    {
    code1=true;
    }else code1=false;

    do{
    }while(!digitalRead(SW1));
    }
    }

    // Code 2 = 3
    if(!digitalRead(SW2))
    {
    delay(50);
    if(!digitalRead(SW2))
    {
    Blink();
    y++;
    if(y==3)
    {
    code2=true;
    }else code2=false;

    do
    {
    delay(50);
    resetTimer++;

    if(resetTimer>50)
    {
    Toggle_Flash();
    Clr_Code();
    break;
    }
    }while(!digitalRead(SW2));
    resetTimer=0;
    }
    }

    if(code1==true&&code2==true)
    {
    digitalWrite(LED_gruen,HIGH);
    Clr_Code();
    delay(5000);
    digitalWrite(LED_gruen,LOW);
    }
    else
    {
    digitalWrite(LED_gruen,LOW);
    }
    }

    void Blink(void)
    {
    digitalWrite(LED_rot,HIGH);
    tone(Buzzer,500,150);
    delay(200);
    digitalWrite(LED_rot,LOW);
    }

    void Toggle_Flash(void)
    {
    int tog=0;
    for(x=0;x<6;x++)
    {
    if(tog==0)tog=1;else tog=0;
    digitalWrite(LED_rot,tog);
    tone(Buzzer,500,250);
    delay(300);
    }
    }

    void Clr_Code(void)
    {
    x=0;
    y=0;
    code1=0;
    code2=0;
    resetTimer=0;
    delay(1000);
    }

    Login or register to post comments

  1. marvinmarco sagt:

    in welchem abschnitt wird denn der resettimer gebraucht und wie?

    Login or register to post comments

  1. mitch4 sagt:

    delay(50);
    resetTimer++;

    if(resetTimer>50)
    {
    Toggle_Flash();
    Clr_Code();
    break;

    /////////////////

    Es werden quasi die Delays gezählt und wenn du über 50 mal den reset timer erhöht hast (resetTimer++) das sind dann 2,5 Sec. (meiner meinung) dann der Programmblock nach der if anweisung ausgeführt.... Toggle_Flash bedeutet das die leds toggeln das heisst sie blinkt hin und her. Und mit Clr_Code() wird die Funktion Clr_Code() ausgeführt.

    void Clr_Code(void)
    {
    x=0;
    y=0;
    code1=0;
    code2=0;
    resetTimer=0;
    delay(1000);
    }

    und in dieser Funktion wird dann alles wieder auf null gesetzt und man hat den anfangs zustand wieder hergestellt und kann den code von neuem eingeben.....

    ich hoffe das hilft weiter bin selbst noch nicht so sattelfest auf Arduino...

    mitch

    Login or register to post comments