sábado, 28 de diciembre de 2019

Plantilla conversión de todas las monedas del mundo

Conversión en tiempo real de todas las monedas del mundo en el google calc ( excel )

https://docs.google.com/spreadsheets/d/1J9jMd4nOslEvwEEujjN8dDRMb4Oi6XPsygXh2pVwOtE/edit#gid=1205010498

 En la pagina ajustes se puede ver la conversión de todas las monedas a euros actualizados a día de hoy, es posible cambiar esta conversión a otras monedas en la parte superior (dolares americanos, francos suizos, rublos...)

 En cuanto la pagina  plantilla, sirve para llevar un seguimiento de los gastos de un viaje, el precio se pone en Ud (unidades). Esta Ud se cambiarán a Euros para calcular el gasto total.

Si no selecciona ninguna moneda (columna país /moneda), por defecto una UD se considera un Euro, la tasa de cambio valdrá 1,000
Si se selecciona una moneda la tabla calculará la tasa de cambio (columna Tasa de conversión) de ese día ( columna Fecha) y multiplicara las Ud por la tasa de cambio, el resultado es que en la columna amarilla aparecerán todos los resultados en euros









Moneda TablaEURDia de hoy:2019-12-28










Country NameCodeConversionEvolución PrecioValor Actual
----EUR


Afghanistan AfghaniAFNAFNEUR
0,0114362263
Albania LekALLALLEUR
0,0081948589
Algeria DinarDZDDZDEUR
0,0075002639
Angola KwanzaAOAAOAEUR
0,0018557205
Argentina PesoARSARSEUR
0,01495779
Armenia DramAMDAMDEUR
0,0018662744
Aruba GuilderAWGAWGEUR
0,497512053
Australia DollarAUDAUDEUR
0,624804
Azerbaijan ManatAZNAZNEUR
0,5263991727
Bahamas DollarBSDBSDEUR
0,8949260285
Bahrain DinarBHDBHDEUR
2,373423869
Bangladesh TakaBDTBDTEUR
0,010540945
Barbados DollarBBDBBDEUR
0,4434497522
Belarus RubleBYNBYNEUR
0,4254242125
Belize DollarBZDBZDEUR
0,4442003763
Bermuda DollarBMDBMDEUR
0,8948786
Bhutan NgultrumBTNBTNEUR
0,0125370881
Bolivia BolívianoBOBBOBEUR
0,1296911759
Bosnia and Herzegovina Convertible MarkaBAMBAMEUR
0,5100858133
Botswana PulaBWPBWPEUR
0,084404681
Brazil RealBRLBRLEUR
0,2211415763
Brunei Darussalam DollarBNDBNDEUR
0,6618241133
Bulgaria LevBGNBGNEUR
0,5112131366
Burundi FrancBIFBIFEUR
0,0004747366
Cambodia RielKHRKHREUR
0,0002201423
Canada DollarCADCADEUR
0,6842286
Cape Verde EscudoCVECVEEUR
0,0090273232
Cayman Islands DollarKYDKYDEUR
1,07436619
Chile PesoCLPCLPEUR
0,0011949242
China Yuan RenminbiCNYCNYEUR
0,127902
Colombia PesoCOPCOPEUR
0,0002727755
Communauté Financière Africaine (BCEAO) FrancXOFXOFEUR
0,0015180298
Communauté Financière Africaine (BEAC) CFA Franc BEACXAFXAFEUR
0,0015208685
Comorian FrancKMFKMFEUR
0,002029896
Comptoirs Français du Pacifique (CFP) FrancXPFXPFEUR
0,0083440037
Congo/Kinshasa FrancCDFCDFEUR
0,0005310852
Costa Rica ColonCRCCRCEUR
0,0015758257
Cuba PesoCUPCUPEUR
0,8953779422
Czech Republic KorunaCZKCZKEUR
0,03929012
Denmark KroneDKKDKKEUR
0,1339374912
Djibouti FrancDJFDJFEUR
0,0050292177
Dominican Republic PesoDOPDOPEUR
0,0168178642
East Caribbean DollarXCDXCDEUR
0,3311237849
Egypt PoundEGPEGPEUR
0,0557880017
El Salvador ColonSVCSVCEUR
0,1023299048
Ethiopia BirrETBETBEUR
0,0278952174
Euro Member CountriesEUREUREUR#N/A#N/A
Fiji DollarFJDFJDEUR
0,4143747885
Gambia DalasiGMDGMDEUR
0,0174508307
Georgia LariGELGELEUR
0,3123485428
Ghana CediGHSGHSEUR
0,1569962398
Gibraltar PoundGIPGIPEUR
1,100879653
Guatemala QuetzalGTQGTQEUR
0,1162102773
Guinea FrancGNFGNFEUR
0,0000949977
Guyana DollarGYDGYDEUR
0,004309227
Haiti GourdeHTGHTGEUR
0,009415492
Honduras LempiraHNLHNLEUR
0,0362322742
Hong Kong DollarHKDHKDEUR
0,1149081215
Hungary ForintHUFHUFEUR
0,0030265103
Iceland KronaISKISKEUR
0,0073640884
India RupeeINRINREUR
0,0125284883
Indonesia RupiahIDRIDREUR
0,00006411079
International Monetary Fund (IMF) Special Drawing RightsXDRXDREUR
1,23285277
Iran RialIRRIRREUR
0,0000268463
Iraq DinarIQDIQDEUR
0,0007519988
Israel ShekelILSILSEUR
0,2587595701
Jamaica DollarJMDJMDEUR
0,0067390586
Japan YenJPYJPYEUR
0,008176216
Jordan DinarJODJODEUR
1,261651753
Kazakhstan TengeKZTKZTEUR
0,002348829
Kenya ShillingKESKESEUR
0,0088412305
Korea (South) WonKRWKRWEUR
0,0007709154
Kuwait DinarKWDKWDEUR
2,949029472
Kyrgyzstan SomKGSKGSEUR
0,0128395561
Laos KipLAKLAKEUR
0,0001007179
Lebanon PoundLBPLBPEUR
0,0005926194
Lesotho LotiLSLLSLEUR
0,0637832212
Liberia DollarLRDLRDEUR
0,0047632633
Libya DinarLYDLYDEUR
0,6369242684
Macau PatacaMOPMOPEUR
0,1116444277
Macedonia DenarMKDMKDEUR
0,0162328203
Madagascar AriaryMGAMGAEUR
0,0002475459
Malawi KwachaMWKMWKEUR
0,0012133947
Malaysia RinggitMYRMYREUR
0,2174003
Maldives (Maldive Islands) RufiyaaMVRMVREUR
0,0579361139
Mauritius RupeeMURMUREUR
0,0244824296
Mexico PesoMXNMXNEUR
0,04749509
Moldova LeuMDLMDLEUR
0,0521803711
Morocco DirhamMADMADEUR
0,0932359426
Mozambique MeticalMZNMZNEUR
0,0145701449
Myanmar (Burma) KyatMMKMMKEUR
0,0006023396
Namibia DollarNADNADEUR
0,0637832212
Nepal RupeeNPRNPREUR
0,0078358541
Netherlands Antilles GuilderANGANGEUR
0,531479676
New Zealand DollarNZDNZDEUR
0,5966159563
Nicaragua CordobaNIONIOEUR
0,0262197067
Nigeria NairaNGNNGNEUR
0,0024686305
Norway KroneNOKNOKEUR
0,101476638
Oman RialOMROMREUR
2,32457871
Pakistan RupeePKRPKREUR
0,0057790028
Panama BalboaPABPABEUR
0,8953412522
Papua New Guinea KinaPGKPGKEUR
0,2635872164
Paraguay GuaraniPYGPYGEUR
0,0001380301
Peru SolPENPENEUR
0,2699482909
Philippines PesoPHPPHPEUR
0,0176068706
Poland ZlotyPLNPLNEUR
0,234599
Qatar RiyalQARQAREUR
0,2457782464
Romania LeuRONRONEUR
0,209020553
Russia RubleRUBRUBEUR
0,0144180844
Rwanda FrancRWFRWFEUR
0,0009570893
Saudi Arabia RiyalSARSAREUR
0,2385080378
Serbia DinarRSDRSDEUR
0,0084216165
Seychelles RupeeSCRSCREUR
0,0655993621
Sierra Leone LeoneSLLSLLEUR
0,0000914489
Singapore DollarSGDSGDEUR
0,6618043455
Solomon Islands DollarSBDSBDEUR
0,1078328713
Somalia ShillingSOSSOSEUR
0,0015402384
South Africa RandZARZAREUR
0,0637842217
Sri Lanka RupeeLKRLKREUR
0,0049335176
Sudan PoundSDGSDGEUR
0,0198350826
Suriname DollarSRDSRDEUR
0,1199890811
Swaziland LilangeniSZLSZLEUR
0,0637832212
Sweden KronaSEKSEKEUR
0,0957895145
Switzerland FrancCHFCHFEUR
0,9181779
Taiwan New DollarTWDTWDEUR
0,0297321607
Tajikistan SomoniTJSTJSEUR
0,0923140655
Tanzania ShillingTZSTZSEUR
0,0003894332
Thailand BahtTHBTHBEUR
0,02966746
Tonga Pa'angaTOPTOPEUR
0,3911066921
Trinidad and Tobago DollarTTDTTDEUR
0,1325021686
Tunisia DinarTNDTNDEUR
0,3195427135
Turkey LiraTRYTRYEUR
0,150566546
Turkmenistan ManatTMTTMTEUR
0,2551582565
Uganda ShillingUGXUGXEUR
0,0002443421
Ukraine HryvniaUAHUAHEUR
0,0377807364
United Arab Emirates DirhamAEDAEDEUR
0,2436436029
United Kingdom PoundGBPGBPEUR
1,170665
United States DollarUSDUSDEUR
0,8948786
Uruguay PesoUYUUYUEUR
0,0241840941
Uzbekistan SomUZSUZSEUR
0,0000939998
Viet Nam DongVNDVNDEUR
0,00003872246
Yemen RialYERYEREUR
0,0035745245
Zambia KwachaZMWZMWEUR
0,0644991715
OTROSOTROSOTROSEUR#N/A#N/A

jueves, 13 de diciembre de 2018

Registro Diario de Horas Trabajadas en hoja de Cálculo de Google

Esta plantilla sirve para llevar un registro diario de las horas trabajadas cada mes del año. A partir de introducir las horas entradas y salidas, la hoja calcula las horas extras, plus festivos y plus nocturnidad. También sirve para registrar las dietas y los pluses de trabajar fuera o en el extranjero.










En la primera pagina (Resumen) se configura el año, número de horas de la jornada. Las demás paginas correponden a los 12 meses.



Esta plantilla se ha hecho con la hoja de Cálculo en de Google y necesita acceso a internet. En LibreOfiice, OpenOffice o Excel puede que algunas funciones no vayan bien.


Descargar: Ir a archivo y hacer una copia

https://docs.google.com/spreadsheets/d/1p-TypBjuVP3fnp9YaT8U88Re-62lyoCxyyQDxIdqVD4/edit?usp=sharing



sábado, 30 de abril de 2016

jueves, 19 de marzo de 2015

Detectar colores con Color Sensor (SKU:SEN0101)


Este proyecto esta basado en un sensor de dfrobot  tcs3200, el cual mediante 4 entradas digitales seleccionamos unos filtros. El sensor  produce una salida de onda cuadrada cuya frecuencia es proporcional a la intensidad del filtro elegido.

Mas información: http://www.dfrobot.com/wiki/index.php?title=TCS3200_Color_Sensor_%28SKU:SEN0101%29

Para esto es importante, la iluminación. Por defecto el sensor tiene leds blancos, pero hay que recordar que la luz blanca tiene color rojo, verde y azul, por lo que contamina los datos, además el tipo de material también afectará al resultado.  

Importante la luz no debe incidir directamente en el sensor, también contamina el resultado.

Además en VB al intentar reconstruir el color, siempre habrá un error. En la mayoría de los casos el color será muy diferente al color reconstruido y será mejor guiarse por un canal (por ejemplo el rojo) que por la suma de los tres.





El programa que hecho servir es el mismo programa que hay en la web del fabricante, pero le hecho unos pequeños cambios para poder comunicarme con VB.


Código Arduino modificado:

 int s0=3,s1=4,s2=5,s3=6;
int out=2;
int flag=0;
byte counter=0;
byte countR=0,countG=0,countB=0;
void setup()
 {
 Serial.begin(9600);
 pinMode(s0,OUTPUT);
 pinMode(s1,OUTPUT);
 pinMode(s2,OUTPUT);
 pinMode(s3,OUTPUT);
 
 }
void TCS()
 {
 flag=0; 
 digitalWrite(s1,HIGH);
 digitalWrite(s0,HIGH);
 digitalWrite(s2,LOW);
 digitalWrite(s3,LOW);
 attachInterrupt(0, ISR_INTO, CHANGE);
 timer0_init();
 
 }
void ISR_INTO()
 {
 counter++;
 }
 void timer0_init(void)
{
  TCCR2A=0x00;
  TCCR2B=0x07;   //the clock frequency source 1024 points
  TCNT2= 100;    //10 ms overflow again
  TIMSK2 = 0x01; //allow interrupt
 }
 
 
 int i=0;
 ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function
{
    TCNT2=100;
    flag++;
 if(flag==1)
  {
    countR=counter;
    Serial.print("R");
    if (counter < 100) { Serial.print (0); }
    if (counter < 10) {Serial.print (0); }
    Serial.print(countR,DEC);
    digitalWrite(s2,HIGH);
    digitalWrite(s3,HIGH);
  }
  else if(flag==2)
   {
    countG=counter;
    Serial.print("G");
    if (counter < 100) { Serial.print (0); }
    if (counter < 10) {Serial.print (0); }
    Serial.print(countG,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,HIGH);
   }
   else if(flag==3)
    {
    countB=counter;
    
    Serial.print("B");
    if (counter < 100) { Serial.print (0); }
    if (counter < 10) {Serial.print (0); }
    Serial.print(countB,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);
    
    }
    else if(flag==4)
     {
     Serial.print("\n");
     flag=0;
     }
       counter=0;
     
}
void loop()
 {
  TCS();
while(1);
 }

 En el visual basic leo los datos recibidos, un ejemplo:

R122G131B107
R121G130B106
R121G130B106
R120G131B107
R121G130B106
R121G                  ----Trama incompleta

Mediante las letras R, G y B identifico los valores de cada canal. Para evitar que los valores cambien para cada trama hago servir un timer de 500ms donde cada vez muestro la media de las tramas de cada canal. Para eso hago servir 3 arrays, en este caso la array del canal R tendría 6 valores, mientras que el array del canal G y B 5 valores.

Rojo=(122+121+121+120+121+121)/6= 121
Verde=(131+130+130+131+130)/5= 130
Azul=(107+106+106+107+106)/5= 106



Código del  Timer1 de visual basic:

  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


        Dim cuenta As Integer
        Dim textin As String
        Dim max_muestras As Integer = 100
        Dim roig(max_muestras) As Integer 'Red
        Dim cnt_r As Integer = 0
        Dim verd(max_muestras) As Integer 'Green
        Dim cnt_g As Integer = 0
        Dim blau(max_muestras) As Integer 'blue
        Dim cnt_b As Integer = 0

        textin = SerialPort1.ReadExisting() 'guardo todos los datos del puerto
        cuenta = textin.Length
        TextBox1.Text = TextBox1.Text + textin

        'ejemplo puedo recibir:
        ' R005G200B255
        ' R006G199B255
        ' R006G201
        'Tengo 3 datos del canal rojo, 3 del verde y dos del azul

        For i As Integer = 0 To (cuenta - 1) 'leo los datos
            If (textin(i) = "R") And ((i + 3) <= (cuenta - 1)) Then
                roig(cnt_r) = CInt(textin(i + 1) + textin(i + 2) + textin(i + 3))
                'guardo en un array los datos del canal rojo
                cnt_r = cnt_r + 1 'cuento los datos que tengo en el canal rojo
            End If
            If (textin(i) = "B") And ((i + 3) <= (cuenta - 1)) Then
                verd(cnt_g) = CInt(textin(i + 1) + textin(i + 2) + textin(i + 3))
                cnt_g = cnt_g + 1
            End If
            If (textin(i) = "G") And ((i + 3) <= (cuenta - 1)) Then
                blau(cnt_b) = CInt(textin(i + 1) + textin(i + 2) + textin(i + 3))
                cnt_b = cnt_b + 1
            End If

        Next

        If (cnt_r > 0) Then
            For i As Integer = 0 To cnt_r - 1
                Red = Red + roig(i) ' 5+5+6 =16
            Next
            Red = Red / cnt_r 'Hago una media  16/3= 5
            If Red >= 0 And Red <= 255 Then 'Compruebo qu el resultado es coherente
                lRed.Text = Red
                ProgressBarRed.Value = Red '5
            End If
            cnt_r = 0
        End If
        If (cnt_g > 0) Then
            For i As Integer = 0 To cnt_g - 1
                Green = Green + verd(i)
            Next
            Green = Green / cnt_g 'Hago una media 
            If Green >= 0 And Green <= 255 Then
                lGreen.Text = Green
                ProgressBarGreen.Value = Green
            End If
            cnt_g = 0
        End If
        If (cnt_b > 0) Then
            For i As Integer = 0 To cnt_b - 1
                Blue = Blue + blau(i)
            Next
            Blue = Blue / cnt_b 'Hago una media 
            If Blue >= 0 And Blue <= 255 Then
                lBlue.Text = Blue
                ProgressBarBlue.Value = Blue
            End If
            cnt_b = 0
        End If

        If Red >= 0 And Red <= 255 And Green >= 0 And Green <= 255 And Blue >= 0 And Blue <= 255 Then
            colormuestra.BackColor = Color.FromArgb(Red, Green, Blue)
        End If

    End Sub

Descargar proyecto: http://www.4shared.com/zip/ucIrUOIm/Control_LedRGB.html

martes, 22 de abril de 2014

Arduino controlado por Twitter

Este proyecto es un pequeño desafió que tenia pendiente. Consiste en un programa en Visual Basic que lee datos de una Web y los envía al Arduino. Aunque funciona en cualquier Web (que no haya usuarios y contraseñas), lo he enfocado a Twitter, porque me ha gustado la idea de controlar con tweets una placa de Arduino.

 Esta es la placa a controlar, un Arduino Nano,
tiene 4 salidas digitales con un led en cada una.
Para poder filtrar los tweets, he creado una "palabra a buscar" (una especie de hashtag), en este caso he escogido la palabra "PruebaComunicacionTA". El último tweet que contenga esta palabra, es el que enviara la información al Arduino.





Para este caso he enviado el siguiente tweet:

PruebaComunicacionTA +  0101 + T +005
Palabra a Buscar + Estados leds + T Si se quiere temporizar + tiempo en segundos  (El segundo y cuarto led permanecerán 5 segundos encendidos)

Código Arduino:

 
// By: jsslxs 
// 21 de Abrl del 2014

int led1= 12; 
int led2= 10; 
int led3= 8; 
int led4= 6; 

void setup()
{
   pinMode(led1,OUTPUT); 
   pinMode(led2,OUTPUT); 
   pinMode(led3,OUTPUT);
   pinMode(led4,OUTPUT);   
   Serial.begin(9600); //Inicio puerto serie
}

void loop()
{ 
  if (Serial.available())
  { 
     
    delay(100);  //Espera 100ms    
   
    while  (Serial.available()>0) // ejemplo datos recibidos: 0101
    {
      int cuenta=Serial.available();
      int numser[cuenta]; //matriz de bytes 
      for (int i = 0; i < cuenta; i = i++)   
      {
         numser[i]=  Serial.read();
         //Serial.println(i);
         //Serial.write(numser[i]);         
      }
             
      if (numser[0]== '1'){ digitalWrite( led1, HIGH);}  else { digitalWrite( led1, LOW);} 
      if (numser[1]== '1'){ digitalWrite( led2, HIGH);}  else { digitalWrite( led2, LOW);}
      if (numser[2]== '1'){ digitalWrite( led3, HIGH);}  else { digitalWrite( led3, LOW);} 
      if (numser[3]== '1'){ digitalWrite( led4, HIGH);}  else { digitalWrite( led4, LOW);}
      if (numser[4]== 'T') // Timer, si se introduce una T, al cabo de un tiempo la salidas se podran LOW
      {
        int num0 = numser[5]-'0';    
        int num1 = numser[6]-'0';
        int num2 = numser[7]-'0'; 
        int tiempo= (num0*100+ num1*10 + num2) *1000; // en segundos
        
        delay(tiempo);
        
        digitalWrite( led1, LOW);
        digitalWrite( led2, LOW);
        digitalWrite( led3, LOW);
        digitalWrite( led4, LOW);
      }

    }

    Serial.flush();
 }
}   

 


Aquí la Interfaz:
Los números de caracteres a enviar están limitados a 140 como es en un tweet.
El Timer es el tiempo que tardara en leer el último tweet con la palabra a buscar.

Código Visual Basic:
Imports System.Net

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Conectar.Enabled = False
        Conectar.Visible = True
        Desconectar.Enabled = False
        Desconectar.Visible = False

    End Sub


    Private Sub button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Conectar.Click

        Conectar.Enabled = False
        Conectar.Visible = False
        Desconectar.Enabled = True
        Desconectar.Visible = True

        SerialPort1.BaudRate = ComboBox2.SelectedItem 'Velocidad

        SerialPort1.DataBits = ComboBox5.SelectedItem

        If ComboBox3.Text = "None" Then                 'paridad
            SerialPort1.Parity = IO.Ports.Parity.None
        ElseIf ComboBox3.Text = "Odd" Then
            SerialPort1.Parity = IO.Ports.Parity.Odd
        ElseIf ComboBox3.Text = "Even" Then
            SerialPort1.Parity = IO.Ports.Parity.Even
        ElseIf ComboBox3.Text = "Mark" Then
            SerialPort1.Parity = IO.Ports.Parity.Mark
        ElseIf ComboBox3.Text = "Space" Then
            SerialPort1.Parity = IO.Ports.Parity.Space
        End If


        If ComboBox4.Text = "None" Then                 'stopbits
            SerialPort1.Parity = IO.Ports.StopBits.None
        ElseIf ComboBox4.Text = "OnePointFive" Then
            SerialPort1.Parity = IO.Ports.StopBits.OnePointFive
        ElseIf ComboBox4.Text = "One" Then
            SerialPort1.Parity = IO.Ports.StopBits.One
        ElseIf ComboBox4.Text = "Two" Then
            SerialPort1.Parity = IO.Ports.StopBits.Two
        End If

        SerialPort1.PortName = ComboBox1.SelectedItem

        SerialPort1.Open()
        Timer1.Interval = Tiempo.Value * 1000

        Timer1.Start()

    End Sub

    Private Sub Habilitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Habilitar.Click

        ComboBox1.Items.Clear()
        For Each PuertoDisponible As String In My.Computer.Ports.SerialPortNames
            ComboBox1.Items.Add(PuertoDisponible)
        Next
        If ComboBox1.Items.Count > 0 Then
            ComboBox1.Text = ComboBox1.Items(0)
            Conectar.Enabled = True
            Conectar.Visible = True
        Else
            MessageBox.Show("Ningún puerto encontrado")
            Conectar.Enabled = False
            Conectar.Visible = True
        End If

    End Sub


   
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim n As Integer = 0
        Dim m As Integer = 140
        Dim i As Integer = 0

        n = Len(PalabraAbuscar.Text)
        m = m - n
        NumeroCarac.Maximum = m

        Dim url As WebRequest = WebRequest.Create(Seturl.Text)
        Dim response As WebResponse = url.GetResponse()
        Dim stream As New IO.StreamReader(response.GetResponseStream())

        Urlmostrar.Text = stream.ReadToEnd()

        Dim SearchForThis As String = PalabraAbuscar.Text
        Dim FirstCharacter As Integer = Urlmostrar.Text.IndexOf(SearchForThis)
        num.Text = ""
        While NumeroCarac.Value > i
            num.Text = num.Text & Urlmostrar.Text(FirstCharacter + n + i)
            i = i + 1
        End While
        SerialPort1.Write(num.Text)

    End Sub

    Private Sub Desconectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Desconectar.Click

        Conectar.Enabled = True
        Conectar.Visible = True
        Desconectar.Enabled = False
        Desconectar.Visible = False

        SerialPort1.Close()
        Timer1.Stop()
    End Sub
End Class
 

Descargar proyecto: http://www.4shared.com/zip/ICVVXetfce/Arduino_controlado_por_twitter.html