Go Down

Topic: RTC come aggiustare la data da un telecomando (Read 2284 times) previous topic - next topic

llluca

Ciao,
volevo variare la data del mio RTC ma con il telecomando.
ho una funzione che legge i valori del telecomando:
tipo:
Code: [Select]

switch (results.value) {
 
    case 0xFF6897: 
            numero = 0;
              break;
             case 0xFF30CF: 
            numero = 1;
              break;
...
}
return numero;


ma vorrei un consiglio su come modificare:
Code: [Select]
RTC.adjust(DateTime(__DATE__, __TIME__));

questa la considero una stringa?
non penso che basti fare l' append dei dati che ricevo via IR?

cosa ne pensate?

Grazie

ƎR

#1
Jul 05, 2013, 12:48 pm Last Edit: Jul 05, 2013, 01:49 pm by ?R Reason: 1
guarda nella libreria che tipo di dati riceve in ingresso, che libreria stai usando? ci sarà una pagina di spiegazione dei metodi in internet...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

llluca


libreria stai usando?

#include "RTClib.h"

grazie per la risposta.
Purtroppo non ho trovato nulla a riguardo circa RTC.adjust

ƎR

prova questo:
Code: [Select]
RTC.adjust(DateTime (year, month, day, hour, min, sec));
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

llluca

Grazie!
se questa è una stringa?
Prima parte risolta...
ma come la compongo dal telecomando?

ƎR


Grazie!
se questa è una stringa?

non è una stringa, sono 6 variabili tu imposti il valore di ciascuna di esse per settare la data e l'ora.. prova se funziona

Prima parte risolta...
ma come la compongo dal telecomando?

beh prova prima di dire che è risolto, dando uno sguardo veloce alla libreria mi pareva che così potesse andare

per la composizione dal telecomando hai già provato la barte di capire che tasti sono premuti?
-se si devi strutturare il codice in modo che l'arduino interpreti una sequenza di comandi
-se no dai un'occhiata a questi progetti che usano la libreria IR Remote:
http://www.instructables.com/id/Arduino-IR-Remote-receiver/
http://www.instructables.com/id/The-Easiest-Way-to-Use-Any-IR-Remote-with-Ardiuno/
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

llluca

per il telecomando non ci sono problemi,
con  una funzione leggo i codici e restituisco il numero  corrispondente stampato sul telecomando ad es:
Quote

switch (results.value) {
case 0xFF6897: 
            numero = 0;
              break;

funzione restituisce return numero;

il difficile è come unire i numeri per comporre
Code: [Select]
(year, month, day, hour, min, sec));
ecc.

nid69ita

Da telecomando puoi dare dei numeri ma il difficile è capire a cosa servono.

Come fai a variare l'ora con una sveglia? Schiacci una sequenza di tasti per andare in variazione minuti e poi aumenti/diminuisci i minuti.
Poi schiacci una sequenza di tasti e vai in modifica ore. Anche li poi aumenti/diminuisci.
Il tutto con un feedback all'utente.
Non proprio una cosa semplice.
Oppure hai un telecomando con non solo le cifre ma anche dei tasti con scritto delle funzioni specifiche? ore, minuti, giorno,mese,anno?

Come dai il feedback all'utente? Ha collegato un LCD?
my name is IGOR, not AIGOR

llluca


Non proprio una cosa semplice.

effettivamente....??????
Si uso un lcd.
Stavo anche pensando di inserire una specie di menu per variare  ore, minuti, giorno,mese,anno

ƎR


per il telecomando non ci sono problemi,
con  una funzione leggo i codici e restituisco il numero  corrispondente stampato sul telecomando ad es:
Quote

switch (results.value) {
case 0xFF6897:  
           numero = 0;
             break;

funzione restituisce return numero;

il difficile è come unire i numeri per comporre
Code: [Select]
(year, month, day, hour, min, sec));
ecc.


ma quello non è poi così difficile, alla fine sono delle variabili numeriche che tu imposti, il difficile è quello che dice @nid69ita
se non hai un feedback dovresti crearti un codice del tipo premi il tasto menu e poi premi due numeri e così imposti il valore di sec
poi con un altro tasto selezioni i min e gli dici altre due cifre, e così via...
se invece hai un lcd puoi navigare in un menu usando i tasti volume + o - e programmi +/-... con un po' di fantasia fai tutto :)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

llluca


ma quello non è poi così difficile, alla fine sono delle variabili numeriche che tu imposti, il difficile è quello che dice @nid69ita

Suggeriscimi cortesemente  come unire la sequenza di numeri per fare 16.05
io ho una funzione :

Code: [Select]
int numero = telecomando();

ƎR

premesso che tu devi arrivare ad una cosa così:
Code: [Select]

unsigned int year=2013;
byte month=7;
byte day=5;
byte hour=16;
byte min=5;
byte sec=0;
RTC.adjust(DateTime (year, month, day, hour, min, sec));


in che modo vuoi procedere con il menu sul lcd o con la sequenza con il telecomando?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

llluca


in che modo vuoi procedere con il menu sul lcd o con la sequenza con il telecomando?

Il massimo sarebbe entrambe le cose,
Un menu ma da telecomando :-)

Ideona  :. .concat andrebbe bene ma se non sbaglio serve non per numeri ma per stinghe e successimvamente lo ritrasformo con atoi?

nid69ita

Dovresti guardare la libreria MENUWIZ. C'e' un thread nel forum che ne parla. Potresti pilotarla da telecomando, non credo sia difficile.
Di base lavora con dei pulsanti, ma puoi usare una tua funzione che si sostituisce ai tasti. Dovresti avere dei tasti su telecomando che intendi come su, giu, destra, sinistra, okay, annulla  (che non siano i numeri!!!)
my name is IGOR, not AIGOR

leo72


Code: [Select]
RTC.adjust(DateTime(__DATE__, __TIME__));

__DATE__ e __TIME__ sono costanti predefinite che in fase di compilazione il compilatore sostituisce con l'attuale data e l'attuale orario del computer su cui stai facendo la compilazione.

Go Up