collapse

* Links de Robótica

* Posts Recentes

Feira de electricidade e eletrónica por artur36
[Ontem às 23:07]


Power_OK Enermax por almamater
[Ontem às 12:10]


Recomendação de um opamp para um DAC r2r por jm_araujo
[23 de Novembro de 2017, 10:48]


RN42 e TP-Link MR3020 por doiga
[22 de Novembro de 2017, 19:22]


Ajuda Projecto IR / RF por senso
[22 de Novembro de 2017, 13:15]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]

Autor Tópico: Como escrever em varios Pinos  (Lida 1883 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
Como escrever em varios Pinos
« em: 23 de Agosto de 2009, 16:51 »
Boas Pessoal...

Vou iniciar-me no arduino que me ade chegar na proxima semana, e surgio-me uma duvida (isto porque ja estou a tentar desenvolver o codigo para o meu Fibre Clock).

Bom entao é o seguinte, no sistema Picaxe para eu fazer aparecer o numero "2" como o ada imagem a baixo tinha que fazer uma sequencia e fazia-a da seguinte forma:



Código: [Seleccione]
' Numero 2
let pins = %00001101 ' Acende os Leds nas saidas (0,2,3)
pause 1
let pins = %00010101 ' Acende os Leds nas saidas (0,2,4)
pause 1
let pins = %00010101 ' Acende os Leds nas saidas (0,2,4)
pause 1
let pins = %00010101 ' Acende os Leds nas saidas (0,2,4)
pause 1
let pins = %00010110 ' Acende os Leds nas saidas (1,2,4)
pause 1
let pins = %00000000 ' Nao acende nenhum Led
pause 2

A minha duvida é como faço isto no Sistema Arduino?

Cumps
AndréD.

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re:Como escrever em varios Pinos
« Responder #1 em: 23 de Agosto de 2009, 17:10 »
tens que escrever nos Port Registers do atmega, tens 3 registos de portas no arduino:

  • B (pinos 8 ao 13)
  • C (pinos analógicos, também podem ser usados como digitais)
  • D (pinos 0 ao 7)

Se usásses o registo de porta D, terias que declarar o código assim:

DDRD = B11111111;   o registo DDR, Data Direction Register, serve para declarar se os pinos são entradas ou saídas.
1 para output e 0 para input.

Depois para fazer os leds acenderem na disposição que queres, era só adaptares o código:

 ' Numero 2
PORTD = B00001101;  //Acende os Leds nas saidas (0,2,3)
delay(1);
PORTD = B00010101;  //Acende os Leds nas saidas (0,2,4)
delay(1);
PORTD = B00010101;  //Acende os Leds nas saidas (0,2,4)
delay(1);
PORTD = B00010101;  //Acende os Leds nas saidas (0,2,4)
delay(1);
PORTD = B00010110;  //Acende os Leds nas saidas (1,2,4)
delay(1);
PORTD = B00000000;  //Não acende nenhum Led
delay(2);

Dá uma olhadela nesta página:
http://arduino.cc/en/Reference/PortManipulation

;)
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.141
    • Tróniquices
Re:Como escrever em varios Pinos
« Responder #2 em: 23 de Agosto de 2009, 17:16 »
Eu aconselho o uso do porto B, porque o D é onde estão os pinos da porta série.

Também aconselho a mexer só nos pinos que tencionamos mexer, escrevendo apenas nos respectivos bits e preservando os restante inalterados. Se fossem usados os primeiros 5 pinos do porto B (pinos digitais 8 a 12 do Arduino, que correspondem aos bits 0 a 4), para escrever "valor" fazia

PORTB = (PORTB & 0xE0) | valor;

Na inicialização também seria necessário mexer apenas nos bits que nos interessam deixando os restantes inalterados:

DDRB = (DDRB & 0xE0) | 0x1F;

0xE0 é um número em hexadecimal em que os bits 7 a 5 são "1" e os restantes "0"; 0x1F é um número em hexadecimal em que apenas os bits 0 a 4 são "1".

Assim garantimos que não interferimos com outras funcionalidades do programa (como a comunicação série com o PC).

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
Re:Como escrever em varios Pinos
« Responder #3 em: 23 de Agosto de 2009, 17:35 »
Boas...

Njay, percebi a razao pela qual dizes que preferes essa maneira, mas naão achas que é um pouco complicado de mais para quem se esta a iniciar?

Vou testar a maneira que o amigo tcustodio apresentou, depois quando "me sentir mais á vontade com C" experiemtno a tua maneira...

Muito obrigado aos dois pela preciosa ajuda.
Cumps
AndréD.