INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Tasten prellen
03.02.2015, 09:36
Beitrag #1
Tasten prellen
Hallo,

bevor jetzt einer mit verzertem Gesicht vor dem Rechner sitzt und sagt "nicht schon wieder einer der Fragt wie man Tasten entprellt...":

Ich möchte sie überhaupt nicht entprellen Tongue
Meine 10jährige Tochter bastelt mit mir auch gerne am Adruino. Am liebsten etwas mit LEDs und Tasten oder Bewegungs- / Entfernungsmeldern.

Jetzt würde ich ihr gerne an hand eines Aufbaues mit einigen LEDs und zwei Tastern zeigen was das Prellen bewirken kann. Ich komme aber auf keine (optisch) eindrucksvolle Ide.

Hat einer von euch einen schönen Vorschlag?

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 10:26 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2015 10:35 von marcus.)
Beitrag #2
RE: Tasten prellen
Hallo Stephan,

am eindrucksvollsten sieht man das vielleicht an einem Zähler, der bei jedem Prellen hoch zählt. Da sieht man, dass es nicht nur unzuverlässig ist (wie bspw. für das ein- und ausschalten einer LED), sondern auch, dass es mehrfach hintereinander passieren kann (Also z.B. 4 mal prellt).

Wenn es mit LEDs sein soll, z.B. zehn in einer Reihe zum zählen anschalten. Oder eben eine Segmentanzeige.
Wird einmal gedrückt, aber drei LED leuchten auf, sieht man wie unzuverlässig der nicht entprellte Schalter ist.

Das ganze könnte man auch zu einem Zwei-Spieler-(Glücks)Spiel umfunktionieren.

Wer als aller erstes mit seinem nicht entprellten Schalter eine Reihe von 10 (oder 5) LED angeknippst hat, ohne über das Ziel hinaus zu schießen (Buzzer wenn der Zähler 11 erreicht, ansonsten vielleicht eine kurze Melodie), hat gewonnen :-)


Eine andere Idee wäre sozusagen ein "akustisches" Oszilloskop, sofern kein richtiges vorhanden.
Beim ersten Tastendruck "zeichnet der Arduino auf" was in den nächsten X Millisekunden am Eingang ankommt (nur die An/Aus Sequenz, kein richtiges kontinuierliches Sampling o.Ä.), und gibt es entweder via Piepser oder LED verlangsamt aus. Prellt der Schalter drei mal, würde der Piepser/ die LED entsprechend reagieren, nur eben so, dass es mit der trägen menschlichen Wahrnehmung auch nachvollzogen werden kann :-)


Programmiert sie auch selber (IDE oder etwas wie Ardublock)?

Viele Grüße
Marcus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 10:52
Beitrag #3
RE: Tasten prellen
Hallo marcus,

danke für den Tipp.
Ich denke ich werde einfach 8 LEDs anschliessen und dann versuchen die "preller" zu zählen. Den Wert gebe ich dann über die LEDs in Binärdarstellung aus.

Kommt das so hin?
PseudoCode:
Code:
Loop
{
laststate = low;
zaehler = 0;

if (TasterStatus == High & laststate = low)
{
   laststate = High;
   ZaehlePreller(100); //fuer 100ms
}
if (TasterStatur == Low)
{
   BinaerAusgabe (zaehler);
}
}

ZahlePreller (zeit)
{
startzeit == time;
local_laststaste = high;
while (startzeit + zeit < time)
{
   if (TastaerStatus != local_laststate)
   {
     zahler++
     local_laststate ==!local_lastsate)
   }
}


