collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Como escrever em varios Pinos  (Lida 3346 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.598
    • 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.