Ir ao conteúdo
  • Cadastre-se

Aislan Silva Costa

Membro Pleno
  • Posts

    76
  • Cadastrado em

  • Última visita

Tudo que Aislan Silva Costa postou

  1. Boas a Todos! Estou a tentar usar um amplificador de áudio como comparador de tensão. Alguns modelos que testei retirei de sucata, como o tda2822m, d2822m, 4580. O circuito que usei para testes esta anexado. No proteus, como não achei o tda2822m usei o tda2030. O circuito funciona na simulação, mas na pratica usando os amplificadores citados não funciona. Quando a tensão no pino "não-inversora"(Vctrl) é maior que a tensão do pino "inversora"(Vref), ocorre o esperado e a saída é alta. Porém, quando a Vref > Vctrl a saída é alta em vez de baixa. Esses amplificadores foram retirados de caixinhas de som de pc, a primeira pergunta é, esses amplificadores podem ser usados como comparadores de tensão? Se não, ok, mas se sim, todos que testei estou enfrentando o mesmo problema, há algum componente a mais para o circuito operar como o esperado ou tive o azar de todos estarem queimados? Fico no aguardo...
  2. @Mestre88 Como vai? Obrigado pelo contato. Creio que a queima do componente veio por curto circuito, já que ele estava ligado quando parou de funcionar. Coloquei o diodo d4 depois apenas para garantir e não queimar o segundo 555. Já corrigi o diodo d3 e mudei o resistor. Sobre o opto acoplador, como não achei o que estou usando no proteus(PC123) coloquei o 4n25 para exemplificar, mas o pc123 possui apenas coletor e emissor, mas já fiz a ligação recomendada. Agora, com esses ajustes, a proteção contra a inversão de polaridade, o circuito está mais protegido? Estou usando apenas baterias para evitar qualquer tipo de interferência na alimentação. Há algum tipo de circuito extra para proteger o ci 555, ou qualquer outro ci ou microcontrolador de curto-circuito?
  3. Boas a todos! Montei um pequeno circuito para controlar um motor dc de impressora usando pwm com o ci 555 como na imagem em anexo. Tudo funciona bem. No primeiro circuito montado, a alimentação do ci era proveniente de um carregador de celular de 5v e 1A. No primeiro circuito montei de maneira improvisada, apenas fazendo as ligações dos componentes, creio eu, que em algum momento na bagunça dos fios houve um curto circuito que queimou o ci 555. Testei todos os outros componentes e eles estão funcionando. Montei então um segundo circuito do mesmo modo com novos componentes e um novo 555, mas desta vez organizado e com um soquete para o 555. Me parece que este CI e bem sensível, ate mesmo a inversão de polaridade, desta vez coloquei um diodo para não correr nenhum risco e, tanto a alimentação do ci como a do motor e feita por baterias. Testei e funcionou corretamente. Neste mesmo circuito, quando coloquei o ci que possivelmente estava queimado, constatei que estava mesmo pelo fato de girar o potenciômetro e não haver mudança na carga(fica no máximo assim que liga). Como só tinha disponível dois ci's, estou com receio que algum erro faça o ci queimar novamente, estando a eletrônica mais perto fica a 100km. Queria por algum circuito extra de proteção para o ci, em pesquisas vi alguns circuitos para proteção de fontes usando src, mosfet, reles, tenho esses componentes em placas de sucatas, até da pra montar, mas não entendi se sera eficaz para proteção do 555. Haveria algum circuito mais especifico para proteção do ci?
  4. Olá Novamente, @Isadora Ferraz, @Tito Fisher e @Sérgio Lembo, como vão? Não quis mais abrir tópicos pra não tumultuar o fórum, então peço ajuda as universitários por aqui mesmo. @Isadora Ferraz, já estou usando chaves ópticas para obter a rotação e consequentemente ligar o solenoide usando transistores na configuração darlington. Entre o solenoide e a chave óptica estou usando um comparador de tensão 4580D. No coletor do foto-transistor, ligo na entrada "A", não inversora, a tensão ali, com o foto-transistor polarizado e cerca de 2v, e quando em corte, 0.17v. Na entrada inversora, ligo uma tensão de referencia usando divisor de tensão, um com 3k e outro com 1k, o que me garante tensão de 0.97 volts(vcc em 3.64v). "O problema que ocorre e que na saída do comparador, quando foto transistor em corte(0.17v) a tensão na saída fica com 3.33v, e com foto transistor polarizado a saída fica em 1.44v." Antes desse comparador, eu estava usando um comparador de tensão lm358 com esta mesma ligação, e usava um resistor de 100k entre a saída e a entrada não inversora, tinha o efeito desejado, foto-transistor em corte, saída do comparador próximo a 0v, quando polarizado saída em torno de 3v. Só que, de repente os valores da saída começaram a dar errado como no caso do 4580D. Como eu não tinha feito nenhuma modificação, suspeitei que talvez o comparador tivesse queimado, então peguei esse 4580D, porém, acho que ele não esta com defeito e sim alguma ligação que fiz que esta errada, peço ajuda para esclarecer duvida. Estou colocando um esquemático que fiz no proteus. Com um resistor de 10k entre a entrada inversora e a saída do comparador, o efeito desejado acontece, porém na pratica não funciona. obs2 Como não tinha chave óptica, usei como exemplo um foto-acoplador, a unica diferença desse esquemático com o real e o foto-acoplador. Valores de resistores são os mesmo, o esquemático funciona, mas o pratico não. "Foto-Transistor Polarizado" "Em Corte"
  5. Como vai @Tito Fisher, obrigado pelo contato! Você teria os circuitos que você fez?
  6. Oi @Isadora Ferraz, sempre você! Onde esta o erro? kkk. Já comecei a pesquisar sobre o 555 e aonde comprar, já que onde moro não há eletrônica. Pelo que vi por alto, e disso mesmo que estou precisando. Olá @Sérgio Lembo, como vai? Obrigado pelo dicas! Eu já fiz um circuito de testes usando transistor, vou usar as dicas que me passou e tentarei encontrar um transistor que tenha as características mais próximas das recomendadas. Eu acho, que a bobina que construí tem uma boa parte mecânica. Primeiro, que a mola de retorno e boa, me garante uma boa vedação do orifício do glichê, no topo, quase próximo ao embolo movel uso um ima de neodimio que me garante uma maior intensidade do campo magnético. Nas minhas pesquisas sobre transistores, eu já retirei alguns de umas sucatas que tinha aqui, e comecei a fazer testes. O melhor resultado que consegui, fui com este: http://www.datasheetq.com/view.jsp?fac=Hwdz&pn=D4206 Retirei-o de uma fonte de computador. Em testes de bancada, consegui um pequeno ganho, ou seja, já consigo oscilar o solenoide em tempo hábil para fazer a mistura do ar e combustível, porém não na taxa recomendada que me garantiria uma detonação adequada. Enquanto não tenho em mais um ci 555 para testes, farei mais testes com transistores que tenho em mãos para tentar conseguir a oscilação desejada. O circuito é esse: Como não usei ferramentas adequadas, esta meio feio, mas acho que da pra entender. A fonte de alimentação e uma bateria de celular de 3.85v, 2000mAh. Paralelo ao solenoide há um diodo 1n4007, Na base há um resistor de 4.7 ohms.
  7. Boas a todos! No meu último tópico "como construir solenóide caseiros" obtive grande ajuda dos usuários para construir um solenóide caseiros, que no meu ver, ficou bom. No mesmo tópico, eu tinha citado, procurando uma maneira de oscilar este solenóide numa frequência de 15 vezes por segundo. Para obter maior abrangência dos participantes do fórum, abrir este outro tópico. Este solenóide, está acoplado a um carburador fechando o gliche de combustível, que por sua vez está acoplado a uma bombinha de ar. Fiz um sistema de teste no qual, quando o eixo da bomba está na eminência de fazer a sucção(mistura) o contato do solenóide fecha e energiza o solenóide, que abre o orifício do gliche e permite a passagem do combustível. Numa frequência de por exemplo, 3 a 5 vezes por segundo, funciona bem. Porém, com a rotação mínima do motor para que haja uma mistura eficiente, o solenóide deverá abrir no mínimo 15 vezes por segundo. Então presico de um circuito no qual seja possível acionar esse solenóide nesta frequência, sendo que, ele deverá se contrair totalmente. Medi a resistência da bobina, no multímetro, a leitura ficou em 0.01ohms. Creio que, segundo a equação de ohms, a corrente que passa pelo solenóide seja: V=R*I, onde v: 3.85, r= 0,01, I= 385mA. Então, para a contração total da mola, 0.385A e o suficiente. Porém, quando ligo a bombinha de ar, como a rotação do motor e alta, não há tempo suficiente para que o solenóide seja energizado. Então, preciso de um circuito que faca com que o solenóide seja energizado a uma taxa de 15 vezes por segundo, como eu faria isso? Como não entendo muito de eletrônica, no meu ver, como a rotação do motor e alta (comparado ao tempo de abertura do solenóide), não a tempo de passar corrente e tensão suficiente, o que faz com que o solenóide não abra(isso e claro, porque, em baixas rotações(3 a 5 por segundo), o solenóide se abre corretamente. Então, no meu ver, o circuito necessita entregar o mesmo valor de tensão e corrente mais rapidamente sem cair os valores, se for isso mesmo, com que circuito consigo fazer isto?
  8. Boa tarde @Isadora Ferraz, como vai? Obrigado pelo contato! Sim, antes de tentar fazer solenóides caseiros, eu já tinha pesquisado pronto, mas pelo preço unitário, não me empolguei muito não. Porém, pelo resultado que estou tendo ultimamente, por exemplo, tem uma micro solenóides de 12v com curso de eixo de 10mm, por cerca de 40 reais, atualmente, o melhor solenóide que fiz, e ligado com 3v e com curso do eixo de 5mm, que ja se encaixa nas minhas necessidades. Entretanto, será que esses solenóide prontos teriam uma velocidade de operação de forma que eu necessitasse de nenhum circuito adicional? Sobre as pontes h, já conheço seu funcionamento, já estou pesquisando alguns circuitos para fazer e testar, mas voltando ao circuito de carga de capacitor, e se eu usasse aliado ao circuito de aumento da tensão, também um circuito de transistores Darlington para aumentar o ganho da corrente? O que acha?
  9. Como vai @Isadora Ferraz? Então, pesquisei sobre a bobina com núcleo de ferro, se entendi bem, eu fiz uns protótipos aqui. Num êmbolo desses de seringa fechado, no topo coloquei um tampão de metal rodeado de imãs(retirei do alto falante). No inteiro um eletroímã, quando energizado, ele tende a ir de encontro ao imã, uma mola faz ele voltar a posição inicial. Por questão de tamanho, continuo a usar os primeiros solenóide que fiz, com algumas modificações e agora usando bateria de celular(3.85v , 2.000mAh), e um ímã no topo, como recomendado, ele passou dos míseros 1mm para a contração total da mola, cerca de 5mm. Pra entender o que preciso agora, antes explico a função do solenóide. Uma bombinha de ar faz a função de aspirar o ar(como num motor aspirado) , na entrada existe um carburador que faz a mistura ar/combustível. Sem o solenóide, ocorre a mistura e a detonação na câmara de combustão corretamente porém, como a passagem de combustível fica sempre aberta, após alguns segundos a cuba da bomba enche de combustivel. Agora, com o solenóide,o combustível sai através dum gliche que está fechado pelo solenóide. Quando energizado, o solenóide abre e permite a passagem do combustível. A cada volta do motor da bomba, meia volta e para sucção do ar(e combustível) e meia volta para a exaustão da mistura.O solenóide teria que abrir na meia volta correspondente a sucção para fazer a mistura, o que, seria umas 15 vezes por segundo. Fiz um sistema bem grotesto,que quando o eixo do motor está na eminente posição de iniciar a sucção, faz contato com um fio de cobre rígido que energiza o solenóide. O problema e que, como a rotação do motor e alta, não dá tempo da abertura correta do solenóide. Há algo que eu possa fazer quanto a isso. Ou seja, o solenóide se abrir mais rápido? Como sou apenas entusiasta em eletrônica(estou mais pro ramo da programação) fica difícil até fazer uma pesquisar, por não saber como pesquisar. Mas, avaliando a situação, meu problema se resolveria se o solenóide se contradisse corretamente muitas vezes por segundo. Como e a tensão que manda na intensidade do campo magnético, para ter o efeito desejado, necessitaria uma grande corrente(assim diminuiria o tempo de acionamento do solenóide) várias vezes por segundo. Porém isso faria um aumentarão de potência, calor, consequentemente queima da bobina. Porém para efeitos de teste, vi um artigo no Newton Braga, sobre canhão magnético: http://www.newtoncbraga.com.br/index.php/projetos-educacionais/7655-canhao-por-descarga-capacitiva-mec13 Acontece que, uma fonte de 36v carrega um capacitor com auta capacitância e tensão(50v, 1000uF) , após a carga ele aciona um solenóide. Por ter uma resistência baixa, o artigo diz que, com 40v, numa resistência de 0.04 ohms, a corrente que passa pelo solenóide e da ordem de 100 amperes(I=V.R), mas isso numa fração de segundos. Tenho aqui, aquelas raquetes de mata mosquito, que com 3v de tensão de entrada, através do circuito de aumento e triplificacao da tensão, fornece 3000v na saída. Dito isso, poderia adaptar as minha necessidade, um circuito que aumenta a tensão, como o da raquetes(mas com valores menores apropriados ao que se quer) carregar o capacitor e então efetuar a descarga no solenóide? Se repetindo a uma taxa de mais ou menos 15 vezes por segundo?
  10. Como vai @Isadora Ferraz? Primeiramente obrigado! Então, coloquei um pequeno imã desses de alto falante no topo do solenóide. Consegui um novo deslocamento de 2mm suficiente para meu trabalho. Só que agora, consegui um núcleo de ferro e fiz um solenoide usando ele, o problema e que com esse núcleo de ferro, virou um eletroímã, não há deslocamento do eixo no interior do núcleo, apenas o mantém fixo nas paredes do núcleo. Com o de plástico, isso não acontece obviamente porque o plástico não conduz corrente e nem aumenta a intensidade do campo magnético, mas no solenóide com o núcleo de ferro, como contorno este problema?
  11. Obrigado pela ajuda de todos! Em anexo está o solenóide(que eu considero o melhor até agora) que fiz. O comprimento da bobina e de cerca de 4,5 cm, o núcleo e de tubo de caneta(não consegui ainda um núcleo de ferro para testar, testei com alumínio, ficou pior do que o de plástico) com cerca de 0,5 cm de diamentro. O fio usado é o 27awg. Não importa a tensão, 6, 9, 15v(esquenta muito) o deslocamento da mola e o mesmo, cerca de 1mm. Eu queria aumentar esse deslocamento para 2mm, porém, aumentar a tensão não adianta, eu experimentei ligar 4 pilhas em paralelo para aumentar a corrente, junto de mais 4 pilhas em série, porém o deslocamento em vez de aumentar, faz e diminuir. O objetivo desse solenóide e para quando em repouso tampar um orifício aonde sai um combustível para um carburador, e quando energizar liberar a passagem.
  12. Como vai @Tito Fisher? Então, eu já tinha consultado o site do Braga, deu pra clarear as ideias, mas, como eu disse no post, ainda não entendi , com base nas equações de intensidade do campo magnético e na equação da indutância como elas se relacionam. Por que, na equação do campo magnético, quanto maior a corrente, maior a intensidade, e na indutância, quanto menor a corrente, maior indutancia, entao fica a dúvida, quanto maior a corrente, maior a força do solenóide?
  13. Boa a todos! Na minha ultima postagem aqui do fórum obtive grande ajuda por parte dos usuários, então volto para buscar mais ajuda. Estou necessitando de uma válvula solenoide, do tipo dessa anexada aqui. Consiste numa bobina, aonde um fio esmaltado e enrolado no núcleo, no interior do núcleo existe um eixo que e atraído por o campo magnético criado quando a tensão na bobina, a mola tem por função retornar o eixo na posição inicial. Pois bem, para economizar resolvi tentar fazer alguns destes solenoide aqui em casa, eles funcionam, porém, em pesquisas vi que, numa bobina, segundo a equação do campo magnético, quanto maior a corrente, maior a intensidade do campo magnetico: B=μ.N.i/l n: numero de espiras, l = comprimento da bobina, i = corrente, fonte: https://educacao.uol.com.br/disciplinas/fisica/campo-magnetico---espira-e-solenoide-direcao-sentido-e-vetor.htm Nessa equação, quanto mais espiras(N) em um menor comprimento da bobina(L) e quanto maior a corrente, maior a intensidade do campo magnetico. Temos também a indutância: A capacidade de uma bobina de (N) espiras em criar o fluxo com determinada corrente(i) que percorre o circuito é denominada Indutância (símbolo L) medida em "henry" cujo símbolo é H. fonte: https://pt.wikipedia.org/wiki/Indutância Já na indutância, quanto menor a corrente, maior a indutância. Minha primeira pergunta é: Ainda não consegui entender como campo magnético e indutância se relacionam a uma bobina, gostaria que alguém com mais experiencia me explicasse. Os solenoides que fiz: 1º com fio 25awg, com 5cm de comprimento, núcleo tubo de caneta, 2 camadas de 50 espiras 2º com fio 25awg, com 5cm de comprimento, núcleo tubo de caneta, 6 camadas de 50 espiras voltas. 3º com fio 29awg, 5cm de comprimento, núcleo tubo de caneta, 6 camadas de 80 espiras Quando aumentei o numero de camadas com o fio 25awg(2º) consegui maior deslocamento do eixo, porém quando usei o fio 29awg(3º) com mais espiras ainda, teve o mesmo efeito da 2º. Experimente tensões diferentes, funcionam do mesmo modo com 6v(4 pilhas AAA), 9v(6 pilhas AAA) ou mesmo 15v(10 pilhas AAA) em serie. Sambem fiz teste nos quais, usei 4 pilhas AAA em series, com 6v, e mais 4 pilhas em paralelo a ligação em serie, para fins de aumentar a corrente. porém o resultado e o mesmo com ou sem a ligação de pilhas em paralelo. Ainda não entendi se na construção de um solenoide e importante maior corrente ou maior tensão, fico no aguardo por ajuda dos demais.
  14. Boas a todos! Em minhas pesquisas, encontrei esse vídeo, aonde o André do canal Eletrônica Já, faz engenharia reversa justamente numa placa de raquete mata mosquito. E bem didático e ele ensina bem o funcionamento da mesma. Na saída do circuito triplicador de tensão ele solda duas pontas que afastadas uma da outra gera a faísca, o triplicador de tensão , como diz triplica a tensão de 1kv para 3kv o que faz com que seja possível gerar a faísca. Minha dúvida agora e se eu poderia em ver de soldar diretamente pontas na placa, soldar dois fios para que se, soldar os fios em ponteiras que fariam papel de eletrodos, Posso fazer isso? Fonte do vídeo:
  15. @Mestre88 Sobre o uso do flyback, moro à 200 metros de uma reciclagem, encontro muitos componentes eletrônicos, inclusive flybacks em tvs antigas, vi um vídeo bem didático e artesanal da construção de um circuito usando ele. O grande problema é que necessitam entre 6 a 12 v de alimentação, fora que ocupariam um espaço maior que até o próprio canhão. A resistência já foi descartada como opção, restou, ou comprar uma mini-bobina no mercado livre, ou construir um gerador usando o transformador. @Ricardo S Ferreira citou em: @Tito Fisher disse que: Com essas citações, e com base no que diz o wikipedia: fonte: https://pt.wikipedia.org/wiki/Raquete_elétrica " No interior, existe um pequeno circuito que, a partir de pilhas ou baterias, amplifica a tensão para cerca de 2kV e a envia em forma de pulsos contínuos para a tela central[...]" "A descarga de Corona produzido pela raquete (raiozinhos) pode atingir 1.2mm de comprimento." Deduzo que o trafo da raquete consegue sim produzir uma faísca(vemos ela visualmente), só que por falta de conhecimento, não sei se consegue pelo fato da potência do trafo possibilitar isso, ou o esquema elétrico como um todo, como estou sem ferramentas, ainda não pude testar. Mas generalizando, faço uma pergunta de um total leigo no assunto. Colocando tensão de 3v na entrada do trafo da raquete, na saída consigo tensão suficiente para gerar uma faísca de 1mm? Se a resposta for nao, e depender ainda de um circuito com mais componentes, quanto ao circuito que apresentei na abertura do tópico(aonde o trafo possui saida de 350v), substituir o trafo por um mais potente, resultando numa de 3kv não conseguiria a tão desejada faísca de 1mm? Fico no aguardo...
  16. Já agradeço a os demais participantes pela atenção! Sim, é algo prático, e em miniatura, trabalhando com tensões de entrada entre 3 a 9 volts! Tenho aqui na bancada várias dessas placas eletrônicas de raquete de mata-mosquito! Como ainda estou levantando informações para esse projeto, e meu ferro de solda queimou, ainda não testei sei se essas plaquinhas estão funcionando. @Mestre88 como usaria esse trafo para gerar a faísca? Ou também, como usaria a placa do mata-mosquito para gerar a faísca? Torno a perguntar, se usando uma resistência que aquece o gás eu não conseguiria a detonação?
  17. Obrigado novamente pelas respostas! Se eu optasse por usar numa situação, aquele ascedendor de isqueiro do tipo pizoeletrico, qual maneira eu usaria para acionar esse botão com eletricidade? Usaria um motor(servo, motor de passo) com força suficiente para aciona-lo? Se eu usasse uma resistência que inflamasse o gás por temperatura, funcionária? Gás de isqueiro no caso. E quanto as mini bobinas vendidas no mercado livre, como se fabrica uma caseira? Exemplo: https://produto.mercadolivre.com.br/MLB-1062695538-bobina-400kv-gerador-de-alta-tenso-tesla-_JM
  18. Obrigado pelo interesse e a resposta de todos. Quero algo em miniatura, então precisa ser prático e pequeno, não pode ser por efeito pizoeletrico, apenas usando eletricidade, como e algo pequeno não quero usar bobinas. Vi umas bobinas que geram a faísca no mercado livre, mas custam em torno de 28 reais, porém quero eu mesmo fabrica-los já que farei no mínimo 5 canhões, do projeto do link tenho a maioria dos componentes , se falta compro no mercado livre (na minha cidade não tem eletrônica) e fica bem em conta, só preciso saber se o projeto do link gera a faísca pelos eletrodos, entrando 1,5 volts, 400v é capaz de gerar a faísca? Pelo menos que seja capaz de inflamar o gás. Outra pergunta séria que, ao invés de faísca, colocasse uma resistência para inflamar o gás daria certo? Será que a resistência suportaria a explosão da câmara? obs: vi um projeto no YouTube aonde usava um ascedendor de isqueiro elétrico como ignição de gás, assim o canhão de corpo de cano PVC 3/4 atiraria um projetil impulsionado pela explosão de gás(no caso usou o próprio gás do isqueiro), só quero usar no lugar do ignitor, um totalmente elétrico acionado por um pushbutton!
  19. Boas a todos! Quero construir um mini canhão balístico usando gás no lugar da pólvora, quero fazer um mini ignitor elétrico gerando faísca para inflamar o gás na câmara de explosão do canhão, encontrei esse circuito elétrico, no caso e um MAT,que gera a partir de 1.5v correntes de 400v, problema e que não sei se o tal aparelho produz faíscas entre os eletrodos ou seria necessário encostar em algum objeto para passar a corrente. Alguém faz essa análise pra mim? De todo modo, presico de um gerador de faíscas parecido com aqueles de isqueiro elétrico, porém aqueles usam o efeito pizoeletrico sendo necessário pressão, no caso, para meu projeto necessito que seja apenas usando eletricidade, alguém tem um circuito de um mini gerador de faíscas de baixo custo e fácil fabricação? Link do mini gerador: http://blog.novaeletronica.com.br/mini-gerador-de-alta-tensão-usando-pilha-de-15-volts-maquina-de-choque/
  20. Boas a todos! Estou com um probleminha que não consigo resolver e busco ajuda dos membros. No meu código, leio o conteúdo de um arquivo e guardo em uma string para uso no código, no loop principal, recebo esta string e repasso para a chamada da função QuebrarStrungCompleta, para quebrar separar a string por "\n" e guardar em uma matriz de strings. Depois repassa cada linha dessa matriz para a chamada da função QuebrarStruct, que ira guardar numa struct a linha separada pelos delimitadores ",", vou fornecer o exemplo do arquivos users.txt, quem for testar, pode ver que até tudo funciona bem. O problema e que agora quero ordenar essa matriz de structs, nas pesquisas não achei muitos exemplos e procuro ajuda dos mais experientes. O que tentei foi o seguinte: Crio a função de comparação que e repasssada para a chamada da função qsort: int comparar(const void * a, const void * b) { const Cliente * ia = (Cliente *) a; const Cliente * ib = (Cliente *) b; return strcmp(ia->cpf, ib->cpf); } Depois chama a função qsort, passo como base o ponteiro para minha matriz de structs, e também a função comparar: qsort(&cliente, 4, sizeof(Cliente), comparar); printf("As struct's foram ordenadas\n"); for (int i = 0; i < 4; i++) { printf("%s\n", cliente[i]->cpf); } Tudo compila, o código roda após a chamada da função qsort, porém da erro ao printar, eu Creio que o erro seja porque, qsort espera uma matriz do tipo; exemplo: Cliente * cliente, e minha matriz e do tipo Cliente **cliente. #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Cliente { char cpf[13]; char realName[60]; char sexo[11]; char key[15]; char data[11]; }Cliente; char **QuebrarStringCompleta(char *string) { char **linha; char *token; int tamVetor = 1; int i = 0; linha = malloc(sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(string, "\n"); strcpy(linha[i], token); printf("primeira linha e: %s\n", linha[i]); i++; tamVetor++; while (token != NULL) { linha = realloc(linha, sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(NULL, "\n"); if (token == NULL) { printf("token e nulo: %s, break\n", token); break; } else { strcpy(linha[i], token); i++; tamVetor++; } } return linha; } Cliente* QuebrarStruct( char *string) { Cliente *cliente; char *token; cliente = malloc(sizeof(Cliente)); token = strtok(string,","); strcpy(cliente->cpf, token); token = strtok(NULL,","); strcpy(cliente->realName, token); token = strtok(NULL,","); strcpy(cliente->sexo, token); token = strtok(NULL,","); strcpy(cliente->data, token); return cliente; } char * ObterDados(int flag) { FILE *users; char url[] = "/bd/users/users/users.txt"; if (flag == 1) { users = fopen(url, "r"); } char *string; char ch; int i = 0; int tamVetor = 0; string = malloc(sizeof (char * ) * tamVetor); if (users == NULL) { printf("Erro na abertura do arquivo!"); return 1; } else { while ((ch = fgetc(users)) != EOF) { if (ch == '#') { while ((ch = fgetc(users)) != EOF) { string[i] = ch; i++; tamVetor++; string = realloc(string, sizeof(char *) * tamVetor); } } } } return string; } int comparar(const void * a, const void * b) { const Cliente * ia = (Cliente *) a; const Cliente * ib = (Cliente *) b; return strcmp(ia->cpf, ib->cpf); } int main () { char *string; char **result; string = ObterDados(1); printf("String e %s: ", string); result = QuebrarStringCompleta(string); printf("As linhas separadas sao: "); for(int i = 0; i < 5 ; i++) { if(result[i] == NULL) break; printf("%s\n", result[i]); } Cliente **cliente; cliente= malloc(sizeof(Cliente)*5); if (cliente == NULL) { printf ("Socorro! malloc devolveu NULL!\n"); exit (EXIT_FAILURE); } for (int i = 0; i < 4; i++) { cliente[i] = QuebrarStruct(result[i]); printf("Dados retornados e, usuario: %s, nome real: %s, sexo: %s, data: %s\n", cliente[i]->cpf,cliente[i]->realName, cliente[i]->sexo, cliente[i]->data); } qsort(&cliente, 4, sizeof(Cliente), comparar); printf("As struct's foram ordenadas\n"); for (int i = 0; i < 4; i++) { printf("%s\n", cliente[i]->cpf); } } Aguardo a ajuda de todos! users.txt
  21. Boas a todos! Tenho esse código porém não consigo identificar o erro que esta acontecendo (falha de segmentação) creio que seja dentro do while que verifica se o token e diferente de nulo. Alguém pode dar uma olhada e me ajudar? #include<stdio.h> #include<stdlib.h> #include<string.h> #include "/opt/azulaoServer/headers/urls.h" typedef struct endereco { char logradouro[30]; char numero[4]; char bairro[20]; char estado[2]; char cidade[30]; char cep[15]; }Endereco; typedef struct Cliente { char cpf[13]; char realName[60]; char sexo[11]; char key[15]; char data[11]; Endereco endereco; }Cliente; char **QuebrarStringCompleta(char *string) { char **linha; char *token; int tamVetor = 1; int i = 0; linha = malloc(sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(string, "\n"); strcpy(linha[i], token); printf("primeira linha e: %s\n", linha[i]); i++; tamVetor++; while (token != NULL) { linha = realloc(linha, sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(NULL, "\n"); strcpy(linha[i], token); printf("linha e: %s\n", linha[i]); i++; tamVetor++; } printf("chegamos antes do return\n"); return linha; } Cliente QuebrarStruct( char *string) { printf("a fincao foi chamda para quebrar a strict\n"); printf("a string aqui e : %s\n", string); Cliente cliente; char *token; token = strtok(string,","); printf("passou telo token, ele e %s\n", token); strcpy(cliente.cpf, token); printf("cliente.cpf e: %s\n", cliente.cpf); token = strtok(NULL,","); printf("passou telo token e: %s\n", token); strcpy(cliente.realName, token); printf("cliente.realName e: %s\n", cliente.realName); token = strtok(NULL,","); printf("passou pelo token de separar o sexo\n"); strcpy(cliente.sexo, token); printf("antes do printf\n"); printf("sexo do cliente e: %s\n", cliente.sexo); /* token = strtok(NULL,","); strcpy(cliente.email, token); */ printf("antes do tokrn, para separar a data\n"); token = strtok(NULL,","); printf("passou pelo token de separar a data\n"); strcpy(cliente.data, token); printf("data do cliente e: %s\n", cliente.data); printf("dados e, usuario: %s, nome real: %s, sexo: %s, data: %s\n", cliente.cpf,cliente.realName, cliente.sexo, cliente.data); return cliente; } char * LerDados(int flag) { Cliente cliente; FILE *users; // cria variável ponteiro para referenciar na // memoria um tipo de arquivo txt, no caso o // user.txt // url q se encontra o arquivo users.txt // # define BUFFER_SIZE 1024 // char buf [ BUFFER_SIZE ] ; // abrindo o arquivo com tipo de abertura w if (flag == 1) { users = fopen(url, "r"); } if (flag == 2) { users = fopen(urlprodutos,"r"); } if (flag == 4) { users = fopen(urladmin,"r"); } if (flag == 5) { users = fopen(urladminsKeys,"r"); } char *auxiliar; // testando se o arquivo foi realmente criado if (users == NULL) { printf("Erro na abertura do arquivo!"); return 1; } else { char *lido; int i = 0; char *string; int tamVetor = 0; int a = 0; char *string2; int tamVetor2 = 0; char *pch; char *token; char comparador[15]; int flag = 1; strcpy(auxiliar,""); string = malloc(sizeof(char **) * tamVetor); string2 = malloc(sizeof(char **) * tamVetor2); while ((lido = fgetc(users)) != EOF) { if (lido == '#') { while ((lido = fgetc(users)) != EOF) { printf("lido tem: %c\n", lido); string[i] = lido; strcat (auxiliar, string); // printf("copiou\n"); tamVetor++; string = realloc(string, sizeof(char *) * tamVetor); } } } printf("String e : %s\n", auxiliar); } return auxiliar; } int main () { char *string; char **result; string = LerDados(1); printf("String e %s: ", string); result = QuebrarStringCompleta(string); //result = matrizExemplo(); printf("as linhas separadas sao: "); for(int i = 0; i < 5; i++) { printf("%s\n", result[i]); } }
  22. Obrigado pelo contato! Então, esse codigo funciona sim, o problema e que estou com uma implementação aqui que da falha de segmentação, pode conferir pra mim aonde e o erro? #include<stdio.h> #include<stdlib.h> #include<string.h> #include "/opt/azulaoServer/headers/urls.h" typedef struct endereco { char logradouro[30]; char numero[4]; char bairro[20]; char estado[2]; char cidade[30]; char cep[15]; }Endereco; typedef struct Cliente { char cpf[13]; char realName[60]; char sexo[11]; char key[15]; char data[11]; Endereco endereco; }Cliente; char **QuebrarStringCompleta(char *string) { char **linha; char *token; int tamVetor = 1; int i = 0; linha = malloc(sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(string, "\n"); strcpy(linha[i], token); printf("primeira linha e: %s\n", linha[i]); i++; tamVetor++; while (token != NULL) { linha = realloc(linha, sizeof(char*)*tamVetor); linha[i] = malloc(sizeof(char**)*150); token = strtok(NULL, "\n"); strcpy(linha[i], token); printf("linha e: %s\n", linha[i]); i++; tamVetor++; } printf("chegamos antes do return\n"); return linha; } Cliente QuebrarStruct( char *string) { printf("a fincao foi chamda para quebrar a strict\n"); printf("a string aqui e : %s\n", string); Cliente cliente; char *token; token = strtok(string,","); printf("passou telo token, ele e %s\n", token); strcpy(cliente.cpf, token); printf("cliente.cpf e: %s\n", cliente.cpf); token = strtok(NULL,","); printf("passou telo token e: %s\n", token); strcpy(cliente.realName, token); printf("cliente.realName e: %s\n", cliente.realName); token = strtok(NULL,","); printf("passou pelo token de separar o sexo\n"); strcpy(cliente.sexo, token); printf("antes do printf\n"); printf("sexo do cliente e: %s\n", cliente.sexo); /* token = strtok(NULL,","); strcpy(cliente.email, token); */ printf("antes do tokrn, para separar a data\n"); token = strtok(NULL,","); printf("passou pelo token de separar a data\n"); strcpy(cliente.data, token); printf("data do cliente e: %s\n", cliente.data); printf("dados e, usuario: %s, nome real: %s, sexo: %s, data: %s\n", cliente.cpf,cliente.realName, cliente.sexo, cliente.data); return cliente; } char * LerDados(int flag) { Cliente cliente; FILE *users; // cria variável ponteiro para referenciar na // memoria um tipo de arquivo txt, no caso o // user.txt // url q se encontra o arquivo users.txt // # define BUFFER_SIZE 1024 // char buf [ BUFFER_SIZE ] ; // abrindo o arquivo com tipo de abertura w if (flag == 1) { users = fopen(url, "r"); } if (flag == 2) { users = fopen(urlprodutos,"r"); } if (flag == 4) { users = fopen(urladmin,"r"); } if (flag == 5) { users = fopen(urladminsKeys,"r"); } char *auxiliar; // testando se o arquivo foi realmente criado if (users == NULL) { printf("Erro na abertura do arquivo!"); return 1; } else { char *lido; int i = 0; char *string; int tamVetor = 0; int a = 0; char *string2; int tamVetor2 = 0; char *pch; char *token; char comparador[15]; int flag = 1; strcpy(auxiliar,""); string = malloc(sizeof(char **) * tamVetor); string2 = malloc(sizeof(char **) * tamVetor2); while ((lido = fgetc(users)) != EOF) { if (lido == '#') { while ((lido = fgetc(users)) != EOF) { printf("lido tem: %c\n", lido); string[i] = lido; strcat (auxiliar, string); // printf("copiou\n"); tamVetor++; string = realloc(string, sizeof(char *) * tamVetor); } } } printf("String e : %s\n", auxiliar); } return auxiliar; } int main () { char *string; char **result; string = LerDados(1); printf("String e %s: ", string); result = QuebrarStringCompleta(string); //result = matrizExemplo(); printf("as linhas separadas sao: "); for(int i = 0; i < 5; i++) { printf("%s\n", result[i]); } }
  23. Numa formulação genérica, tenho uma função que coloca um valor numa matriz de strings; só como exemplo: char **matrizExemplo() { char **vet; char tamVetor = 1; vet = malloc(sizeof(char*)*tamVetor); vet[0] = malloc(sizeof(char*)*10); strcpy(vet[0], "teste"); printf("Dentro da funcao vet[0] e %s\n", vet[0]); return vet; } int main() { char **retorno; retorno = matrizExemplo(); printf("Retorno e: %s\n", retorno[0]); return 0; } Consigo printar dentro da função o vet[0], mas ao retornar para a main ocorre falha de segmentação, onde estou errado?
  24. Não sei se e o lugar certo para postar, mas vamos-la. Problema: Estou com um tablet Genesis GT 7310, ele tem pouca memoria interna e pelas minha pesquisas, não a suporte ao app2sd(função que faz com que seja possivel mover app's para o extsd) e por isso link2sd e similares não funcionam. Tentei de td que se possa imaginar, desde mexer no fstab, ate directory bind(so jogo os arquivos não cria link), não funciona pesquisei em paginas pt-br e en-usa, e não achei um resposta generalizada que funcione em qualquer android, então venho pedir ajudar a todos do forum. obs: esse aparelho não achei rom customizada, nem cya, nem nada, so a boa e ultima atualização direta da genesis, pois bem, e simples o que quero, criar link's simbolicos. Instalei um emulador de terminal no meu tablet, porém o comando(ln -s (so este comando que o android aceita, mas nenhuma sintaxe, apenas o -s)) nao esta dando certo, tentei ativando com o busybox mas sem resultado, pesquisei em paginas usas's e nada, nem eles conseguiram(ou eu nao soube pesquisar), então, alguem sabe qual o comando correto para que se possa criar links simbolicos no android? obs: mount -o bind funciona, porém ele volta ao normal quando o tablet e reiniciado, tentei script para inicar no boot, mas necas... partição do cartão ja em ext2 (porque links simbolicos não aceitam em partições fat(windows). já tentei pelo adb no pc, mas sem sucesso, parece que o comando nao e enviado diretamente pro tablet alguem ajudar??? aguardo respostas
  25. E ae galera, to com um probleminha aqui: Primeiramente vou ilustrar o que quer 1_ Tenho internet via radio, recebo conexão atraves de uma antena de grade com cabo coaxial conectado na placa wifi do pc 2_ Quero colocar wifi em casa, com isso primeiramente estou configurando o 1 router para receber conexão atraves da porta wireless no modo cliente wisp, e apos passar a conexão de uma porta lan do router, para a porta wan do outro router, as configurações do 2 roteadores serao desprezadas, porque estou enfrentando problemas apenas na conexão do primeiro router. O roteador que sera o cliente e um OiwTech 2421 APG, o problema e que, quando vou no site survey para conectar no ap que recebo net, ele da falha, diz "connect failed". so isso, as outras configurações sei fazer, so esta que nao esta dando certo. Primeiramente, gostaria apenas de resolver uma duvida: A rede que conecto esta no canal 3 no modo B, e este router em questao opera em qualquer modo, porém somente no canal 11, isso da alguma interferencia???

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!