Ir ao conteúdo
  • Cadastre-se

fabiano aladin

Membro Pleno
  • Posts

    273
  • Cadastrado em

  • Última visita

  1. Vaga comum aumenta em velocidade em maior , indo de 0 à 255, já vaga idoso decrementa em velocidade menor indo de 25 à 0 de maneira cíclica. Fica neste loop direto. Os botões sensores fazem até decrementar e incrementar, porém não sai do loop infinito.
  2. Este problema já consegui resolver , decrementou e incrementou conforme o esperado , porém como possui 2 vagas especiais que devem deve ser contabilizadas separadas ( mesmo possuindo uma única entrada que também é a saída ), para isso usei 1 variável para todos que entram na garagem , e uma em cada uma das 2 vagas especiais.Para isso usei algo do tipo : cont_vaga = cont_geral - cont_idoso, só que apresenta uma contagem infinita de ambas variáveis(cont_vaga,cont_idoso). int cont_idoso = 2; int cont_geral = 16; int cont_comum = 14; unsigned int entra_idoso() { cont_idoso = cont_idoso - 1; return cont_idoso; } unsigned int sai_idoso() { cont_idoso = cont_idoso + 1; return cont_idoso; } void quant_vaga () { if(cont_comum == 14) { output_high(PIN_B6); } if(cont_comum < 14) { output_high(PIN_B7); } if(cont_idoso == 2) { output_high(PIN_B5); } else if(cont_idoso < 2) { output_high(PIN_B4); } } #use fast_io(D) #use fast_io(B) #use fast_io(A) void main() { lcd_ini(); while(TRUE) { set_tris_D(0B00000000); set_tris_B(0B00000111); set_tris_A(0B00001100); if((input(sensor_1)==1) && (input(sensor_3)==0)) { delay_ms(100); cont_geral = cont_geral - 1 ; delay_ms(10000); } if(input(sensor_1)==0) { delay_ms(100); output_low(PIN_B6); } if((input(sensor_3)==1) && (input(sensor_1)==0)) { if(input(sensor_2)==1) { delay_ms(100); cont_geral = cont_geral + 1 ; delay_ms(10000); } } if(input(sensor_idoso_1)==0) { delay_ms(100); entra_idoso(); } if(input(sensor_idoso_1)==1) { delay_ms(100); sai_idoso(); } if(input(sensor_idoso_2)==0) { delay_ms(100); entra_idoso(); } if(input(sensor_idoso_2)==1) { delay_ms(100); sai_idoso(); } cont_comum = cont_geral - cont_idoso; quant_vaga(); delay_ms(50); printf(lcd_escreve,"\f vaga comum :%u\n vaga idosos: %u",cont_comum,cont_idoso); } }
  3. @.if A função abaixo , é só para eu saber os valores da variável agora no teste, através desta função eu sei que não está havendo decremento e incremento . printf(lcd_escreve,"\f %u",cont_1); Aparece no lcd a variável cont_1 com valor zero , mesmo quando é incrementado através dos botões . Eu tentei usar o q você usou de exemplo aí em vaga++ , porém não foi alterado os valores na variável .Não sei se estou errando em declarar a variável. Obrigado pela ajuda.
  4. @.if A garagem possui só uma abertura que se destina para entrada e saída de veículos para todas as vagas , então serão 3 sensores no teto da entrada/saída e mais sensores para vagas especiais , com a entrada é única então devo ter uma variável para o total de carros que se encontram ainda na garagem , e desse total deve verificar se tem e quantas vagas especiais ocupadas, já que não tem como na entrada identificar quem é vaga especial ou vaga comum . Como as vagas especiais possuem sensores nelas, é só fazer a diferença dessas vagas ocupadas com o total de carros que entraram e não saíram. Então preciso de variáveis para armazenar o total de vagas comuns e vagas especiais (idosos ou de deficientes) ocupadas. Ao todo são 14 vagas comuns e 2 vagas especiais (sendo que as especiais terão sensores nelas ,as vagas comuns será a diferença entre número de veículos q entraram e não saíram da garagem e as vagas especiais ocupadas. Aparentemente consegui resolver o problema dos sensores , agora eles reconhece quem está entrando e quem está saindo , já que passam pelo mesmo lugar . No programa não fiz ainda os botões de incremento e decremento das vagas comuns e das vagas especiais , porque estou tendo dificuldade em fazer a variável cont_1 decrementar e incrementar valores. Pensei em fazer cont_1 incrementar/decrementar valores dentro da interrupção externa , vindo do sensores como tem ainda os botões para incremento/decremento,teria q usar várias portas B's como interrupção externa. Não criei as funções ainda porque não consegui acertar as variáveis. vou colocar o programa aqui e me diga como usar a variável cont_1 de maneira correta porque se eu acertar uma as outras seguirão o mesmo processo, tentei inicializá-la com valores e não funcionou. Só quero incrementar/decrementar as variáveis todas as vez que os sensores forem ativados e também os botões de incremento/decremento. Exemplo : sensor_1 (entrada/saída da garagem) = decrementa a variável cont_1; sensor_2 , sensor_3 (entrada/saída da garagem) = incrementa variável cont_1; sensor_4 , sensor_5 vagas especiais ou de idosos) = incrementa/decrementa variável cont_2; botão 1 = decrementa a variável cont_1; botão 2 = incrementa variável cont_1; botão 3 = decrementa a variável cont_2; botão 4 = incrementa variável cont_2; cont_3 = cont_1 - cont _2; número de vagas de idosos é de "cont_2" número de vagas comuns é de "cont_3" Obrigado pela ajuda!!! Só falta por enquanto resolver o problema da variável!!!! #include <lamp.h> #include <LCD8B.c> #use fast_io(D) #use fast_io(B) int cont_1; #define sensor_1 PIN_B0 #define Sensor_2 PIN_B2 #define sensor_3 PIN_B1 void main() { lcd_ini(); while(TRUE) { set_tris_D(0B00000000); set_tris_B(0B00000111); if((input(sensor_1)==1) && (input(sensor_3)==0)) { delay_ms(100); output_high(PIN_B6); cont_1 = cont_1 ++ ; //output_drive(sensor_3); delay_ms(10000); //output_float(sensor_3); } if(input(sensor_1)==0) { delay_ms(100); output_low(PIN_B6); } if((input(sensor_3)==1) && (input(sensor_1)==0)) { if(input(sensor_2)==1) { delay_ms(100); output_high(PIN_B7); cont_1 = cont_1 -- ; //output_drive(sensor_1); delay_ms(10000); //output_float(sensor_1); } } if(input(sensor_3)==0) { delay_ms(100); output_low(PIN_B7); } delay_ms(200); printf(lcd_escreve,"\f %u",cont_1); } } Fiz o programa só para testar , mas não consigo com que a variável acumule os valores.
  5. @.if Boa noite. É um ckt para mostrar vagas em uma garagem com uma única entrada e saída , onde pessoas passam pelo canto , a mesma possui 14 vagas comuns e 2 especiais. - Os sensores devem diferenciar quem está saindo e quem está entrando (problema resolvido através de delays ), tentei resolver por output_drive e output_float mas deste jeito não funcionou. - Preciso de 2 variáveis para incrementar e decrementar vagas comuns e vagas especiais , como possui uma entrada e uma saída , são 2 sensores para todos q entrarem na garagem e dois sensores em cada vaga especial , por tanto tenho que fazer caso exista a diferença de todas as vagas e as vagas especiais. - os sensores ficarão no teto da garagem pegando os veículos pelo meio assim não pego as pessoas que entrarem pelos cantos.Por tanto o encoder de enquadradura não seria possível neste caso . - Os sensores das vagas especiais ficarão no local para acionarem assim q algum carro ocupá-las. - será necessário botões para incrementar e decrementar vagas comuns e para vagas especiais, para caso de faltar energia elétrica ou acontecer algum problema. - Não estou conseguindo incrementar e decrementar as variáveis , talvez seja erro de e onde declara-las. - Para indicar se possui vaga ou não , tentarei usar display gigante(mas não encontrei ainda onde comprá-los), lâmpadas ou aqueles letreiros luminosos que existem em muitas lojas (porém este último eu nem imagino como fazer). - Não sei se usar interrupção externa para alterar os valores das variáveis vai resolver também o problema de incrementar e decrementar pelos botões. Como eu disse anteriormente parece que consegui resolver( de maneira simples e nem sei se na prática vai realmente funcionar) o problema dos sensores que devem reconhecer quem entra e quem sai . Acho que é tudo !!!!! E obrigado pela ajuda. Obs.: os diodos nos sensores foram só para tentar resolver com output_drive e output_float(assim o sinal não passaria da porta para o sensor em caso de alterar de entrada para saída) . Os dois leds que coloquei foram para só indicar se s sensores ativaram quando devia e quando não deviam.
  6. @.if Obrigado também e desculpe não ter agradecido antes. Pelo método de encoder de quadradura não vai ser possível para eu posicionar os sensores de maneira que fique em 90° defasados os pulsos um do outro , achei uma solução que a princípio parece que resolveu a parte dos sensores , vou testar mais vezes e depois fazer uma maquete. Mas estou com problemas para a variável , já que preciso dela para saber a quantidade de vagas disponíveis , não consigo incrementar e nem decrementá-la pensei em usar interrupção externa , mas acho que o programa que fiz não funcionaria com interrupção.Talvez eu esteja declarando e colocando a variável em lugar errado . Tentei usar o output_drive e output_float , porém não funcionou , não sei se foi por eu ter setado antes as saídas e entradas das portas. Se puder me ajudar na parte da variável eu agradeço. Vão entrar mais dois sensores para vagas especiais .Portanto deverei utilizar mais uma variável para essas duas vagas , como os sensores podem ser colocados na vaga parece q vai dá menos trabalho, só terei que diminuir ou aumentar no total de vagas gerais , já que a entrada e saída são únicas para as vagas comuns e especiais. #include <lamp.h> #include <LCD8B.c> #use fast_io(D) #use fast_io(B) int cont1; #define sensor_1 PIN_B0 #define Sensor_2 PIN_B2 #define sensor_3 PIN_B1 void main() { lcd_ini(); while(TRUE) { set_tris_D(0B00000000); set_tris_B(0B00000111); if((input(sensor_1)==1) && (input(sensor_3)==0)) { delay_ms(100); output_high(PIN_B6); cont1 = cont1 ++ ; //output_drive(sensor_3); delay_ms(10000); //output_float(sensor_3); }
  7. Entendi o conceito , porém não sei como pôr em prática e nem como fazer o programa. Obrigado pela dica. Vou usar botões para decremento e incremento . #include <lamp.h> #include <LCD8B.c> #use fast_io(D) #use fast_io(C) int cont1 = 14; #define sensor_1 PIN_C0 #define Sensor_2 PIN_C1 #define sensor_3 PIN_C2 void main() { lcd_ini(); while(TRUE) { set_tris_D(0B00000000); set_tris_C(0B00000111); if((input(sensor_1)==1) && (input(sensor_3)==0)) { delay_ms(100); output_high(PIN_C3); cont1 = cont1 --; } if(input(sensor_1)==0) { delay_ms(300); output_low(PIN_C3); } if((input(sensor_3)==1) && (input(sensor_1)==0)) { if(input(sensor_2)==1) { delay_ms(300); output_high(PIN_C4); cont1 = cont1 ++; } } if(input(sensor_3)==0) { delay_ms(300); output_low(PIN_C4); } delay_ms(200); printf(lcd_escreve,"\f %u",cont1); } } Estou com 2 problemas como fazer o programa entender quem está entrando e quem está saindo , de maneira correta . E não consigo fazer com que a variável cont1 incremente ou decremente.Fiz as Alterações porém estão longe de serem solucionadas. Para armazenar valores na variável cont1 eu devo criar interrupção?
  8. Como faço para a variável cont1 seja incrementada e decrementada , para eu usá-la para acionar os leds de acordo com o valor dela , para teste eu usei somente para acender e apagar os leds , ainda não consegui alterar o valor de cont . O lcd é só para saber valor dela , e os displays talvez mais tarde eu os use , mas por enquanto o problema maior está em fazer a variável decrementar ou incrementar de acordo com os sensores , os quais substituir no proteus por botões. Se alguém puder me ajudar eu agradeço muito. #include <lamp.h> #include <LCD8B.c> #use fast_io(D) #use fast_io(C) int cont1 = 14; int cont2 = 0; #define sensor_1 PIN_C0 #define Sensor_2 PIN_C1 #define sensor_3 PIN_C2 void main() { lcd_ini(); while(TRUE) { set_tris_D(0B00000000); set_tris_C(0B00000111); if(input(sensor_1)==1) { delay_ms(100); output_high(PIN_C3); cont1 = cont1 --; } if(input(sensor_1)==0) { delay_ms(300); output_low(PIN_C3); cont2 = cont1; } if(input(sensor_3)==1) { if(input(sensor_2)==1) { delay_ms(300); output_high(PIN_C4); cont1 = cont1 ++; } } if(input(sensor_3)==0) { delay_ms(300); output_low(PIN_C4); } cont2 = cont1; delay_ms(200); printf(lcd_escreve,"\f %u",cont2); } }
  9. Estou fazendo um programa que irá fazer o controle de vagas de uma garagem , porém a mesma só possui uma única entrada e uma saída , e onde não posso colocar um sensor para cada vaga. Ao entrar ele decrementa uma variável e ao sair incrementa , por enquanto estou fazendo com lâmpadas para depois fazer por display , porém não estou acertando a lógica para reconhecer quando entra e quando sai da garagem e também gostaria de pedir ajuda em como gravar o valor desta variável na memória e caso de falta de energia .Estou usando o c compiler e o pic 18f4520 . #include <lamp.h> #use fast_io(D) #use fast_io(C) int cont1=14; void main() { while(TRUE) { set_tris_D(0B00000000); set_tris_C(0B00000111); if(input(PIN_C0)==1) { delay_ms(100); cont1 = cont1--; } if(input(PIN_C2)==1) { delay_ms(100); if(input(PIN_C1)==1) { delay_ms(100); cont1 = cont1++; } } if(cont1 < 14) { output_high(PIN_D0); } if(cont1 == 14) { output_high(PIN_D1); } } } #include <18F4520.h> #FUSES NOWDT //No Watch Dog Timer #FUSES BROWNOUT // brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES HS, PUT #use delay(crystal=4MHz)
  10. O programa para achar aproximação de raiz pelo método secante, não funciona para a seguinte função: 2*x**3 −ln(x) −5 , já tentei mudar a sintaxe da função mas não funcionou de nenhuma maneira .Porém para outras funções funcionou. import math a = 1 #@ intervalo b = 2 #@ intervalo h = 0.5 #X1 k = 1.5 #X0 e = (0.0005) #@ erro c = 0 cont = 0 #@função 2*x**3 −ln(x) −5 def f(x): return (2*x**3)-(math.log(x))- 5 if (f(a)*f(b) < 0): while math.fabs(f(c)) > e : c = ((h*f(k))-(k*f(h)))/(f(k)-f(h)) h = k k = c cont = cont + 1 if (math.fabs(f(c)) < e) or (cont >20) : break print("A raíz é: ",c) print("O número de interações é de:",cont) else : print("Não é possívle afirmar!!!") a mensagem de erro: ValueError Traceback (most recent call last) <ipython-input-7-1fcd279aaba4> in <module>() 15 16 if (f(a)*f(b) < 0): ---> 17 while math.fabs(f(c)) > e : 18 c = ((h*f(k))-(k*f(h)))/(f(k)-f(h)) 19 h = k <ipython-input-7-1fcd279aaba4> in f(x) 12 #@função 2*x**3 −ln(x) −5 13 def f(x): ---> 14 return (2*x**3)-(math.log(x))- 5 15 16 if (f(a)*f(b) < 0): ValueError: math domain error
  11. Alguém sabe dizer o que está errado nesse código do método de newton? import math a = 4 #@ intervalo b = 5 #@ intervalo e = (0.01) #@ erro 10^-2 c = 4.5 cont = 0 #@função x/2− tg(x) def f(x): return (x/2)-math.tan(x) def g(x) : return (1/2)- (1/math.cos(x)**2) if (f(a)*f(b) < 0): while (math.fabs(f(c)) > e) : d = c - (f(c)/g(c)) c = d cont = cont + 1 if (math.fabs(f(c)) < e) or (cont >100) : break print("A raíz é: ",d) print("O número de interações é de:",cont) else : print("Não é possívle afirmar!!!")
  12. Não funcionou , e pelo que vi o Delphi não enxerga o driver ! A versão de 32 bits não foi possível instalá-la no pc !
  13. @Fazzioni Jet 4.0 , Não funcionou e tentei por todos os outras opções lá e não obtive sucesso. Pelo Firedac vi na documentação q faltava o drive , instalei na máquina mas não sei como vincular ele no Delphi . No link q você mandou , eu fiz o download por lá e também não funcionou!
  14. Estou com um problema onde não consigo fazer o Delphi usar um banco de dados Acces com extensão .accdb , tentei pelo firedac e pelo Ado mas nada funcionou . Fui pesquisar na documentação do Embarcadero e não entendi como adicionar o drive no Delphi segue o link : Firedac e Access . Alguém pode me ajudar a instalar o drive do Access 2010 (.accdb) no Delphi? OBS.: Não deu para passar o banco .accdb para .mdb , por causa das tabelas do excel que foram adicionadas no banco ! Puxar as tabelas do excel para mysql não foi possível!

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