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
{
[Link](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);
[Link](VRojo);
[Link](VVerde);
[Link](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 [Link]
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 = [Link]()
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
[Link]("Archivo leido satisfactoriamente")
[Link]()
End Sub
End Module
CODIGO DEL FORMULARIO
Imports [Link]
Imports [Link]
Imports [Link]
Imports [Link]
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\[Link]"
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 [Link], ByVal e As
[Link]) Handles [Link]
[Link]()
[Link] = "COM4" ' Cambia elbli Puerto
[Link] = 9600
[Link] = 8
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
CheckForIllegalCrossThreadCalls = False ' Esta lnea no le gusta mucho
a los
[Link] = False
[Link] = True
[Link] = Velocidad
[Link] = Rojo
[Link] = Verde
[Link] = Azul
[Link] = Velocidad
CadRojo = [Link]
CadAzul = [Link]
End Sub
Private Sub BtnCerrar_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles [Link]
[Link]()
[Link] = False
[Link] = True
End Sub
Private Sub btnListar_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles [Link]
For Each sp As String In [Link]
[Link](sp)
Next
End Sub
Private Sub btnAbrir_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles [Link]
Try
[Link] = False
[Link] = True
Catch ex As Exception
MsgBox([Link])
End Try
[Link]()
End Sub
Private Sub BtnEnviarRGB(ByVal sender As Object, ByVal e As EventArgs)
Handles [Link]
CadRojo = "R" & [Link]
Rojo = Val([Link])
[Link] = [Link](Rojo, 0, 0)
[Link] = [Link](Rojo, Verde, Azul)
[Link](CadRojo)
End Sub
Private Sub btnVerde_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
CadVerde = "V" & [Link]
Verde = Val([Link])
[Link] = [Link](0, Verde, 0)
[Link] = [Link](Rojo, Verde, Azul)
[Link](CadVerde)
End Sub
Private Sub BtnAzul_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
CadAzul = "A" & [Link]
Azul = Val([Link])
[Link] = [Link](0, 0, Azul)
[Link] = [Link](Rojo, Verde, Azul)
[Link](CadAzul)
End Sub
Private Sub btnDetener_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles [Link]
[Link]()
End Sub
Private Sub LeerArchivo_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles [Link]
RecuperarMatriz(NombreArchivo, A, Nf, Nc)
End Sub
Private Sub BtnEjecutar_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles [Link]
Velocidad = [Link]
[Link] = Velocidad
[Link]()
End Sub
Private Sub btnMover_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles [Link]
Dim resto1, resto2 As Integer
If Contador < Nf * 3 Then
resto1 = Contador Mod 3
Select Case resto1
Case 0
Rojo = A(cont, 0)
[Link] = Rojo
CadRojo = "R" + [Link]
[Link] = [Link](Rojo, 0, 0)
[Link] = [Link](Rojo, Verde, Azul)
[Link](CadRojo)
Case 1
Verde = A(cont, 1)
[Link] = Verde
CadVerde = "V" + [Link]
[Link] = [Link](0, Verde, 0)
[Link] = [Link](Rojo, Verde, Azul)
[Link](CadVerde)
Case 2
Azul = A(cont, 2)
[Link] = Azul
CadAzul = "A" + [Link]
[Link] = [Link](0, 0, Azul)
[Link] = [Link](Rojo, Verde, Azul)
[Link](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 [Link]
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