Ir ao conteúdo

Intrudera6

Membro Pleno
  • Posts

    451
  • Cadastrado em

  • Última visita

Tudo que Intrudera6 postou

  1. Pessoal, Sei que tem gente aqui que é bom em C e estou precisando de ajuda (pergunta de principiante) com um trecho do meu código. Estou precisando passar uma variável String para a rotina abaixo ( entrada por ponteiro, byte* data ). Como eu faço para passar uma variável do tipo String (são muitas strings que eu tenho que gravar)? Será que é possível que esta rotina possa aceitar tipos diferentes de ponteiro além do de variável do tipo byte ? Tem como eu fazer uma rotina que aceite todos os tipos de variáveis (String, char, float, int, long, matriz, vetores e etc.) ? // WARNING: address is a page address, 6-bit end will wrap around // also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) { Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddresspage >> 8)); // MSB Wire.write((int)(eeaddresspage & 0xFF)); // LSB byte c; for ( c = 0; c < length; c++) Wire.write(data[c]); Wire.endTransmission(); }
  2. @ViniciusKruz O meu problema é na edição, poder marcar pontos de retorno e ter a informação das variáveis e rotinas me ajudaria muito no desenvolvimento melhorando a velocidade na programação (O Visual Studio tinha tudo isso, mas não deu certo comigo). Li em algum lugar que o Eclipse permite distribuir as tarefas da compilação por vários núcleos (o que a IDE do Arduino não permite), imagino que isto deve dar uma boa acelerada na compilação, mas isto não é o que me incomoda mais, e a compilação fica bem mais rápida na IDE do Arduino depois da primeira compilação até você fechar o programa (sempre a primeira vez é muito demorada).
  3. Não conheço o Eclipse, mas pelo que eu já li e vi em fóruns ele tem muitas ferramentas para ajudar na programação, como formas de marcar pontos do código para poder voltar facilmente entre outros recursos, e a IDE do Arduino é crua demais, não tem nada que nos auxilie, isto diminuí bastante a eficiência.
  4. @ViniciusKruz Chegou meio tarde, já estava com a minha rotina de escrita e leitura na EEPROM AT24C32 (adaptei de um site que vendia a plaquinha com o DS3231 e a AT24C32, fornecendo as rotinas de acesso), o bom é que a EEPROM suporta até 1 milhão de escritas (muito mais que as 10 mil do Flash do ESP8266), foi fácil portar do EEPROM virtual para a real (fácil demais). Agora tenho que pensar numa tela para o Browser (HTML) com os links para acertar e/ou calibrar o DS3231, uma tela com vários botões ativos. A minha rotina exemplo está ficando enorme, 1369 linhas, e ainda vai crescer bem mais. Neste caso, para fins de entendimento, talvez seja melhor pensar em criar algumas bibliotecas de funções, eu começo e ter problemas para programar no Arduino IDE com um programa com muitas linhas, fica ruim andar para frente e para trás, começo a gastar muito tempo navegando dentro do programa. Vou ter dar um jeito de botar o Eclipse para funcionar com o ESP8266.
  5. @ViniciusKruz Funcionou, agora vou começar a trabalhar na rotina para ler e escrever na EEPROM AT24C32 da plaquinha do DS3231 e quando funcionar vou ter que criar umas rotinas para manipular o registrador de deriva térmica, nas bibliotecas em C para o DS3231 não tem esta função, no Arduino (AVR MEGA) com o BASCOM eu tive que criar tudo do ZERO a partir Datasheet, não vai ser difícil fazer isto agora novamente! Porque você gosta de colocar a velocidade da serial em 9600? É muito baixa, isto é uma das primeiras coisas que eu mudo, altero logo para 230400 (ou para 115200).
  6. @lucianolcoa Facilita a interação com o usuário, pois as alterações (aperto de botão e etc.) acontecem sem que seja necessário recarregar a página html, mas acho que existem formas mais eficientes de fazer isso. Eu trabalhei no passado (uns 15 anos atrás mais ou menos) muito com javascript, mas estou tão enferrujado que não consigo fazer mais nada que funcione com ele.
  7. Equipamento bem interessante, pena que seja meio caro, e o hardware dele é fechado, pois parece ser muito superior ao ESP8266. Nem dá para imaginar o que seria possível com uma coisa destas. @ViniciusKruz Eu realmente tenho uma "tara" pela precisão (e perfeição), o que às vezes me atrapalha pois os meus ideais são ambiciosos demais. Mas acho que se eu colocar a minha ideia em prática talvez consiga precisões melhores do que é possível com o meu frequencímetro, pois o que eu vejo quando coloco o DS3231 no meu frequencímetro é uma frequência que varia bastante no tempo, mesmo com tempo de captura de 10 segundos (se eu tivesse a opção de períodos bem mais longos para o cálculo da frequência seria bem mais estável, mas não tenho esta opção). Fazendo a comparação entre duas horas com um período bem longo aplaina todas as micro-oscilações na frequência do DS3231, o que faria com que o resultado final fosse muito melhor, mas bem mais demorado para ser conseguido. Não vejo a hora de implementar as minhas rotinas. Quando estiverem prontas postarei aqui. Vai ser precisão a baixo custo. Eu nem sei quanto tempo o DS3231 vai se manter preciso depois disso, mas vai ser muito fácil corrigir, vai ser só fazer dois sincronismos, sendo que o segundo para fins de calibração, e este com pelo menos 1 semana de diferença, e ai vai estar de novo tinindo.
  8. Vou criar umas rotinas em C (rotina, porque ainda não sou capaz de criar uma biblioteca em C) para fazer a calibração semiautomática do DS3231 (a versão com EEPROM, mas não é muito difícil uma rotina mais genérica). Fiz as contas e , com uma semana de intervalo, é o suficiente para, com a precisão obtida com servidores NTP, numa rede de Internet doméstica por cabo ou rede telefônica cabeada (pelo 3G/4G já complica um pouco mais), obter uma precisão necessária para poder calibrar com +/-0,1ppm usando apenas a referência de tempo dos servidores NTP (do Brasil de preferência), que é o máximo possível com o registrador de deriva térmica do DS3231. Com essa minha rotina não vai ser mais necessário um frequencímetro de muito alta precisão, apenas uma Internet por cabo ou via rede telefônica cabeada, para fazer a calibração dos DS3231 e fazer que a hora deles fique ainda mais precisa. Nos meus testes o erro (incerteza da hora obtida pela Internet) na minha rede com servidores NTP brasileiros foi de +/-3 milissegundos com o ESP8266 (fiz a minha própria rotina para ler a hora dos servidores NTP com 32bits para os segundos e 32bits para a fração, que eu arredondei para 1000000 de microssegundos). Fazendo 100 leituras por segundo do DS3231 dá para obter menos de 0,01 segundo de desvio máximo entre a hora no DS3231 e a hora lida pelo ESP8266, procurando a transição do segundo no DS3231 (seria muito bom se ele tivesse a hora com centésimo de segundo ou melhor, facilitaria bastante o meu trabalho). Com uma semana de intervalo já é possível calibrar com erro melhor que 0,1 ppm, 3600*24*7*0,1E-6 = 0,06 segundos de erro, o que já permitiria acertar a hora e corrigir automaticamente o registrador de deriva térmica (-0,2ppm para incremento de 1 e +0,2ppm para o decremento de 1). Para isso, armazenaria a hora (valor em segundos em relação a 01/01/1970 ou ustamp) do último acerto de hora pelo NTP, e se este intervalo (no comando para acertar a hora/calibrar o registrador) for maior que 1 semana, a rotina calcularia a diferença e o novo valor para o registrador, atualizaria automaticamente o registrador de deriva, lançaria o valor do registrador e a hora no DS3231 e também na EEPROM em ustamp e valor do registrador de deriva. As minhas baterias LIR2032 chegaram, mas descobri que deixei os meus DS3231 (com EEPROM) no trabalho, foi meio frustrante quando descobri. Mas neste próximo feriado vou já começar a trabalhar na rotina de calibração automática, que vai ficar ao alcance de todos (quem tem uma Internet aceitável, mas quem não tem é só aumentar o intervalo). Não sei quanto tempo vou demorar para concluir essas rotinas, se eu tivesse tempo totalmente livre acho que em menos de 1 dia, mas no meu caso isso deve demorar bem mais.
  9. @ViniciusKruz O DS3231 novo é muito preciso, mas depois do primeiro ano ele perde um pouco de precisão, e vai derivando aos poucos, mas mexendo no registrador que corrige a deriva térmica você consegue até mais precisão do que novo. Só que se a bateria descarregar com ele fora da alimentação este registrador para o default que é 0 como padrão de fábrica. É uma boa ideia colocar o valor deste registrador (depois de tirar do padrão) na EEPROM dele.
  10. Provavelmente este seu modem funciona com um adaptador de 110V para 12DC (ou outra tensão), neste seu caso eu ao invés de um nobreak + um transformador 220V para 110 eu usaria um carregador automático de bateria com chaveamento para usar uma bateria de 12V de 7AH (fonte para CCTV). Eu uso algo parecido para alimentar roteador WIFI + mídia player (com conversor 12V para 5V) e ainda tenho potência de sobra para bem mais coisas (a minha fonte/carregador é de 10A). Veja no eBay uma fonte igual a minha. Esta fonte funciona como um nobreak CC, e o chaveamento dela é suave, não é por relé, gostei muito dela. http://www.ebay.com/itm/12V-10A-Sw-Power-Supply-W-Battery-backup-CCTV-Security-/331860436497?hash=item4d446c6611:g:DyAAAOSwuR5XPqrS
  11. Fiz as modificações sugeridas, pelo ACT funcionou para mudar o valor das portas lógicas, mas pelo javascript ainda não. Acho que além de C necessito estudar bastante javascript, está sendo muito necessário. Mandei a nova versão em anexo. Fiz umas melhorias na sua rotina de gravação e leitura na EEPROM virtual, retirei as muitas limpezas na EEPROM desnecessárias, cheguei a conclusão que não precisava nada disso. Tive uns problemas com formatação de Strings, dei umas cabeçadas até entender o que estava ocorrendo, quando consegui entender a rotina ficou enxuta e sem gastar desnecessariamente apagando o que não precisa, eu apenas escrevo os Strings (incluindo o byte extra com "\0"), pois toda String tem um byte a mais com valor 0 ("\0") e isto é o marcador de fim de String, é só ler depois da EEPROM procurando este marcador final. Encontrei um livro ótimo de C em inglês (já tinha a versão dele em português em PDF, "C Completo e Total"), "C# The Complete Reference" de Herbet Schildt, mas na versão em inglês o PDF está em formato texto, que é muito mais fácil para pesquisar (pesquisa em texto é sempre bem mais fácil) e em inglês me ajuda a me desenvolver mais na língua (a leitura e compreensão fica mais demorada, mas me ajuda bastante no aprendizado). Teste.zip
  12. @ViniciusKruz Não preciso fazer isto para que funcione (a EEPROM virtual), neste caso só estou gravando mais uma vez inutilmente, as variáveis estão sendo lidas sem precisar esta operação. Estou cometendo algum erro na formatação do formulário HTML que está fazendo com que o javascript não funcione. Uns 15 anos sem mexer em javascript e html estão realmente pesado muito. Estou precisando de um editor HTML para me ajudar a tirar o ferrugem.
  13. @ViniciusKruz Não vejo nenhuma reação do javascript, nenhum sinal de vida, estou bastante enferrujando e certamente estou cometendo algum erro, mas não tenho nenhum ideia de qual seja ????
  14. @ViniciusKruz Teste.zip
  15. No meu caso eu comprei de uma empresa nos EUA, pedindo para entregar na casa de um parente em NY, e depois eu acabei recebendo ele no Brasil pelos Correios. O que acabou sendo bem interessante.
  16. Agora eu não sei mais o que pode estar acontecendo (???????????), só talvez o @aphawk possa te ajudar nesse caso, isto se ele souber o que pode ser.
  17. Parece que o seu ESP8266 não entrou no modo de programação, você apertou o botão de flash (ao ligar ou resetar ou um pouco antes disso) ? O meu ESP-01 eu tenho que ligar o pino de flash no GND antes de ligar ou resetar para conseguir programar.
  18. Tem opção em português.
  19. O processo normal estes leds piscam, no meu caso quem pisca é o led azul da placa no ESP8266 (a minha serial não tem isso). E na transferência tem uma barra horizontal que vai crescendo sinalizando a evolução da transferência. Se esta barra não se move tem alguma coisa errada, mas não sei o que pode ser.
  20. É essa que eu uso, não precisa se preocupar com os MAC, ele vai informar para você. Você precisa saber a porta COM (mas acho que isto você já sabe), o nome do arquivo .bin (Config) e o tamanho do flash (não sei para que ???), no Advanced você define o Baudrate em 230400, Flash size no tamanho do seu Flash (varia de 4MBytes até 512KBytes), não precisa mexer em mais nada.
  21. Eu transfiro a 230kbps, mas 115kbps também é tranquilo, a 9600 vai realmente demorar uma eternidade.
  22. @ViniciusKruz A noite eu passo isso, vou mandar inteiro anexado como ZIP, acho que fica extenso demais para aparecer aqui como um post normal. adicionado 1 minuto depois Das peças que comprei está incluso um RTC desse modelo. Chegando, eu já devo fazer a migração tanto para o 3231 quanto para a eeprom física. E não se esqueça da bateria LIC2032.
  23. @_xyko_ Não é tão demora assim, a minha dura menos de 5 minutos (nunca cronometrei, mas acho que é menos ainda, algo como 2 minutos), algo deu errado. Como está a sua configuração do flasher ? Você está atualizando usando que soft ? Eu uso o que veio com o pacote do LuaLoader, que para mim é o mais tranquilo e usa interface gráfica.
  24. @aphawk Também tenho um destes igual ao seu (Rigol DS1054Z), ele tem um ótimo custo benefício. E imaginar que no passado recente um osciloscópio (analógico) era coisa para muito poucos e hoje tem uns bons digitais por preço acessível.
  25. @ViniciusKruz Ainda estou estudando o seu programa (devagar pois tenho pouco tempo disponível) e não estou conseguindo acionar os relés (no meu caso substitui o relé pelo led do Nodemcu V0.9). Você deu segmento neste seu programa ? Estou aprendendo muita coisa com ele, mas ele está incompleto e ainda tem algumas coisas que eu não entendo direito. No que eu já fiz nele, foi colocar dois bytes de consistência da EEPROM para garantir que os valores lá estão consistentes, caso contrario ignoro e gravo novos por cima. Isto deve ficar interessante com um DS3231 com uma EEPROM real, mas ainda tem muita coisa que eu não sei fazer. Toda vez que eu meto as caras entro pela noite a dentro, pois sempre tem alguma coisa que dá errado, e não estou com muito tempo disponível para me dedicar ao ESP8266. Acho que só vou meter as caras de verdade lá pelo mês de dezembro. Eu coloquei dois botões para mudar o estado de duas caixas de texto e usar para controlar duas portas lógicas, mas não deu certo e a coisa não foi para frente, tentei de tudo, inclusive javascript para mudar o estado das caixas de texto, mas nada funcionou (no passado eu fazia miséria com javascript, mas enferrujei totalmente, se tivesse conseguido trocar os valores destas duas caixas de texto acho que teria conseguido alterar as portas lógicas). Ainda não consigo entender direito como comunicar o ESP8266 com a Internet usando o Arduino IDE. E ainda dou cabeças com os tipos String e char no C.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!