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
Countdown timer
22.02.2015, 23:25
Beitrag #1
Countdown timer
Nabend,

ich habe mich eine Weile nicht mit meinem Arduino beschäftigt gehabt, deshalb bitte ich euch hier mal um Rat. Ich spiele von Zeit zu Zeit Paintball. Auf einem Feld habe ich nun gesehen dass jemand sich eine Bombenatrappe gebastelt hatte. Im Grunde recht simpel. Zeit mit nem Drehknopf einstellen, Start drücken und um das Ding zu entschärfen einen anderen Knopf oder einen Schlüsselschalter gedrückt halten für 3 sec. Ne Minute bevor die Zeit um ist solls nochmal piepsen damit mann auch weiss dass es jetzt eilig wird.

Bisher habe ich es geschafft dass ich entweder am Drehgeber zahlen einstellen kann oder einfach nur einen vordefinierten Countdown ablaufen lassen kann.

in dem Jetzigen Sketch habe ich das Problem dass der Countdown zwar läuft, aber mir die Zeit nur aktualisiert wird wenn ich den Knopf auch gedrückt halte. Ich bin gerade ein wenig ratlos wie ich das nun wieder hinbekomme dass der Countdown einfach abläuft wenn ich den start button gedrückt habe.

Hat jemand einen Tipp für mich?

Code:
#include <Encoder.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <CountDownTimer.h>


#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Encoder myEnc(3, 4);
long oldPosition  = -999;
CountDownTimer T;

const int buttonStart = 6;    
int buttonState = 0;

//------------------------------------------------------------------------------------
void setup()   {  
  
  pinMode(buttonStart, INPUT);
  
  T.SetTimer(0,02,10);
  T.StartTimer();
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("Armed!");  // Armed = "Scharf", Remaining! = Verbleibende Zeit,

  display.drawFastHLine(0, 16, 128, WHITE);
  display.drawFastHLine(0, 17, 128, WHITE);
  display.display();  
}

//------------------------------------------------------------------------------------
void loop() {
  
buttonState = digitalRead(buttonStart);

   if (buttonState == HIGH) {
      T.Timer(); // run the timer
  }
//  else {
//    T.Timer();
//  }

//  T.Timer(); // run the timer

  
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
  }
  
  if (T.TimeHasChanged() ) // this prevents the time from being constantly shown.
    
  display.setTextColor(WHITE);
  display.fillRect(0, 23, 128, 41, BLACK);   // Blöcke löschen
  display.setTextSize(4);
  display.setCursor(0,26);
  display.print(T.ShowMinutes());
  display.print(":");
  display.print(T.ShowSeconds());
//  display.print(newPosition/4);                          // Zähler

  display.display();  
}

Gruß Chris
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2015, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2015 07:45 von Thorsten Pferdekämper.)
Beitrag #2
RE: Countdown timer
Code:
void loop() {

static int started = 0;

if(digitalRead(buttonStart)) started = 42;

if (started) {
      T.Timer(); // run the timer
  }

  
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
  }
  
  if (T.TimeHasChanged() ) // this prevents the time from being constantly shown.
  
...
  }

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
25.02.2015, 22:56
Beitrag #3
RE: Countdown timer
Danke für den Code Schnipsel.
Funktioniert soweit auch ganz gut, nur zählt er im Hintergrund beim Starten des Arduino schon mit. Und wenn ich dann den Knopf drücke, springt er direkt zu der stelle an der der Countdown bereits ist. Er fängt also nicht von da an zu zählen. Muss ich mir die Libary mal anschauen ob ich so etwas wie einen Pause Befehl finde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.02.2015, 10:03
Beitrag #4
RE: Countdown timer
Hi,
ich weiß halt nicht wirklich, wie diese Lib funktioniert. Ich habe sie nicht gefunden. Aber trotzdem, das hier sollte dann gehen:
Code:
void setup()   {  
  
  pinMode(buttonStart, INPUT);

  // den Timer-Kram hier weglassen

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  
  // ...
  
}

void loop() {

static int started = 0;

if(digitalRead(buttonStart) && !started) {
      T.SetTimer(0,02,10);
      T.StartTimer();
      started = 42;
}

if (started) {
      T.Timer(); // run the timer
  }

  
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
  }
  
  if (T.TimeHasChanged() ) // this prevents the time from being constantly shown.
  
...
  }
...halt einfach erst starten, wenn der Knopf gedrückt wird.
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
02.03.2015, 09:01
Beitrag #5
RE: Countdown timer
Moinsn,

danke für deine Antwort, hat aber leider auch nicht so richtig funktioniert. Zur Zeit habe ich ein wenig um die Ohren, deshalb komme ich immer nur alle paar Tage dazu wenn ich zeit und Lust habe mal zum Antworten. Ich habe mal die Lib mit angehängt. Falls das interessant sein sollte.


Angehängte Datei(en)
.zip  CountDownTimer-master.zip (Größe: 4,64 KB / Downloads: 31)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 10:02
Beitrag #6
RE: Countdown timer
Hi,
tja, da müsstest Du schon genauer sagen, was nicht funktioniert.
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
02.03.2015, 16:00
Beitrag #7
RE: Countdown timer
ah klar, war nur vorhin in der Pause kurz geantwortet.
Er zählt im Hintergrund immernoch weiter. Einziger Unterschied ist, dass er jetzt beim starten des Arduino 0:0 anzeigt und wenn ich dann meinen Knopf drücke springt er wieder zu der Stelle an der er wäre wenn er direkt nach start zählen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 16:18
Beitrag #8
RE: Countdown timer
Hi,
das Coding, das ich reingestellt habe, löst ja nur das Problem, dass es beim Drücken des Knopfs zu zählen anfangen soll. Natürlich zählt das Ding von da an weiter. Allerdings dürfte nur das erste Drücken des Knopfs irgendwas machen.
...und was meinst Du mit "Hintergrund"? Der Timer verwendet micros() oder millis(), die zählen eigentlich immer.
Vielleicht stellst Du mal Dein ganzes Coding ein.
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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  NXT plus Arduino: i2c, Rotationsencoder, Timer-IRQ, DueTimer, PID, keyboard, lib.c HaWe 2 1.240 27.05.2015 08:14
Letzter Beitrag: HaWe
  Timer mit Ablaufsignal escor 2 1.650 06.12.2014 12:51
Letzter Beitrag: marcus

Gehe zu:


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