• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Stoper - Stopwatch i utrzymanie wyniku
#11
spróbuję Smile i dam znać czy wyszło
 
Odpowiedź
#12
ale uwarunkuj przepisywanie od resetu stopera
w kolejności
przepisz dane
wyzeruj stoper
 
Odpowiedź
#13
nie wiem czy tak to miało być . Sprawdź i daj znać Wink , w sumie to myślałem że taki stoperek to na pniu machnę w 10 minut a zleciało mi ponad 2 godzinki z przerwą na kawkę .


Kod:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

long st,ms,sh,sm,ss,S1H,S1M,S1S,S1MS,S2H,S2M,S2S,S2MS;
char state = 1,pulse = 0;

void setup()
{
  lcd.begin(16,2);
  st = millis();
  pinMode(4, INPUT_PULLUP);

}

void loop(){
  
  if ( pulse > 0 and pulse < 4 ){
  
  ms = millis() - st ;
  
  if ( ms >= 1000 ){st = millis();ms= 0 ;ss++;}
  if ( ss >= 60 ){sm++;ss = 0;}
  if ( sm >= 60 ){sh++;sm = 0;}
  }
  
  if ( digitalRead(4) == LOW and state == 0 ){state = 1; pulse++; }
  if ( digitalRead(4) == HIGH and state == 1 ){state = 0;}
  
switch (pulse){
  case 2:
          S1H = sh;S1M = sm;S1S = ss;S1MS = ms;pulse=3;
  break;
  
  case 4:
          S2H = sh;S2M = sm;S2S = ss;S2MS = ms;
          sh = S2H;sm = S2M;ss = S2S;ms = S2MS;
          pulse = 5;
  break;
  case 6:
          st = millis();ms = 0;ss = 0;sm = 0;sh = 0;ms = 0;
          S1H = 0;S1M = 0;S1S = 0;S1MS = 0;
          
          pulse=0;
  break;
  }
  
  lcd.setCursor(2,0);
  
  if ( sh < 10 )lcd.print("0");
  lcd.print(sh);
  lcd.print(":");
  if ( sm < 10 )lcd.print("0");
  lcd.print(sm);
  lcd.print(":");
  if ( ss < 10 )lcd.print("0");
  lcd.print(ss);
  lcd.print(":");
  if ( ms < 100 )lcd.print("0");
  if ( ms < 10 )lcd.print("0");
  lcd.print(ms);lcd.print("  ");
  
  lcd.setCursor(2,1);
  
  if ( S1H < 10 )lcd.print("0");
  lcd.print(S1H);
  lcd.print(":");
  if ( S1M < 10 )lcd.print("0");
  lcd.print(S1M);
  lcd.print(":");
  if ( S1S < 10 )lcd.print("0");
  lcd.print(S1S);
  lcd.print(":");
  if ( S1MS < 100 )lcd.print("0");
  if ( S1MS < 10 )lcd.print("0");
  lcd.print(S1MS);lcd.print("  ");
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#14
jasq temat już dawno zakończony hehe
 
Odpowiedź
#15
nie napisano a wydał mi się dosyć ciekawy ;-)
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#16
Sprawe z zerowaniem millis rozwiazalem tak(do tego millis sie zeruje przy uzyciu buttona pin 8 a wynik pokazuje sie w dolnej lini wyswietlacza LCD 16x2): :

Kod:
#include <LiquidCrystal.h>


const byte lightPin = 0;  


int ledPin = 13;        
int buttonPin = 8;

unsigned long lapMillis = 0;
unsigned long startMillis = millis();
float lapTime = 0.00;

boolean firstTrigger = true;
boolean newBest = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
 lcd.begin(16, 2);
 Serial.begin(9600);

 
}

void loop()
{

 pinMode(8,INPUT);
 
 pinMode(8,INPUT);
 if(digitalRead(8)== LOW)
 {


   
   lapMillis = millis() - startMillis;
   startMillis = millis();

   lapTime = lapMillis / 1000.00;

   

   Serial.print("lapTime: ");
   Serial.println(lapTime);
   Serial.print("lapMillis: ");
   Serial.println(lapMillis);
   //print stop time
   lcd.setCursor(0, 1);
   lcd.print("P: ");
   lcd.print(lapTime);
   lcd.print("       ");  


 }

 
   lcd.setCursor(0,0);
   lcd.print("T:");
   lcd.setCursor(3,0);
   lcd.print((millis() - startMillis)/1000.00);
 delay(200);
 
 
 
}

//pozdr by Bon3r

mam nadzieje, ze sie komus przyda Angel Idea
 
Odpowiedź
#17
JasQ twoj stoper jest dobry tylko szkoda, że górna linia sie nie zeruje po wcisnieciu przycisku Smile
 
Odpowiedź
#18
coś takiego ?? bo nie do końca załapałem i czy ma się restartować cały czas czy tak jak teraz tylko 1 raz . Bo jak ma cały czas to dodałbym osobny przycisk do zerowania no chyba że hard reset

Kod:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

long st,ms,sh,sm,ss,S1H,S1M,S1S,S1MS,S2H,S2M,S2S,S2MS;
char state = 1,pulse = 0;

void setup()
{
  lcd.begin(16,2);
  st = millis();
  pinMode(4, INPUT_PULLUP);

}

void loop(){
  
  if ( pulse > 0 and pulse < 4 ){
  
  ms = millis() - st ;
  
  if ( ms >= 1000 ){st = millis();ms= 0 ;ss++;}
  if ( ss >= 60 ){sm++;ss = 0;}
  if ( sm >= 60 ){sh++;sm = 0;}
  }
  
  if ( digitalRead(4) == LOW and state == 0 ){state = 1; pulse++; }
  if ( digitalRead(4) == HIGH and state == 1 ){state = 0;}
  
switch (pulse){
  case 2:
          S1H = sh;S1M = sm;S1S = ss;S1MS = ms;
          ms = 0;ss = 0;sm = 0;sh = 0;ms = 0;
          pulse=3;
  break;
  
  case 4:
          S2H = sh;S2M = sm;S2S = ss;S2MS = ms;
          sh = S2H;sm = S2M;ss = S2S;ms = S2MS;
          pulse = 5;
  break;
  case 6:
          ms = 0;ss = 0;sm = 0;sh = 0;ms = 0;
          S1H = 0;S1M = 0;S1S = 0;S1MS = 0;
          st = millis();pulse=0;
  break;
  }
  
  lcd.setCursor(2,0);
  
  if ( sh < 10 )lcd.print("0");
  lcd.print(sh);
  lcd.print(":");
  if ( sm < 10 )lcd.print("0");
  lcd.print(sm);
  lcd.print(":");
  if ( ss < 10 )lcd.print("0");
  lcd.print(ss);
  lcd.print(":");
  if ( ms < 100 )lcd.print("0");
  if ( ms < 10 )lcd.print("0");
  lcd.print(ms);lcd.print("  ");
  
  lcd.setCursor(2,1);
  
  if ( S1H < 10 )lcd.print("0");
  lcd.print(S1H);
  lcd.print(":");
  if ( S1M < 10 )lcd.print("0");
  lcd.print(S1M);
  lcd.print(":");
  if ( S1S < 10 )lcd.print("0");
  lcd.print(S1S);
  lcd.print(":");
  if ( S1MS < 100 )lcd.print("0");
  if ( S1MS < 10 )lcd.print("0");
  lcd.print(S1MS);lcd.print("  ");
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości