preciso separar uma estring em 2 pedaços:
exemplo:
my_string = "17 "
separando ficaria = (1) e (7)
eu preciso imprimir o horário no display, como os minutos vão até 59, eu não queria escrever varias linhas de código para acada numero até 59, então fis de 0 a 9 e a intenção é pegar o valor da hora e do minuto e separar em 2, no caso se for (17) primeiro eu mando imprimir o 1 depois seto o cursor para o lado e mando imprimir o numero 7 eu tentei usar o código:(.indexOf )
tempo_atual = rtc.getTimeStr(); //armazena em formato de string a hora atual na variavel (tempo_atual)
data_atual = rtc.getDateStr(); //armazena em formato de string a data atual na variavel (data_atual)
hora_atual = tempo_atual.substring(0,(tempo_atual.indexOf(":")));
minuto_atual = tempo_atual.substring(5,(tempo_atual.indexOf(":"))+1);
segundo_atual = tempo_atual.substring(6,(tempo_atual.indexOf(" ")));
data_dia = data_atual.substring(0,(data_atual.indexOf(".")));
data_mes = data_atual.substring(5,(data_atual.indexOf("."))+1);
consegui separar o valor inteiro de (hora) de (minuto) e de (segundo), mas não consegui usar para separar o valor recebido em 2 casas,
estou usando a matemática para separar os valores, queria uma solução mais simples que está
//-INICIO---------------------------SEPARA HORA----------------------------------------------------------
if((hora_atual.toInt() >= 0) && (hora_atual.toInt() <= 9)){
hora_esquerda = 0;hora_direita = hora_atual.toInt();}
if((hora_atual.toInt() >= 10) && (hora_atual.toInt() <= 19)){
hora_esquerda = 1; hora_direita = hora_atual.toInt() - 10;}
if((hora_atual.toInt() >= 20) && (hora_atual.toInt() <= 24)){
hora_esquerda = 2; hora_direita = hora_atual.toInt() - 20;}
//-FINAL----------------------------SEPARA HORA-----------------------------------------------------------
//-INICIO---------------------------SEPARA MINUTO---------------------------------------------------------
if((minuto_atual.toInt() >= 0) && (minuto_atual.toInt() <= 9)){
minuto_esquerda = 0;minuto_direita = minuto_atual.toInt();}
if((minuto_atual.toInt() >= 10) && (minuto_atual.toInt() <= 19)){
minuto_esquerda = 1; minuto_direita = minuto_atual.toInt() - 10;}
if((minuto_atual.toInt() >= 20) && (minuto_atual.toInt() <= 29)){
minuto_esquerda = 2; minuto_direita = minuto_atual.toInt() - 20;}
if((minuto_atual.toInt() >= 30) && (minuto_atual.toInt() <= 39)){
minuto_esquerda = 3; minuto_direita = minuto_atual.toInt() - 30;}
if((minuto_atual.toInt() >= 40) && (minuto_atual.toInt() <= 49)){
minuto_esquerda = 4; minuto_direita = minuto_atual.toInt() - 40;}
if((minuto_atual.toInt() >= 50) && (minuto_atual.toInt() <= 59)){
minuto_esquerda = 5; minuto_direita = minuto_atual.toInt() - 50;}
}//-FINAL---------------------------SEPARA MINUTO----------------------------------------------------------
Tags:
Boa noite, uma string nada mais é que um vetor de "char" entao logo para separa-la vc deve usar outra para receber os valores e chama-la dessa forma:
String my_string = "17 ";
char primeiro_numero = my_string[0]; // vai imprimir 1
char segundo_numero = my_string[1]; // vai imprimir 7
Espero ter ajudado, bons projetos!
Em vez de:
String my_string = "17 ";
Não seria:
char my_string[] = "17";
vide:
https://www.arduino.cc/en/Reference/String
Abcs
Amigo tenta assim:
my_string = "17 " ;
String str1= my_string.length(0);
String str2=my_string.length(1);
Serial.println("st1r="+str1+" str2="+str2+"!"); // Vai imprimir na serial: str1=1 srt2=7!
parceiro, testei sua sugestão no código a baixo e deu o seguinte erro:
ERRO:
exit status 1
no matching function for call to 'String::length(int)'
CODIGO:
String my_string = "17 ";
void setup() {
Serial.begin(9600);}
void loop() {
String str1 = my_string.length(0);
String str2 = my_string.length(1);
Serial.println("st1r="+str1+" str2="+str2+"!"); // Vai imprimir na serial: str1=1 srt2=7!
}
cara, testei o seguinte codigo: e seu super certo, vlw mesmo
String my_string = "17 ";
void setup() {
Serial.begin(9600);
}
void loop() {
char primeiro_numero = my_string[0]; // vai imprimir 1
char segundo_numero = my_string[1]; // vai imprimir 7
Serial.println(primeiro_numero);
Serial.println(segundo_numero);
delay(1000);
}
Bom dia Vinivius, gostei desse display LCD.
Poderia informar o link do produto ?
Obrigado e abraços.
Oi JGAM, bom dia.
Acho que ele usou um LCD 20x4 normal e usou o recurso de Big NumbersFonts.
http://woodsgood.ca/projects/2015/02/17/big-font-lcd-characters/
Rui
Muito legal !
Obrigado e abraços .
esse modelo é o display (20x4) em conjunto com o modulo (I2C) para projetar esses numero maiores na tela criei 8 variaveis do tpo byte cada variavel formando um desenho especifico, depois criei uma logica, juntando os pedaços eu crio um numero, que tem o tamanho de 3 colunas de largura por 2 linhas de altura.
você pode observar que o numero está cheio de divisões que são as divisas entre uma coluna e outra
video de exemplo:
https://www.youtube.com/watch?v=Dalk4M0rhBM
Muito bom ! Obrigado e abraços.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por