Klok geimporteerd nu loopt die niet

Arduino specifieke Software
Berichten: 46
Geregistreerd: 13 Jan 2016, 11:00

Klok geimporteerd nu loopt die niet

Berichtdoor dinoshop » 20 Feb 2017, 14:07

Heb een groot programma en nu een klok geïmporteerd.
als ik de klok zelf in een nieuwe arduino programmeer loopt de goed .
in programma haalt hij perfect datum en tijd op maar dat is het hij loopt niet door .
Wat gaat hier mis ?

Code: Alles selecteren
#include <Wire.h>
#include <Keypad.h>
#include <Keypad_I2C.h>;
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include<SPI.h>
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd1(0x26, 16, 2);//clock
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
  { '1', '2', '3', 'a'  } ,
  { '4', '5', '6', 'b'  } ,
  { '7', '8', '9', 'c'  } ,
  { '*', '0', '#', 'd'  }
};

byte rowPins[ROWS] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};
int adress = 0x38;

Keypad_I2C keypad = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, adress );

const int myPins[] = {3, 5, 6}; //licht
int mosFet = 0 ;
const int Time = 20;

char enteREDText[5];
byte time[4];
byte refresh = 0; //1 if is refreshed once time...
char password[5];
int key = -1;
char lastKey;
char var;
boolean passwordEnable = false;

//Buttons for lcd shield
char BT_RIGHT = '4';
char BT_UP = 'a';
char BT_DOWN = 'b';
char BT_LEFT = '6';
char BT_SEL = 'd';   // Ok key
char BT_CANCEL = 'c';
char BT_DEFUSER = 'x';   // not implemented

//leds

const int REDLED = 11;
const int YELLOWLED = 12;
boolean mosfetEnable = true;
const int MOSFET_TIME = 50;

//TIME INTS
int GAMEHOURS = 0;
int GAMEMINUTES = 45;
int BOMBMINUTES = 4;
int ACTIVATESECONDS = 5;

boolean endGame = false;
boolean sdStatus = false; //search and destroy game enable used in config
boolean saStatus = false; //same but SAbotaghe
boolean doStatus = false; //for DEmolition
boolean start = true;
boolean defuseando;
boolean Cancel;
// SOUND TONES
boolean soundEnable = true;
int tonepin = 13; // Pin 13 for the sound
int tonoPitido = 3000;
int tonoAlarma1 = 2600;
int tonoAlarma2 = 2600;
int tonoActivada = 1330;
int errorTone = 100;

unsigned long iTime;
unsigned long timeCalcVar;
unsigned long REDTime;
unsigned long YELLOWTime;
unsigned long iZoneTime;//initial time for zone
byte team = 0; // 0 = neutral, 1 = YELLOW team, 2 = RED team

void setup() {
  lcd.init();
  lcd.backlight();
  lcd1.init();
  lcd1.backlight();
  Serial.begin(57600);
  RTC.begin();
     if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
    lcd.println("RTC is NOT running!");
  }
  keypad.begin();
 
  lcd.setCursor(0, 0);
  tone(tonepin, 2400, 30);
  lcd.clear();
  lcd.print("OFFICETWO");// you can add your team name or someting cool
  lcd.setCursor(0, 1);
  lcd.print(" AIRSOFT SYSTEM");// you can add your team name or someting cool
  keypad.setHoldTime(50);
  keypad.setDebounceTime(50);
  keypad.addEventListener(keypadEvent);
  delay(2000);
  pinMode(YELLOWLED, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(REDLED, OUTPUT);
  digitalWrite(8, HIGH);
  randomSeed(analogRead(0));
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
 
 
  // CONFIGURE THE BARS OF PROGRESS BAR
  byte bar1[8] = {
    B10000,
    B10000,
    B10000,
    B10000,
    B10000,
    B10000,
    B10000,
    B10000,
  };
  byte bar2[8] = {
    B11000,
    B11000,
    B11000,
    B11000,
    B11000,
    B11000,
    B11000,
    B11000,
  };
  byte bar3[8] = {
    B11100,
    B11100,
    B11100,
    B11100,
    B11100,
    B11100,
    B11100,
    B11100,
  };
  byte bar4[8] = {
    B11110,
    B11110,
    B11110,
    B11110,
    B11110,
    B11110,
    B11110,
    B11110,
  };
  byte bar5[8] = {
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
  };
  byte up[8] = {
    B00000,
    B00100,
    B01110,
    B11111,
    B11111,
    B00000,
    B00000,
  };

  byte down[8] = {
    B00000,
    B00000,
    B11111,
    B11111,
    B01110,
    B00100,
    B00000,
  };
 
  lcd.createChar(5, up);
  lcd.createChar(6, down);
}

void loop() {
  [color=#FF0040]Klokje();[/color]
   menuPrincipal();
   
}
void keypadEvent(KeypadEvent key) {
  switch (keypad.getState()) {
    case PRESSED:
      switch (key) {

      }
      break;
    case RELEASED:
      switch (key) {
        case 'd':
          defuseando = false;
          //lcd.print("d Releases");
          break;
        case 'c':
          Cancel = false;
          //lcd.print("c Releases");
          break;
      }
      break;
    case HOLD:
      switch (key) {
        case 'd':
          defuseando = true;
          //lcd.print("D hold");
          break;
        case 'c':
          Cancel = true;
          // lcd.print("C hold");
          break;
      }
      break;
  }
}

void disarmedSplash() {
  endGame = false;
  digitalWrite(REDLED, LOW);
  digitalWrite(YELLOWLED, LOW);
  if (sdStatus || saStatus) {
    lcd.clear();
    lcd.setCursor(2, 0);
    lcd.print("BOMB DISARMED");
    lcd.setCursor(3, 1);
    lcd.print("GOODS WIN");
    digitalWrite(YELLOWLED, HIGH);
    delay(5000);
    digitalWrite(YELLOWLED, LOW);
  }
  //end code
  lcd.clear();
  lcd.print("Play Again?");
  lcd.setCursor(0, 1);
  lcd.print("A : Yes B : No");
  digitalWrite(REDLED, LOW);
  digitalWrite(YELLOWLED, LOW);
  while (1)
  {
    var = keypad.waitForKey();
    if (var == 'a' ) {
      tone(tonepin, 2400, 30);
      //We hebben twee options, search & destroy en  sabotage play again options !
      if (sdStatus) {
        startGameCount();
        search();
      }
      if (saStatus) {
        saStatus = true;
        startGameCount();
        start = true; //to set iTime to actual millis() :D
        sabotage();
      }
    }
    if (var == 'b' ) {
      tone(tonepin, 2400, 30);
      menuPrincipal();
      break;
    }
  }
}

void explodeSplash() {
  digitalWrite(REDLED, LOW);
  digitalWrite(YELLOWLED, LOW);
  cls();
  delay(100);
  endGame = false;
  lcd.setCursor(1, 0);
  lcd.print("TERRORISTS WIN");
  lcd.setCursor(4, 1);
  lcd.print("GAME OVER");
  for (int i = 200; i > 0; i--) // extra hoge expolderende sound xD
  {
    tone(tonepin, i);
    delay(20);
  }
  noTone(tonepin);
  if (mosfetEnable) {
    activateMosfet();
  }
  delay(5000);
  cls();

  //end code
  lcd.print("Play Again?");
  lcd.setCursor(0, 1);
  lcd.print("A : Yes B : No");
  while (1)
  {
    var = keypad.waitForKey();
    if (var == 'a' ) {
      tone(tonepin, 2400, 30);
      //We hebben twee options, search & destroy en  sabotage play again options !
      if (sdStatus) {
        startGameCount();
        search();
      }
      if (saStatus) {
        saStatus = true;
        startGameCount();
        start = true; //to set iTime to actual millis() :D
        sabotage();
      }
    }
    if (var == 'b' ) {
      tone(tonepin, 2400, 30);
      menuPrincipal();

      break;
    }
  }
}




Code: Alles selecteren
void Klokje() {
   DateTime now = RTC.now();
  lcd1.setCursor(0, 0);
  lcd1.print(now.day(), DEC);
  lcd1.print('/');
  lcd1.print(now.month(), DEC);
  lcd1.print('/');
  lcd1.print(now.year(), DEC);
  lcd1.print(' ');
  lcd1.setCursor(0, 1);
  if (now.hour() < 10) {
    lcd1.print("0");
  }
  lcd1.print(now.hour(), DEC);
  lcd1.print(':');
  if (now.minute() < 10) {
  lcd1.print("0");
  }
  lcd1.print(now.minute(), DEC);
  lcd1.print(':');
  if (now.second() < 10) {
  lcd1.print("0");
  }
  lcd1.print(now.second(), DEC);

 
}
 

 

Advertisement

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Klok geimporteerd nu loopt die niet

Berichtdoor baco1978 » 20 Feb 2017, 14:39

ik kon niet direct iets vinden.
Maar er lijkt een stukje code te ontbreken.

de funktie menuPrincipal(), wat doet deze?
Met vriendelijke groet Arjan

Berichten: 46
Geregistreerd: 13 Jan 2016, 11:00

Re: Klok geimporteerd nu loopt die niet

Berichtdoor dinoshop » 20 Feb 2017, 15:09

Dat bedoel ik nou het programma werkt met een menu, alles bijmekaar zeer groot programma .
maar als je bv in de void setup alles voor opstarten neer zet en in de void klokje de loop dan zou deze aangesproken moeten worden met klokje ();
en tot zover werkt dat ook, alleen de klok loopt nu niet verder dus start geeft aan 20/02/2017 met de tijd van starten bv 14:08:02
dus dat werkt wel alleen loopt die dus ergens vast daarbij vermelden dat de rest van de software perfect werkt .

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Klok geimporteerd nu loopt die niet

Berichtdoor Koepel » 20 Feb 2017, 15:58

Toch is het nodig dat we de hele sketch zien.
Misschien gebruik je teveel ram.
Krijg je een melding hoeveel ram je gebruikt ?
Welke Arduino IDE gebruik je ?
Welk Arduino board gebruik je ?

Misschien is het nodig om over te stappen naar een Arduino Mega2560, of een Arduino Due of Arduino Zero/M0.

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Klok geimporteerd nu loopt die niet

Berichtdoor baco1978 » 20 Feb 2017, 17:16

Het is precies watKoepel zegt, het is handiger om gewoon de gehele code te plaatsen.

met een half stukje code kunnen we niet zien wat er aan de hand is.

maar je zegt dat de rest perfect werkt...
dan zit het probleem toch in menuPrincipal()..... je blijft zeg maar in de funktie: menuPrincipal hangen.

je keert nooit meer terug naar Loop()

en dat is de reden waarom je nooit je klokje zal zien lopen.

ik denk als je je loop aanpast naar dit, dat je nooit het klokje zal zien.

void loop() {

menuPrincipal();
Klokje();

}


maar t blijft een ruwe gok
Met vriendelijke groet Arjan

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Klok geimporteerd nu loopt die niet

Berichtdoor shooter » 20 Feb 2017, 20:06

bij play again staat een while(1) dus altijd, en daar staat maar 1 break, dat betekent dat het programma daar altijd blijft rondtollen tot jij op een knop duwt.

dan kun je dus in die while ook nog een clock call doen, en kijken wat er gebeurt.
het is slimmer om dat key ding in een functie te zetten en af en toe aan te roepen, en in de return aangeven welke toets gedrukt is, en daar dan mee verder gaan.
zorg ervoor dat je geen blocking codes gebruikt zoals pulsein while always delay etc. dan heb je meer kans dat je loop gewoon lekker snel doorgaat.
paul deelen
shooter@home.nl

Berichten: 46
Geregistreerd: 13 Jan 2016, 11:00

Re: Klok geimporteerd nu loopt die niet

Berichtdoor dinoshop » 22 Feb 2017, 10:41

Shooter daar ga ik een s na kijken Bedankt voor de tip

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Alexduh, erayevohukcc en 21 gasten