-
Posts
15 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por jpsek
-
-
Também já brinquei com esse sensor ultrassom, sem prescaler e usando 8.000.000 interno, multiplico o valor lido * 0,17 tendo o resultado em cm.
Pesquisei sobre balancing bot, quero fazer um robô/veículo com duas rodas paralelas se equilibrar verticalmente usando o atmega e um acelerômetro. Depois, acelerar e equilbrar ao mesmo tempo, que requer cálculos mais complexos. O acelerômetro dá um valor que representa a inclinação do eixo impresso no sensor em relação ao eixo da gravidade. Tenho os componentes, mas me falta tempo.
Tem muita coisa pronta sobre atmega/arduino e sensores na net, gravei o duemilanove num atmega168, peguei um exemplo com o módulo transceiver NRF24L01 wireless 2,4ghz, que enviava bytes e o receptor confirmava, adaptei para o comando de um servo no RX por um potenciômetro no TX, ficou bacana.
-
Não sabia o que era debounce
-------------------------------------------------------------------------
Config Portc = Output ' Saidas no portC
' Aliases do Hardware ( apelidos )
Led0 Alias Portc.0 ' LED ligado na saída portc.0
Led1 Alias Portc.1 ' LED ligado na saída portc.1
Buton Alias Pinb.0
Config Portb.0 = Input
Portb.0 = 1 'pull-up
' Inicializa os ports assim o hardware começa corretamente
Portc = &B11111111 ' Desliga as saídas ( nível 1 nas saídas )
'
'------------------------------------------------------------------
' Declação das Variáveis
'
' Inicializa As Variáveis
'
'------------------------------------------------------------------
Dim State As Byte
State = 0
' Código principal do programa
Do
If Buton = 0 Then Waitms 50 'debounce
If Buton = 0 Then
If State = 0 Then
Led0 = 0
Led1 = 1
Bitwait Buton , Set 'espera o botão ser solto
End If
If State = 1 Then
Led0 = 1
Led1 = 0
Bitwait Buton , Set
End If
Incr State
If State > 1 Then State = 0
Waitms 300
End If
Loop ' Volta ao início do programa
End ' Fim do programa
'------------------------------------------------------------------
-
Paulo, obrigado pelo tutorial, parei no primeiro exemplo por falta de componentes.
Teria como mudar o primeiro para que o led1 acendesse e o 2 apagasse com o pressionamento de uma chave táctil, mas não ocorresse nada na soltura da chave? E a cada acionamento da chave alternaria o led aceso e o apagado.
' Diretivas do Compilador (informam ao BASCOM sobre o nosso hardware)
$regfile = "m168def.dat" 'Modelo do microprocessador que
estamos usando
$crystal = 8000000 'Velocidade do clock
'
'------------------------------------------------------------------
' Setup do Hardware
' Configura a direção de todos os Ports do microprocessador
Config Portc = Output ' Saidas no portA
' Aliases do Hardware ( apelidos )
Led0 Alias Portc.0 ' LED ligado na saída portc.0
Led1 Alias Portc.1 ' LED ligado na saída portc.1
' Inicializa os ports assim o hardware começa corretamente
Portc = &B11111111 ' Desliga as saídas ( nível 1 nas saídas )
'
'------------------------------------------------------------------
' Declação das Variáveis
'
' Inicializa As Variáveis
'
' Declaração das Constantes
Const Tempo = 500 ' tempo de 500 Mseg aceso / apagado
'------------------------------------------------------------------
' Código principal do programa
Do
Led0 = 1 ' coloca a saída led0 ( Portc.0 ) em nivel 1 (
apaga o led )
Led1 = 0 ' coloca a saída led1 ( Portc.1 ) em nível 0 (
acende o led )
Waitms Tempo ' Espera 0,5 segundos
Led0 = 0 ' Apaga o led0
Led1 = 1 ' Acende o led1
Waitms Tempo ' Espera 0,5 segundos
Loop ' Volta ao início do programa
End ' Fim do programa
'------------------------------------------------------------------
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
Projetos com Avr : Design, Programação em Basic e Assembly
em Microcontroladores
Postado
IDE Arduino 1.0.1, atmega168 com bootloader duemilanove, mas deve funcionar em qualquer Arduino
A ligação do NRF24L01 é a mesma para RX e TX
CE = pino 14 do atmega
CSN = 15
SCK = 16
MOSI = 17
MISO = 18
IRQ = 19
potenciômetro = 23 do atmega TX ou qualquer outro ADC disponível
servo = 11 do atmega RX ou qualquer outro PWM/OSC
Fontes, gravar RX em um atmega e TX em outro:
http://www.4shared.com/archive/i4MBOYrr/nRF24L01_Servo.html
Quem quiser tem a etiqueta de ref dos pinos Arduino para colar em cima do atmega, pra não ficar perdido nos tutoriais de Arduino tendo um atmega com bootloader (acima enumerei os pinos do atmega mesmo):
http://engenheirando.com/downloads/Atmega328%20labels.pdf
O NRF24L01 é 3,3V, mas eu uso com dois 1N4148 em série nos 5V mesmo