keypad input naar T.setTimer(h,m,s);

algemene C code
Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

keypad input naar T.setTimer(h,m,s);

Berichtdoor christiaan » 12 Feb 2016, 11:15

Hallo,

Ik heb nog één vraag momenteel,
Is het mogelijk om een keypad input die in een string staat te converteren naar een h,m,s zodat T.setTimer deze kan begrijpen en gebruiken.
Ik wil hem dan dus de ingevoerde tijd geven die ik intyp.

cpp code
#include <Keypad.h>
String userinput;
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

//Define the keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {21,20,19,18}; //connect to row pinouts (2,3,4,5)

// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {17,16,15,14}; //connect to column pinouts (6,7,8,9)

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
T.SetTimer(h,m,s); // Timer voor de Escape room. Deze moet dus gevuld worden vanuit de keypad invoer nadat ik op C heb gedrukt
}

void loop() {
char key = keypad.getKey();
if (key != NO_KEY){
digitalWrite(23, HIGH);
digitalWrite(26, HIGH);
delay(60);
switch (key){
case 'A': resetGame(); break;
case 'B': break;
case 'C': setOwnTime();
case 'D': changePassword(); break;
case '#': checkPassword(); break;
case '*': resetPassword(); break;
default: processNumberKey(key);
}

void processNumberKey(char key) {
Serial.print(key);
userinput += key;

}
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor nicoverduin » 12 Feb 2016, 12:27

Tuurlijk:). zie String subString en String toInt.
Eerst haal je jouw H M en S uit de string vandaan en converteer ze naar een int. en je kan T setten
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor christiaan » 12 Feb 2016, 14:21

denk dat er alleen een nadeel is,

H = uren = 1 cijfer maximaal
M = minuten = 2 cijfers maximaal
S = seconden = 2 cijfers maximaal.

Kan ik eerst opdelen in 1,2,2 digits en dan eventuele getallen van M en S dat met een 0 begint weer weg laten halen????

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

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor shooter » 12 Feb 2016, 14:27

zoek op timer in de arduino.cc
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor nicoverduin » 12 Feb 2016, 14:29

Ofwel je maakt voor jezelf een harde afspraak dat je altijd 1-2-2 gebruikt ofwel je maakt onderscheid door een speciaal teken (bijvoorbeeld ":").
Wat jij redeneert, gaat volgens mij niet op:

cpp code
1203

kan worden 1 uur 2 minuten 3 seconden of 1 uur 20 minuten 3 seconden. En zo zullen er legio voorbeelden kunnen voorkomen. Of je zorgt dat het altijd 5 tekens zijn en je moet altijd minuten en seconden als 2 cijfers inbrengen.
Als jij een String hebt met bijvoorbeeld "03" dan zal hij dat keurig vertalen in een int = 3. Overigens, soms leer je meer door gewoon eens met die functies te spelen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor christiaan » 12 Feb 2016, 14:43

Klopt nico over het leren van functies door te spelen, echter heb ik nu geen arduino voor de hand liggen. Maar wil wel graag beginnen met de code te schrijven.

Ik zal ten alle tijden zelf de input geven, dus dat zal altijd dezelfde opbouw geven.
Dus qua input wordt het dan: HMMSS. Maar is het zo dat als ik string to int gebruik, dat de eerste nul (0) nooit wordt getoond?????? Dus stel mijn input is: 10210 (1 uur, 2 minuten en 10 seconden) ook daadwerkelijk zo wordt uitgegeven als int? of wordt de output: 1 uur, 02 minuten en 10 seconden.

Ik kan dus nu nergens testen, dus heel lastig om het zelf nu te proberen. Vandaar mijn uitgebreide vraag en voorbeeld in deze post.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor Gij Kieken » 12 Feb 2016, 15:30

Los van de berekenings methode die je gebruikt,kun je met jou display TM1637 bepalen of je voorloop nullen wilt of niet en als je uiterst links dan wel van rechts wilt beginnen weergeven.

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor christiaan » 12 Feb 2016, 16:14

Positionering moet je niet naar kijken, dat wordt ergens anders opgevangen. Het gaat puur dat de notatie in T.setTimer goed komt te staan. Dus als er 2 minuten is dat er niet 02 komt te staan maar 2

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: keypad input naar T.setTimer(h,m,s);

Berichtdoor nicoverduin » 12 Feb 2016, 21:12

Ik ben bang dat je het niet helemaal begrijpt wat je doorgeeft in setTimer. Dat zijn (neem ik nu voor het gemak ff aan) 3 x een int. En of je nu 03 of 3 in een int stopt, staat er gewoon 3 in.
Maar goed, ik lijk in herhaling te treden.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten