Sunteți pe pagina 1din 19

INFORME

RGB
Alumnos:

Aguilar Montesinos, Ethel


Cuyo Alvarez, Edwin
Alvarez Estrada, Fernando
Huahuamullo Lira, Josue
Jove Betancur, Diego
Pere Huaroc, Kimberly
Rodriguez Espinoza, Nora
Tejada Paz, Renato Fernando

Contenido
INTRODUCCIN

1.

Objetivos de la practica

2.

Cdigo en arduino

4.

Estructura en Proteus

11

5.

Interface en visual basic

11

6.

Cdigo del formulario en Visual Basic

12

7.

Visualizacin del funcionamiento del cdigo en visual

16

8.

Conclusiones

17

Introduccin
Lo que pretendemos hacer con el siguiente montaje es no slo encender un
LED-RGB mediante Arduino (con la consecuente obligacin de acudir al
cdigo cada vez que se desee un nuevo color) sino de cambiar tambin el
color del LED utilizando los diferentes valores que nos da cada potencimetro.
As pues, y una vez montado, slo tendremos que girar en un sentido o en otro
los distintos potencimetros para obtener las diferentes mezclas de colores
que nos ofrecen este tipo de LEDs. Empecemos pues:
Lo que vamos a necesitar:
-

Protoboard.

x3 potencimetros (en mi caso de 1K)

LED-RGB -

Placa Arduino (en mi caso UNO).

6 Cables hembra-macho.

x3 resistencias (en mi caso de 220).

Tan slo una ltima aclaracin para que nadie se sienta perdido. Los colores
estn comprendidos entre los valores 0 255 siendo 0 apagado y 255 el color
a la mxima intensidad. Los valores 0 1032 hacen referencia a lo que
Arduino lee de los potencimetros. Esta seal siempre est comprendida entre
0 -1032 independientemente de la resistencia del potencimetro.

1. Objetivos de la practica

Utilizar el software Proteus para simular el funcionamiento de un foco


Rgb el cual debe cambiar de colores los cuales estn comprendidos en

una escala de 0 255.


Probar el circuito utilizado en Proteus en fsico con los materiales antes
mencionados, armar este circuito en la placa arduino y probarlo con el

computador para ver su funcionamiento en la realidad


char Cadena[10]="";
char Cadena1[10]="";
2.
Cdigo en arduino
int LRojo = 11;
int LVerde = 10;
int LAzul = 9;
int ERojo = A0;
int EVerde = A1;
int EAzul = A2;
int VRojo=0,VVerde=0,VAzul=0;
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicacin serial
pinMode(LRojo, OUTPUT);
pinMode(LVerde, OUTPUT);
pinMode(LAzul, OUTPUT);
pinMode(ERojo, INPUT);
pinMode(EVerde, INPUT);
pinMode(EAzul, INPUT);
}
void loop() // Esta funcion se mantiene ejecutando
{
VRojo= map(analogRead(ERojo),15,946,0,255);// deberia ser
0,1023,0,255)
VVerde= map(analogRead(EVerde),0,1023,0,255);
delay(5);
VAzul= map(analogRead(EAzul),0,1023,0,255);
delay(5);
Serial.println(VRojo);
Serial.println(VVerde);
Serial.println(VAzul);
delay(10);
analogWrite(LRojo,VRojo);
analogWrite(LVerde,VVerde );
analogWrite(LAzul,VAzul );
delay(10);
}

3.

Armado de la estructura utilizando Arduino

4. Estructura en Proteus

5. Interface en visual basic

6. Cdigo del formulario en Visual Basic

Option Strict On
Imports System.IO
Module MODULE1
Public Contador As Integer = 0
Sub RecuperarMatriz(ByVal nombrearchivo As String, ByRef A(,) As Integer,
ByVal nf As Integer, ByVal nc As Integer)
Dim srLector As StreamReader
srLector = New StreamReader(nombrearchivo)
Dim fila As Integer, col As Integer
Dim cadena As String = ""
Dim subcadena As String
Dim pos As Integer = 0
Dim inicio As Integer = 1
For fila = 0 To nf - 1
cadena = srLector.ReadLine()
cadena = cadena & Chr(9)
inicio = 1
For col = 0 To nc - 1
pos = InStr(inicio, cadena, Chr(9))
subcadena = Mid(cadena, inicio, pos - inicio)
A(fila, col) = CInt(Val(subcadena))
inicio = pos + 1
Next
Next
Console.WriteLine("Archivo leido satisfactoriamente")
srLector.Close()
End Sub
End Module
CODIGO DEL FORMULARIO
Imports System.Drawing
Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
Const maxfilas As Integer = 50
Const maxcol As Integer = 3
Public Nf As Integer = 32

Public Nc As Integer = 3
Public A(maxfilas, 3) As Integer
Dim cont As Integer = 0
Public NombreArchivo As String = "E:\datos\RGB32.txt"
Shared _continue As Boolean
Shared _serialPort As SerialPort
Public Rojo As Integer = 255
Public Verde As Integer = 255
Public Azul As Integer = 10
Public CadRojo As String
Public CadVerde As String
Public CadAzul As String
Public Velocidad As Integer = 500
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "COM4" ' Cambia elbli Puerto
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default
CheckForIllegalCrossThreadCalls = False ' Esta lnea no le gusta mucho
a los
BtnCerrar.Enabled = False
BtnAbrir.Enabled = True
txtMensaje.Text = Velocidad
txtRojo.Text = Rojo
txtVerde.Text = Verde
txtAzul.Text = Azul
txtVelocidad.Text = Velocidad
CadRojo = txtVerde.Text
CadAzul = txtAzul.Text
End Sub
Private Sub BtnCerrar_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles BtnCerrar.Click
SerialPort1.Close()
BtnCerrar.Enabled = False
BtnAbrir.Enabled = True
End Sub
Private Sub btnListar_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles BtnListar.Click
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)

Next
End Sub
Private Sub btnAbrir_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles BtnAbrir.Click
Try
BtnAbrir.Enabled = False
BtnCerrar.Enabled = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
SerialPort1.Open()
End Sub
Private Sub BtnEnviarRGB(ByVal sender As Object, ByVal e As EventArgs)
Handles BtnRojo.Click
CadRojo = "R" & txtRojo.Text
Rojo = Val(txtRojo.Text)
btnMRojo.BackColor = Color.FromArgb(Rojo, 0, 0)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadRojo)
End Sub
Private Sub btnVerde_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnVerde.Click
CadVerde = "V" & txtVerde.Text
Verde = Val(txtVerde.Text)
btnMVerde.BackColor = Color.FromArgb(0, Verde, 0)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadVerde)
End Sub
Private Sub BtnAzul_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnAzul.Click
CadAzul = "A" & txtAzul.Text
Azul = Val(txtAzul.Text)
btnMAzul.BackColor = Color.FromArgb(0, 0, Azul)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadAzul)
End Sub
Private Sub btnDetener_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles btnDetener.Click
Timer1.Stop()
End Sub

Private Sub LeerArchivo_Click(ByVal sender As Object, ByVal e As


EventArgs) Handles LeerArchivo.Click
RecuperarMatriz(NombreArchivo, A, Nf, Nc)
End Sub
Private Sub BtnEjecutar_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles BtnEjecutar.Click
Velocidad = txtVelocidad.Text
Timer1.Interval = Velocidad
Timer1.Start()
End Sub
Private Sub btnMover_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles btnMover.Click
Dim resto1, resto2 As Integer
If Contador < Nf * 3 Then
resto1 = Contador Mod 3
Select Case resto1
Case 0
Rojo = A(cont, 0)
txtRojo.Text = Rojo
CadRojo = "R" + txtRojo.Text
btnMRojo.BackColor = Color.FromArgb(Rojo, 0, 0)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadRojo)
Case 1
Verde = A(cont, 1)
txtVerde.Text = Verde
CadVerde = "V" + txtVerde.Text
btnMVerde.BackColor = Color.FromArgb(0, Verde, 0)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadVerde)
Case 2
Azul = A(cont, 2)
txtAzul.Text = Azul
CadAzul = "A" + txtAzul.Text
btnMAzul.BackColor = Color.FromArgb(0, 0, Azul)
btnMResultado.BackColor = Color.FromArgb(Rojo, Verde, Azul)
SerialPort1.Write(CadAzul)
End Select
Else
Contador = 0
cont = 0
End If
Contador = Contador + 1

resto2 = Contador Mod 3


If resto2 = 0 Then cont = cont + 1
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs)
Handles Timer1.Tick
btnMover_Click(sender, e)
End Sub

7. Visualizacin del funcionamiento del cdigo en visual

8. Conclusiones
Empleando el software Proteus se pudo simular el funcionamiento del
encendido y cambio color de luz de un foco RGB modificando los nmeros del
0 al 255

Se pudo construir el circuito utilizando los materiales necesarios y se consigui


que el foco cambiara de colores de acuerdo a los valores que ingresbamos
Se pudo sincronizar la funcionalidad del arduino con la interface hecha en
visual estudio 2012
Se emple los conocimientos sobre seales en las clases tericas, en la
prctica con el RGB

S-ar putea să vă placă și