(03.02.2015 10:26)marcus schrieb:  Programmiert sie auch selber (IDE oder etwas wie Ardublock)?
Sie programmiert auch schon etwas selber (IDE). Auch das umrechnen von dez zu binär hat sie verstanden (das brauchten wir um eine 7-Segment Anzeige zu steuern.

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 10:55
Beitrag #4
RE: Tasten prellen
Hi,
es gibt auch Taster, die gar nicht oder nur wenig prellen. Manchmal hilft da langsam und vorsichtig draufzudrücken.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 07:57
Beitrag #5
RE: Tasten prellen
Halli Hallo,

ich habe zum testen einmal diesen Code getippelt.
Leider kommt das überhaupt nichts raus. Kann einmal jemand schauen wo mein Fehler ist?

Funktion: Setze für D3 eine Interrupt funktion und erhöhe in dieser bei jedem Aufruf dien zähler um 1.
Bebe 500ms nach dem ersten High den Wert auf dem Seriellmonitor aus:

Code:
volatile int prellen = 0;
int taster = 3;
long zeit = 0;
byte fertig = 0;
byte start = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(taster, INPUT);
  attachInterrupt(1, zaehlen, RISING);
  zeit = -90000;
}

void loop()
{
  if (prellen > 0)
  {
    if ((millis() > zeit + 500) & (fertig == 0))
    {
      Serial.print(prellen);  
      delay(2);
      fertig = 1;
    }
  }
  if ((start == 1) & (zeit > 0))
  {
    zeit = millis();
    start = 2;
  }

}

void zaehlen()
{
  if (prellen == 0)
  {
    start = 1;
  }
  prellen++;
}


Angehängte Datei(en) Thumbnail(s)
   

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 09:41
Beitrag #6
RE: Tasten prellen
Hi,
eigentlich muesste Dein Programm genau einmal eine 1 ausgeben und dann gar nichts mehr. Ist das so? Falls nicht: Was genau macht das Programm?
(Es sind einige Fehler im Coding, aber ich wuerde erstmal gerne wissen, wo der Knackpunkt liegt.)
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 12:09
Beitrag #7
RE: Tasten prellen
Hi Thorsten,

der Knackpunkt ist das überhaupt nichts passiert.

Warum denn genau einmal eine 1? Sehe ich da etwas nicht?

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 13:13
Beitrag #8
RE: Tasten prellen
Hi,
also warum ich da einfach nur eine 1 erwarte:
Zuerst ist prellen == 0 und start == 0. D.h. loop() macht erstmal gar nichts. Dann schlaegt irgdendwann der Interrupt zu und prellen wird 1. loop() laeuft so schnell, dass es hier sofort weitergeht und wir sind bei der millis()-Abfrage. Die ist immer "true", da millis() immer > 0 ist, zeit wird nie geaendert und -90000+500 ist immer < 0. fertig ist auch immer noch 0.
D.h. es wird 1 ausgegeben, dann fertig auf 1 gesetzt. Da fertig nie mehr zurueck gesetzt wird, wird das coding mit dem Serial.print nie mehr durchlaufen.
Weiter unten wird zeit nie > 0, da es < 0 anfaengt und die einzige Stelle, an der es geaendert wird, nur dann ausgefuehrt wird, wenn es > 0 waere.

Das ganze hat ein paar Unwaegbarkeiten:
millis() liefert ein unsigned long und Du vergleichst mit einem (signed) long, der negativ ist. Keine Ahnung ob das richtig funktioniert. Ausserdem verwendest Du "&" statt "&&", was auch problematisch sein koennte.

Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  4 Tasten für 4 Laufzeiten des gleichen Programms Nimes 8 368 18.07.2016 16:32
Letzter Beitrag: Scheams
  2 Tasten drücken damit licht angeht tjard 11 553 19.06.2016 12:24
Letzter Beitrag: hotsystems
  SainSmart 1602 LCD Keypad Shield Modul Display Tasten Rossy 20 3.068 08.08.2015 12:44
Letzter Beitrag: hotsystems
  Suche Beispiel für je einmal ausgeführte Unterprogramme mit Aufruf durch Tasten Marlox 42 6.601 28.12.2014 22:49
Letzter Beitrag: Marlox
  Start + Stop Tasten für Schrittmotor Dortmunder85 3 7.430 27.08.2013 17:51
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste