7 anexos 20 awg 16 awg

19
7 Anexos 7.1 Anexo A: Sistemas Electrónicos Unifilar del circuito eléctrico y protecciones eléctricas ITM- 6A Batería 24 VDC + - - + (24 VDC) Acondici onador de voltaje - + (24 VDC) Brazo Robótico KINOVA Fusible 2A X1 X2 X4 F1 14 AWG 16 AWG 20 AWG KM1 DO01 KM1 0.168 Kῼ 2N5551 Relé 12VDC

Upload: others

Post on 10-May-2022

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7 Anexos 20 AWG 16 AWG

7 Anexos

7.1 Anexo A: Sistemas Electrónicos

Unifilar del circuito eléctrico y protecciones eléctricas

ITM- 6A

Batería 24 VDC

+ -

- +(24

VDC)Acondicionador

de voltaje

- +(24 VDC)

Brazo Robótico KINOVA

Fusible 2AX1 X2 X4 F1

14 AWG

16 AWG20 AWG

KM1DO01

KM1

0.168 Kῼ 2N5551

Relé

12VDC

Page 2: 7 Anexos 20 AWG 16 AWG

Co

mp

uta

do

ra

Tx

Rx

(US

B2

)R

xT

xU

SB

(US

B 1

)

Bra

zo

Ro

tico

Tx

Rx

(US

B )

24

VD

C @

2A

5

VD

C @

2 A

RS

23

2

ITM

6A

Ba

terí

a 2

4 V

DC

Re

gu

lad

or

12

V

DC

LM3

09

1u

F1

00

uF

1u

FD

1

UN

40

08

12

VD

C

0.1

68

Kῼ

2

N5

55

1

Re

LED

23

3 ῼ

LED

33

3 ῼ

LED

43

3 ῼ

LED

13

3 ῼ

X1X

2

Fu

sib

le 2

A

F1

X5

20

AW

G

16

AW

G

14

AW

G

14

AW

G

20

AW

G

20

AW

G

KM

1

Ard

uin

oT

x

Rx

DO

01

Pa

rad

a d

e

Em

erg

en

cia

12

VD

C @

2 A

DIA

GR

AM

A D

E C

ON

EX

ION

ES

EL

EC

TR

ICA

S D

EL

SIS

TE

MA

Page 3: 7 Anexos 20 AWG 16 AWG

7.2 Anexo B: Planos de Piezas y Ensambles

Page 4: 7 Anexos 20 AWG 16 AWG

Grad

o 5DI

N 69

12Pe

rno de

cabe

za he

xago

nal -

M10 x

254

15

Grad

o 5IS

O 47

62Pe

rno de

cabe

za ci

rcular

- M8 x

204

14

Grad

o 5DI

N 12

8Ar

ande

la de

pres

ión M

64

13

Grad

o 5DI

N 67

96Ar

ande

la Pla

na M

64

12

Refer

encia

lCF

Robo

t1

11

Grad

o 5DI

N 93

1-1Pe

rno de

cabe

za he

xago

nal -

M10 x

651

10

Grad

o 5IS

O 40

32Tu

erca h

exag

onal

- M10

29

Grad

o 5DI

N 67

96Ar

ande

la pla

na M

108

8

Grad

o 5DI

N 93

1-1Pe

rno de

cabe

za ci

rcular

- M10

x 40

17

Alumi

nio

AA 60

63Má

stil d

e braz

o1

6

Grad

o 5DI

N 12

8Ar

ande

la de

pres

ión M

106

3

Parte

solda

daAS

TM A

36So

porte

de br

azo r

obóti

co1

2

(Silla

de ru

edas

)Fu

ndici

ónRe

ducto

r con

aguje

ros1

1 POS.

CANT

.DE

SCRIP

CION

NORM

AMA

TERI

ALOB

SERV

ACIO

NES

PON

TIFI

CIA

UN

IVER

SID

AD C

ATO

LIC

A D

EL P

ERU

SEC

CIO

N IN

GEN

IER

IA M

ECAN

ICA

METO

DO D

E PR

OYEC

CION

ESC

ALA

FECH

A:

LAM

INA:

Sopo

rte d

e br

azo

de ro

bot

DIB

UJA

DO

PO

R:

APR

OBA

DO

PO

R:

Mae

stría

en

inge

nier

ía M

ecat

róni

ca -

Beca

s C

ON

CYT

EC

Cés

ar C

oasa

ca

1 : 5

21.1

0.20

15

A3 -

1

15 13210 8 8 3 9141312

11 7 8 3 9

228

530

166

50

86

Page 5: 7 Anexos 20 AWG 16 AWG

DET

ALLE

B

( 1:1

)

DET

ALLE

A

( 1:1

)

B

A

ACAB

ADO

SUPE

RFIC

IALTO

LERA

NCIA

GENE

RAL

MATE

RIAL LA

MIN

A:

FECH

A:

SEC

CIO

N IN

GEN

IER

IA M

ECAN

ICA

ESC

ALA

PON

TIFI

CIA

UN

IVER

SID

AD C

ATO

LIC

A D

EL P

ERU

METO

DO D

E PR

OYEC

CION

DIB

UJA

DO

PO

R:

APR

OBA

DO

PO

R:

Mae

stría

en

inge

nier

ía M

ecat

róni

ca -

Beca

s C

ON

CYT

EC

SOPO

RTE

DE

BRAZ

OR

OBO

TIC

O1

: 5

IND

ICAD

OSE

N D

IN 7

168

MED

IO Cés

ar C

oasa

ca22

/10/

2015

A3 -

2

532

230

100

166

12

80

100

70

80100

5

11 (2

x)

11 (4

x)

5

150

70

CA

RTE

LAPL

AN

CH

A L

AC

t=5m

m A

STM

A-3

6

PLA

CA

BA

SEPL

AN

CH

A L

AC

t=5m

m A

STM

A-3

6

ESTR

UC

TUR

ATU

BO

CU

AD

RA

DO

1-1

/4 x

1-1

/4 x

1/8

AST

M A

36

7x7

5x5

GRAD

O DE

EXAC

TITUD

±0,1

Más d

e3 hasta 6

SEGU

N DI

N 71

68TO

LERA

NCIAS

DIM

ENSIO

NALE

S

MEDIO

Más d

e0,5 ha

sta 3 ±0,1

±0,2

Más d

e6 hasta 30

Más d

e30 hasta 120

±0,3

Más d

e12

0ha

sta 400

±0,5

Más d

e40

0ha

sta 1000 ±0,8

Más d

e10

00ha

sta 2000 ±1.2

CA

RTE

LA

PLA

CA

BA

SE

Page 6: 7 Anexos 20 AWG 16 AWG

ACAB

ADO

SUPE

RFIC

IALTO

LERA

NCIA

GENE

RAL

MATE

RIAL LA

MIN

A:

FECH

A:

SEC

CIO

N IN

GEN

IER

IA M

ECAN

ICA

ESC

ALA

PON

TIFI

CIA

UN

IVER

SID

AD C

ATO

LIC

A D

EL P

ERU

METO

DO D

E PR

OYEC

CION

DIB

UJA

DO

PO

R:

APR

OBA

DO

PO

R:

Mae

stría

en

inge

nier

ía M

ecat

róni

ca -

Beca

s C

ON

CYT

EC

MÁS

TIL

DE

BRAZ

O1

: 2

AA 6

066

SEG

ÚN

DIN

716

8M

EDIO Cés

ar C

oasa

ca22

.10.

2015

A4 -

3

42

10 X

45°

(4x)

92

15

68

50

75

12 (2

x)

M8

(4x)

9 145 X

45° (

4x)

GRAD

O DE

EXAC

TITUD

±0,1

Más d

e3 hasta 6

SEGU

N DI

N 71

68TO

LERA

NCIAS

DIM

ENSIO

NALE

S

MEDIO

Más d

e0,5 ha

sta 3 ±0,1

±0,2

Más d

e6 hasta 30

Más d

e30 hasta 120

±0,3

Más d

e12

0ha

sta 400

±0,5

Más d

e40

0ha

sta 1000 ±0,8

Más d

e10

00ha

sta 2000 ±1.2

Page 7: 7 Anexos 20 AWG 16 AWG

7.3 Anexo C: Programas

Programa General

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Emotiv; using System.Windows.Forms; using System.Threading; using System.Net; using System.Net.Sockets; using Encog.Neural; namespace DTF_Emotiv;

{

public class Program {

const int muestra=128; const int entrena = 1; const int umbral = 30;

EmoEngine engine; int userID = -1; static int Comando =0;

static double[,] O1_RAW = new double[entrena, muestra]; static double[,] O2_RAW = new double[entrena, muestra]; static double[,] P7_RAW = new double[entrena, muestra]; static double[,] P8_RAW = new double[entrena, muestra]; static double[,] SUMA_RAW = new double[entrena, muestra]; static double[,] PROMEDIO_RAW = new double[entrena, muestra];

static double[,] O1_Neutral = new double[entrena, muestra]; static double[,] O2_Neutral = new double[entrena, muestra]; static double[,] P7_Neutral = new double[entrena, muestra]; static double[,] P8_Neutral = new double[entrena, muestra]; static double[,] SUMA_Neutral = new double[entrena, muestra];

static double[,] Entrena_Comando1 = new double[entrena, muestra]; static double[,] Entrena_Comando4 = new double[entrena, muestra]; static double Absoluto1 ; static double Absoluto4;

static double[,] PROMEDIO_Neutral = new double[entrena, muestra];

static double[] absoluto_O1 = new double[muestra]; static double[] absoluto_O2 = new double[muestra]; static double[] absoluto_P7 = new double[muestra]; static double[] absoluto_P8 = new double[muestra]; static double[] SUMA_absoluto = new double[muestra]; static double[] PROMEDIO_absoluto = new double[muestra];

Page 8: 7 Anexos 20 AWG 16 AWG

static void Main(string[] args) {

/* const string MyValidPassword = "C6H12O6h2so4"; Kinova.API.Jaco.CJacoArm Jaco_m = new

Kinova.API.Jaco.CJacoArm(Kinova.DLL.SafeGate.Crypto.GetInstance().Encrypt(MyValidPassword));

Kinova.DLL.Data.Jaco.Config.CClientConfigurations config = new Kinova.DLL.Data.Jaco.Config.CClientConfigurations();

*/

// Thread comunicacion = new Thread(Comunicar);// se define el hilo de comunicacion con programa de BMI

string sUserChoice = ""; Program p = new Program();

while (true) {

if (Console.KeyAvailable) {

sUserChoice = Console.ReadLine(); if (sUserChoice.ToLower() == "x") {

break; }

}

////////////////////////////////////////////////////////////////////////////// /////////////////////// ENTRENAMIENTO

NEUTRAL//////////////////////////////// Console.WriteLine("Presione Enter para iniciar lectura de modo

neutral"); Console.ReadKey();

for (int n = 0; n < entrena; n++) { p.Run(O1_RAW,O2_RAW,P7_RAW,P8_RAW ,n);

System.Threading.Thread.Sleep(1000); p.Run(O1_RAW, O2_RAW, P7_RAW, P8_RAW, n);

for (int i = 0; i < muestra; i++) {

O1_Neutral[n, i] = O1_RAW[n, i]; O2_Neutral[n, i] = O2_RAW[n, i]; P7_Neutral[n, i] = P7_RAW[n, i]; P8_Neutral[n, i] = P8_RAW[n, i]; SUMA_Neutral[n, i] = O1_RAW[n, i] + O2_RAW[n, i] +

P7_RAW[n, i] + P8_RAW[n, i]; PROMEDIO_Neutral[n, i] = SUMA_Neutral[n, i] / 4;

}

}

Console.WriteLine("Presione Enter para iniciar entrenamiento Comando 1");

Console.ReadKey();

Page 9: 7 Anexos 20 AWG 16 AWG

for (int n = 0; n < entrena; n++) { p.Run(O1_RAW, O2_RAW, P7_RAW, P8_RAW, n);

System.Threading.Thread.Sleep(100);

for (int i = 0; i < muestra; i++) {

Entrena_Comando1[n,i] = (O1_RAW[n, i] + O2_RAW[n, i] + P7_RAW[n, i] + P8_RAW[n, i])/4;

}

}

Console.WriteLine("Presione Enter para iniciar entrenamiento Comando 4");

Console.ReadKey();

for (int n = 0; n < entrena; n++) { p.Run(O1_RAW, O2_RAW, P7_RAW, P8_RAW, n);

System.Threading.Thread.Sleep(100);

for (int i = 0; i < muestra; i++) {

Entrena_Comando4[n, i] = (O1_RAW[n, i] + O2_RAW[n, i] + P7_RAW[n, i] + P8_RAW[n, i])/4;

}

}

/////////////////////////////////////////////////////////////////////////////

//////// /////////TRANSFORMADA DE FOURIER DE MODO NEUTRAL //////////////////

for (int n = 0; n < entrena; n++) {

TTF_EEG(O1_Neutral, n); TTF_EEG(O2_Neutral, n); TTF_EEG(P7_Neutral, n); TTF_EEG(P8_Neutral, n); TTF_EEG(SUMA_Neutral, n);

TTF_EEG(PROMEDIO_Neutral, n); TTF_EEG(Entrena_Comando1, n); TTF_EEG(Entrena_Comando4, n);

}

///////////////////// LECTURA DE ESTIMULOS /////////////////////////

Console.WriteLine("Presione Enter para inicio de lectura");

Page 10: 7 Anexos 20 AWG 16 AWG

Console.ReadKey();

while(true) { p.Run(O1_RAW,O2_RAW,P7_RAW,P8_RAW,0);

System.Threading.Thread.Sleep(1000);

for(int n=0; n<entrena; n++) {

for (int i = 0; i < muestra; i++) {

SUMA_RAW[n, i] = O1_RAW[n, i] + O2_RAW[n, i] + P7_RAW[n, i] + P8_RAW[n, i];

PROMEDIO_RAW[n, i] = SUMA_RAW[n, i] / 4; }

}

///////////////////////////////////////////////////////////////////////////// /////////////////////// ANALISIS DE FOURIER

////////////////////////////

/////////// TRANSFORMADA DE FOURIER DE MODO ESTIMULO //////////////////////

for (int n = 0; n < entrena; n++) {

TTF_EEG(O1_RAW, n); TTF_EEG(O2_RAW, n); TTF_EEG(P7_RAW, n); TTF_EEG(P8_RAW, n); TTF_EEG(SUMA_RAW, n); TTF_EEG(PROMEDIO_RAW,n);

}

////////////////////////////////////////////////////////////////////////////

///////////////////////// COMPARACION /////////////////////////////////////

for (int n = 0; n < entrena; n++) {

for (int i = 0; i < muestra; i++) {

PROMEDIO_absoluto[i] = PROMEDIO_RAW[n, i] - Entrena_Comando1[n, i];

} Absoluto1 = 0;

for (int i = 0; i < muestra; i++) {

Absoluto1 = Absoluto1 + PROMEDIO_absoluto[i];

}

Page 11: 7 Anexos 20 AWG 16 AWG

Console.WriteLine("El valor de absoluto Comando 1 es" + Absoluto1);

for (int i = 0; i < muestra; i++) {

PROMEDIO_absoluto[i] = PROMEDIO_RAW[n, i] - Entrena_Comando4[n, i];

} Absoluto4 = 0;

for (int i = 0; i < muestra; i++) {

Absoluto4 = Absoluto4 + PROMEDIO_absoluto[i];

} Console.WriteLine("El valor de absoluto Comando 4 es"

+ Absoluto4);

for (int i = 0; i < muestra; i++) {

absoluto_O1[i] = O1_RAW[n, i] - O1_Neutral[n, i]; absoluto_O2[i] = O2_RAW[n, i] - O2_Neutral[n, i]; absoluto_P7[i] = P7_RAW[n, i] - P7_Neutral[n, i]; absoluto_P8[i] = P8_RAW[n, i] - P8_Neutral[n, i]; SUMA_absoluto[i] = SUMA_RAW[n, i] -

SUMA_Neutral[n, i]; PROMEDIO_absoluto[i] = PROMEDIO_RAW[n, i] -

PROMEDIO_Neutral[n, i]; }

///// FILTRO PASABANDA /// // System.Console.WriteLine("Electrodo O1"); // filtro_pasabanda(absoluto_O1); //System.Console.WriteLine("Electrodo O2"); //filtro_pasabanda(absoluto_O2); //System.Console.WriteLine("Electrodo P7"); //filtro_pasabanda(absoluto_P7); //System.Console.WriteLine("Electrodo P8"); //filtro_pasabanda(absoluto_P8); //System.Console.WriteLine("Suma de electrodos"); filtro_pasabanda(SUMA_absoluto); System.Console.WriteLine("Promedio de electrodos"); filtro_pasabanda(PROMEDIO_absoluto);

// brazo_robot(Comando,Jaco_m);

Comunicar(Comando);

} // Application.SetCompatibleTextRenderingDefault(false);

// Application.Run(new Form1(SUMA_absoluto, muestra)); // Console.ReadKey();

Page 12: 7 Anexos 20 AWG 16 AWG

}

}//end while Console.WriteLine("End program");

}

Program() {

engine = EmoEngine.Instance; engine.UserAdded += new

EmoEngine.UserAddedEventHandler(engine_UserAdded_Event); engine.Connect();

}

void engine_UserAdded_Event(object sender, EmoEngineEventArgs e) {

Console.WriteLine("User Added Event has occured"); userID = (int)e.userId;

engine.DataAcquisitionEnable((uint)userID, true); engine.EE_DataSetBufferSizeInSec(1);

}//end engine_UserAdded_Event

void Run(double[,] o1, double[,] o2, double[,] p7, double[,] p8, int n)

{

engine.ProcessEvents();

if ((int)userID == -1) return ;

Dictionary<EdkDll.EE_DataChannel_t, double[]> data = engine.GetData((uint)userID);

if (data == null) {

return; }//end if

int _bufferSize = data[EdkDll.EE_DataChannel_t.TIMESTAMP].Length;

Console.WriteLine("Writing " + _bufferSize + " lines of data ");

for (int i = 0; i < _bufferSize; i++) {

foreach (EdkDll.EE_DataChannel_t channel in data.Keys) {

if (channel == EdkDll.EE_DataChannel_t.O1) {

o1[n, i] = Math.Round(data[channel][i], 2);

Page 13: 7 Anexos 20 AWG 16 AWG

} if (channel == EdkDll.EE_DataChannel_t.O2) {

o2[n, i] = Math.Round(data[channel][i], 2);

}

if (channel == EdkDll.EE_DataChannel_t.P7) {

p7[n, i] = Math.Round(data[channel][i], 2);

}

if (channel == EdkDll.EE_DataChannel_t.P8) {

p8[n, i] = Math.Round(data[channel][i], 2);

} }

} //end for

// EEG_data = GyroX + "," + GyroY + "," + F3 + "," + F4 + "," + AF3 + "," + AF4;

//EEG_data = GyroX + "," + GyroY + "," + F3 + "," + F4 + "," + AF4;

//for (int i = 0; i < _bufferSize; i++) //{ // foreach (EdkDll.EE_DataChannel_t channel in data.Keys) // EEG_data = EEG_data+data[channel][i] + ","; //}//end for

// EEG_data = EEG_data + "\0"; // Console.WriteLine(EEG_data); // SendUDPData(IP, 27250, EEG_data);

// if (blink < 3750) // Console.WriteLine("----> blink");

// for (int i = 0; i < 64; i++) // { // aux[0, i] = EEG_Neutral[0, i]; // }

}//end Run

static void filtro_pasabanda(double[] absoluto) {

double ganancia1 = 10; double ganancia2 = 10; double ganancia3 = 10; double ganancia4 = 10;

for (int i = 0; i < 16; i++) {

absoluto[i] = absoluto[i] * 0; }

absoluto[20] = 0;

Page 14: 7 Anexos 20 AWG 16 AWG

absoluto[24] = 0; absoluto[28] = 0;

for (int i = 17; i < 20; i++) // 12.02 Hz {

absoluto[i] = absoluto[i] * ganancia1; }

for (int i = 21; i < 24; i++) //14.69Hz {

absoluto[i] = absoluto[i] * ganancia2; }

for (int i = 25; i < 28; i++) //17.36Hz {

absoluto[i] = absoluto[i] * ganancia3; }

for (int i = 29; i < 32; i++)//20.03Hz {

absoluto[i] = absoluto[i] * ganancia4; }

int max = 1;

for (int i = 0; i < 32; i++) {

if (absoluto[i] > absoluto[max]) {

max = i; }

}

if (absoluto[max] >= umbral) { Console.WriteLine("Frecuencia detectada: " + max * 1.0016 +

"Hz" + " Valor : " + absoluto[max]); if (max > 28 && max < 32) {

Console.WriteLine("COMANDO 4"); Comando = 4;

}

if (max > 24 && max < 28) {

Console.WriteLine("COMANDO 3"); Comando = 3;

}

if (max > 20 && max < 24) {

Console.WriteLine("COMANDO 2"); Comando = 2;

}

if (max > 16 && max < 20) {

Console.WriteLine("COMANDO 1"); Comando = 1;

}

Page 15: 7 Anexos 20 AWG 16 AWG

} else { Console.WriteLine("COMANDO 0"); Comando = 9; } } static void TTF_EEG(double[,] EEG_data, int n) { System.Numerics.Complex[] complejo = new System.Numerics.Complex[muestra]; for (int i = 0; i < muestra; i++) { complejo[i] = new System.Numerics.Complex(EEG_data[0, i], 0); } MathNet.Numerics.IntegralTransforms.Fourier.Forward(complejo); EEG_data[n,0] = 1; for (int i = 1; i < muestra; i++) { EEG_data[n,i] = System.Numerics.Complex.Abs(complejo[i]); } } static void brazo_robot(int comando, Kinova.API.Jaco.CJacoArm Jaco_m) { Jaco_m.ControlManager.StartControlAPI(); //Declare and initialize a CJoystickValue that will emulate a GeneralJoystick Kinova.DLL.Data.Jaco.CJoystickValue value = new Kinova.DLL.Data.Jaco.CJoystickValue(); if (Jaco_m.JacoIsReady()) { // int mensaje = serial_comm(); int mensaje = comando; Console.WriteLine(mensaje);

Page 16: 7 Anexos 20 AWG 16 AWG

if (mensaje != 255) { Jaco_m.ControlManager.StartControlAPI(); // X UP // if (((Button)m_Grid.Children[4]).IsPressed) if (mensaje == 4) { value.InclineLR = -1f; } // Y UP //if (((Button)m_Grid.Children[5]).IsPressed) if (mensaje == 3) { value.InclineFB = -1f; } // X DOWN //if (((Button)m_Grid.Children[7]).IsPressed) if (mensaje == 2) { value.InclineLR = 1f; } // Y DOWN //if (((Button)m_Grid.Children[8]).IsPressed) if (mensaje == 1) { value.InclineFB = 1f; } // Z DOWN if (mensaje == 9) { value.Rotate = 1f; } // Z UP if (mensaje == 8) { value.Rotate = -1f; } //abre grip // if (mensaje == 6) //abre grip // if (mensaje == 7) // Store Position if (mensaje == 5) { value.ButtonValue[2] = 1; } /* // Go To Position

Page 17: 7 Anexos 20 AWG 16 AWG

if (((Button)m_Grid.Children[11]).IsPressed) { value.ButtonValue[7] = 1; }*/ //We update JACO with the new data. /////////////////////////////////////////////////////////////// Jaco_m.ControlManager.SendJoystickFunctionality(value); if (mensaje == 15) { value.InclineFB = 0; value.InclineLR = 0; value.Rotate = 0; Thread.Sleep(50); Jaco_m.ControlManager.SendJoystickFunctionality(value); } } } } static void Comunicar(int comando) { //while (true) // { Socket cliente = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint MiDireccion = new IPEndPoint(IPAddress.Parse("192.168.1.33"), 1234); // try cliente.Connect(MiDireccion); Console.WriteLine("Conectado con exito,ingrese mensaje:"); string msg = comando.ToString(); //string msg = Console.ReadLine(); byte[] msgBuffer = Encoding.Default.GetBytes(msg); cliente.Send(msgBuffer, 0, msgBuffer.Length, 0); Thread.Sleep(100); byte[] buffer = new byte[255]; int rec = cliente.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Recibido: {0}", Encoding.Default.GetString(buffer)); cliente.Close(); // } } } }

Page 18: 7 Anexos 20 AWG 16 AWG

Programa Arduino

void setup() { // put your setup code here, to run once: pinMode(13,OUTPUT); pinMode(12, OUTPUT); pinMode(8, OUTPUT); pinMode(7, OUTPUT); #define periodo1 1000/31 #define periodo2 1000/30 #define periodo3 1000/29 #define periodo4 1000/28 }

void loop() { // put your main code here, to run repeated

int cont1=0; int cont2=0; int cont3=0; int cont4=0;

while(true) { delay(1); cont1=cont1+1; cont2=cont2+1; cont3=cont3+1; cont4=cont4+1; // LED 1 // if(cont1==(periodo1/2))

{ digitalWrite(13, HIGH);

} if(cont1==periodo1) {

digitalWrite(13, LOW); cont1=0;

}

// LED 2 //

if(cont2==(periodo2/2)) {

digitalWrite(12, HIGH); } if(cont2==periodo2) {

digitalWrite(12, LOW); cont2=0;

}

// LED 3 //

Page 19: 7 Anexos 20 AWG 16 AWG

if(cont3==(periodo3/2)) {

digitalWrite(8, HIGH); } if(cont3==periodo3) {

digitalWrite(8, LOW); cont3=0;

}

// LED 4 //

if(cont4==(periodo4/2)) {

digitalWrite(7, HIGH); } if(cont4==periodo4) {

digitalWrite(7, LOW); cont4=0;

} }

}