2011_P20

Joc de Lumini

I. Descrierea proiectului

Se cere realizarea unui circuit care sa primeasca prin port serial un caracter si, in functie de aceasta intrare, sa aprinda dupa anumite tipare (ordine de aprindere, frecventa, tensiune) o serie de LED-uri.

Pentru aceasta s-a utilizat schema de integrare standard a PIC 16F 628 A cu placa EV/Z3.

II. Cerintele proiectului

LED-urile folosite accepta intrari de 5V (alimentare cu tensiune stabilizata la 5.6V, 660 mA, curent continuu) si se aprind in Galben, Rosu si Albastru.

Caracterele trimise de placa EV/Z3 prin port serial sunt in intervalul 0-5. Acestea se citesc de la tastatura placii.

III. Informatii de utilizare

Pentru utilizarea placii trebuie intai programat pe EV/Z3 modul de transmitere prin port serial a caracterelor 0-5;

Pentru aceasta:

  1. Se compileaza proiectul care transmite placii EV/Z3 sa aplice un event listener pe apasarile de tasta de pe consola.
  2. Se stabileste o conexiune Seriala intre Computerul pe care a fost compilat proiectul si placa EV/Z3
  3. Se incarca programul pe EV/Z3 si se ruleaza
  4. Pentru testare, se observa faptul ca display-ul placii EV/Z3 afiseaza cate un mesaj pentru fiecare joc de lumini ales spre a fi transmis prin portul serial
  5. Se deconecteaza computerul de la EV/Z3
  6. Se conecteaza PIC16F628A la EV/Z3 printr-un cablu serial MAMA-MAMA

La fiecare apasare de tasta pe consola ev/z3 se incarca un nou joc de lumini pe placa realizata.

Consola

IV. Componente folosite

Componentele folosite sunt:

  • 3 rezistente RW25CF 4.7K (250 mW)
  • 1 rezistenta RW25CF 100R (250 mW)
  • 2 rezistente RW25CF 100K (250 mW)
  • 2 condensatori CML 22pF 50V C0G
  • 5 condensatori CE 1.0uF 63V 105C Fujicon
  • 2 condensatori CML 47nF 50V Y5V P2.5
  • 1 buton TS-06E (TS-3) (tact switch)
  • 1 quartz Q20.000 MHz HC-49S
  • 1 microcontroller PIC16F628A-I/P
  • 1 microcontroller MAX232N
  • 1 tranzistor LM7805
  • 2 socluri de 18 pini
  • 2 mufe TATA seriale de 18 pini DE9PF
  • 3 LED-uri de culori diferite

V. Design Hardware [edit]

S-a folosit urmatoarea schema de adaptare EV/Z3:


Software

VI. Design software

1.

#include "platform_io.h"

2.

#include "runtime\z3ev_io.c"

3.

 

4.

const char *welcome =       "Joc de lumini...........";

5.

 

6.

const char *serialStart =   "Alege jocul.............";

7.

 

8.

static SerialConfig serialConf;

9.

 

10.

unsigned char buffer[32];

11.

 

12.

unsigned char getch()

13.

{

14.

//citeste codul de la tastatura

15.

int code;

16.

code=kIo.ReadKey();

17.

//testeaza ce cod era

18.

switch(code)

19.

{

20.

case 0x00:

21.

return '0';

22.

case 0x0A:

23.

return '1';

24.

case 0x01:

25.

return '2';

26.

case 0x0B:

27.

return '3';

28.

case 0x02:

29.

return '4';

30.

case 0x0C:

31.

return '5';

32.

default:

33.

return '0';

34.

 

35.

}

36.

}

37.

 

38.

char coduri[6]={0,1,2,3,4,5};

39.

 

40.

int readkey()

41.

{

42.

int key;

43.

while (1)

44.

{

45.

key=kIo.ReadKey();

46.

kIo.DisplayBuffer((const unsigned char *)(&key),2);

47.

}

48.

return key;

49.

}

50.

 

51.

int operand_citit = 1;

52.

char semn;

53.

int a=0,b=0,c=0;

54.

int cod_reset_b=0;

55.

char tasta;

56.

 

57.

int main()

58.

{

59.

int key = 0;

60.

kIo.DisplayString("Joc de lumini   ");

61.

 

62.

/* Serial Initialization */

63.

serialConf.baudRate   = b9600;

64.

serialConf.parity     = none;

65.

serialConf.stopBits   = one;

66.

serialConf.wordLength = eight;

67.

 

68.

 

69.

kIo.SerialInit(&serialConf);

70.

 

71.

// Citire de la tastatura (ciclare infinita)

72.

while(1)

73.

{

74.

// read the key

75.

key = kIo.ReadKey();

76.

// Display the code of each individual key

77.

// kIo.DisplayBuffer((const unsigned char*)&key, 2);

78.

 

79.

/**

80.

0 - 0000 (0)

81.

1 - 0A00 (10)

82.

2 - 0100 (1)

83.

3 - 0B00 (11)

84.

4 - 0200 (2)

85.

5 - 0C00 (12)

86.

*/

87.

if (key == 0) { // 0

88.

kIo.DisplayString("Alege jocul nr 0");

89.

// TODO send through serial

90.

kIo.SerialWrite(80,0,1); // port, buffer, size

91.

}

92.

else if (key == 10) {// 1

93.

kIo.DisplayString("Alege jocul nr 1");

94.

}

95.

else if (key == 1) {// 2

96.

kIo.DisplayString("Alege jocul nr 2");

97.

}

98.

else if (key == 11) {// 3

99.

kIo.DisplayString("Alege jocul nr 3");

100.

}

101.

else if (key == 2) {// 4

102.

kIo.DisplayString("Alege jocul nr 4");

103.

 

104.

else if (key == 12) {// 5

105.

kIo.DisplayString("Alege jocul nr 5");

106.

}

107.

}

108.

return 0;

109.

}

VII. Rezultate [edit]

Evolutia proiectului:

Lista de componente
Schema de lucruAlmost thereVerso
Last look

VIII. Descarcare [edit]

IX. Status

  • 4 Mai - piese achizitionate
  • 6 Mai - terminarea schemei #1
  • 13 Mai - revizia schemei de adaptare pentru EV/Z3
  • 18 Mai - program EV/Z3
  • 19 Mai - terminarea schemei #2 (pin 10 PIC la masa)

X. Contributii [edit]

Valentino-Jivko Radosavlevici:

  • Achizitionare piese
  • Implementare schema electrica
  • Testare tensiuni/amperaje pe placa
  • Achizitionare LED-uri
  • Conectare LED-uri la iesirile programabile RA0, RA1, RA2
  • Corectare schema electrica dupa ultimele actualizari
  • Programare EV/Z3 pentru transmisia seriala a caracterelor
  • Intocmire pagina Wiki

Silvian Ionete: