PVE-500

De Garoa Hacker Clube
Revisão de 05h11min de 11 de março de 2012 por Juca (discussão | contribs) (Criou página com 'O Garoa recebeu um Sony PVE-500 de doação. Trata-se de um painel de controle remoto para edição de video. Eu (Juca) e o Leandro Pereira abrimos pra ver o que tem dentro. Des...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

O Garoa recebeu um Sony PVE-500 de doação. Trata-se de um painel de controle remoto para edição de video.

Eu (Juca) e o Leandro Pereira abrimos pra ver o que tem dentro. Descobrimos que o bicho tem 2 processadores Z80 e duas EPROMS de 32kb cada. O controle remoto dos video cassetes é feito via conexões RS422. A EDL (edit decision list) gerada em uma sessão de edição de vídeo pode ser salva em um arquivo de computador por meio de uma interface RS232.

O painel tem botoes redondos para edição de timestamp, que são bem bacanas. Ficamos com a idéia fixa de hackear esse aparelho pra virar um jogo de PONG :-D

Mapeei a pinagem do conector que liga a placa-mãe ao painel de leds de 7 segmentos (temos 3 grupos de 8 digitos cada e um pequeno de 3 digitos). Segue abaixo as minhas anotações, uma foto, e um código de arduino pra controlar esse painel.

controle do painel de 7 segmentos pelo arduino

const int num_dig=5; int seg[7] = {2,3,4,5,6,7,8}; int comum[num_dig] = {9,10,11,12,13};

void setup(){

 int i;
 for (i=0; i<num_dig; i++){
   pinMode(comum[i], OUTPUT);
 }
 for (i=0; i<7; i++){
   pinMode(seg[i], OUTPUT);
 }

}

int digito=0; int count=0; int _A=0b1111011; int _a=0b1000011; int _b=0b1010111; int _C=0b0110110; int _c=0b1000110; int _d=0b1001111; int _e=0b1110110; int _f=0b1110010; int _G=0b1110111; int _g=0b1111101; int _H=0b1011011; int _h=0b1010011; int _i=0b0000001; int _j=0b0001111; int _k=0b1010010; int _L=0b0010110; int _l=0b0010010; int _r=0b1000010; int _o=0b1000111; int _U=0b0011111; int _u=0b0000111; int _=0;

const int txtlen = 22; int texto[txtlen] = {_G, _a, _r, _o, _a, _, _H, _a, _c, _k, _e, _r, _, _C, _l, _u, _b, _e, _, _, _, _};

void loop(){

 int i;
 for (digito=0; digito<num_dig; digito++){
   for (i=0; i<num_dig; i++){
     digitalWrite(comum[i], i==digito ? HIGH : LOW);
   }
 
   for (i=0; i<7; i++){
     digitalWrite(seg[i], (texto[digito]>>i)%2==1 ? LOW : HIGH);
   }
   delay(2);
 }
 
 count++;
 if (count>30){
   count=0;
   int tmp = texto[0];
   for (i=0;i<txtlen-1;i++){
     texto[i]=texto[i+1];
   }
   texto[txtlen-1]=tmp;
 }

}

foto

TODO

anotações - pinagem dos displays de 7seg

8seg latch-out latch-in flat 1 16 O6 17 D6 30 2 15 O5 14 D5 32 3 6 O2 7 D2 31 4 xx xx 13 5 O1 4 D1 29 14 9 O3 8 D3 33 15 19 O7 18 D7 28 16 12 O4 13 D4 34 LE ------------------- 38 GND -------------------- 49 e 50 VCC -------------------- 1, 2 e 3

ano/cat comum flat 0 11 1 10 2 09 3 08 4 07 5 06 6 05 7 04