Hola a todos!

Tengo un problema con este programa. Tengo hecho un programa, de un ascensor para peatones, y con un scada en visual basic. El problema es el siguiente, el profesor quiere que predomine el arduino sobre el visual. Es decir, que cuando pulse el botón en arduino pues se cambie el semaforo, y tambien el semaforo del scada. Pues tengo hecho los dos programas, pero no sé que es lo que tengo que añadir en el arduino y en el visual para que esto suceda. Os dejo el Código del arduino:

Código:
//NECESITAMOS 7 LEDS

int ledcarred=2;
int ledcargreen=3;
int ledcarorange=4;
int ledpeatonred=5;
int ledpeatongreen=6;
int ledesperared=7;
int ledpasogreen=8;


void setup()
{
  pinMode(ledcarred,OUTPUT);// SEMAFORO COCHES ROJO
  pinMode(ledcargreen,OUTPUT);//SEMAFORO COCHES VERDE
  pinMode(ledcarorange,OUTPUT);//SEMAFORO COCHES NARANJA
  pinMode(ledpeatonred,OUTPUT);//SEMAFORO PEATONES ROJO
  pinMode(ledpeatongreen,OUTPUT);//SEMAFORO PEATONES VERDE
  pinMode(ledesperared,OUTPUT);//TEXTO PEATONES EN ROJO
  pinMode(ledpasogreen,OUTPUT);//TEXTO PEATONES EN VERDE
  Serial.begin(9600);
}
void loop()
{
  while (Serial.available())
  {
    byte dato = Serial.read();
    switch(dato)
    {
      //los coches pasan, peatones esperan y texto en rojo
      case '1':
      digitalWrite (ledcarred,LOW);
      digitalWrite (ledcargreen,HIGH);
      digitalWrite (ledcarorange,LOW);
      digitalWrite (ledpeatonred,HIGH);
      digitalWrite (ledpeatongreen,LOW);
      digitalWrite (ledesperared,HIGH);
      digitalWrite (ledpasogreen,LOW);
      break;
      //semaforo coches en naranja, peatones esperan y texto en rojo
      case '2':
      digitalWrite (ledcarred,LOW);
      digitalWrite (ledcargreen,LOW);
      digitalWrite (ledcarorange,HIGH);
      digitalWrite (ledpeatonred,LOW);
      digitalWrite (ledpeatongreen,LOW);
      digitalWrite (ledesperared,HIGH);
      digitalWrite (ledpasogreen,LOW);
      break;
      //los coches paran, los peatones pasan y texto en verde
      case '3':
      digitalWrite (ledcarred,HIGH);
      digitalWrite (ledcargreen,LOW);
      digitalWrite (ledcarorange,LOW);
      digitalWrite (ledpeatonred,LOW);
      digitalWrite (ledpeatongreen,HIGH);
      digitalWrite (ledesperared,LOW);
      digitalWrite (ledpasogreen,HIGH);
      break;
      //Bucle paso coches, peaton espera y texto en rojo
      case '4':
      digitalWrite (ledcarred,LOW);
      digitalWrite (ledcargreen,HIGH);
      digitalWrite (ledcarorange,LOW);
      digitalWrite (ledpeatonred,HIGH);
      digitalWrite (ledpeatongreen,LOW);
      digitalWrite (ledesperared,HIGH);
      digitalWrite (ledpasogreen,LOW);
      break;
    }
  }
}
Y aquí os dejo el código del Visual:

Código:
Imports System.IO
Imports System.IO.Ports
Imports System.Threading

Public Class Form1
    Shared _continue As Boolean
    Shared _serialPort As SerialPort
    'Uso la varible x para crear un contador de pulsos
    Dim x As Integer
    'uso una variable z para paso de inicio
    Dim z As Integer


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

        'Abrimos el Puerto de comunicacion con el arduino
        SerialPort1.Close()
        SerialPort1.PortName = "com7"
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default 'very important!!
        

        'Propongo condiciones iniciales de los semaforos
        'caso 1: propongo condiciones de arranque
        'SerialPort1.Open()
        'SerialPort1.Write("1")
        'SerialPort1.Close()
        ovalcarnar1.BackColor = Color.Gray
        ovalcarnar2.BackColor = Color.Gray
        ovalcarrojo1.BackColor = Color.Gray
        ovalcarrojo2.BackColor = Color.Gray
        ovalcarverd1.BackColor = Color.Green
        ovalcarverde2.BackColor = Color.Green
        ovalpeatrojo1.BackColor = Color.Red
        ovalpeatrojo2.BackColor = Color.Red
        ovalpeatverde1.BackColor = Color.Gray
        ovalpeatverde2.BackColor = Color.Gray
        txtespera1.BackColor = Color.Red
        txtespera1.Text = "ESPERA VERDE"
        txtespera2.BackColor = Color.Red
        txtespera2.Text = "ESPERA VERDE"

    End Sub

    Private Sub btnpulscruzar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpulscruzar1.Click
        'Despues de pulsar para cruzar boton 1 cambio estado de semaforos
        z = 0
        z = z + 1
        If z > 1 Then
            Timer3.Start()

        End If
        Timer3.Start()

    End Sub

    Private Sub btnpulscruzar2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpulscruzar2.Click
        'Despues de pulsar para cruzar boton 1 cambio estado de semaforos
        z = 0
        z = z + 1
        If z > 1 Then
            Timer3.Start()

        End If
        Timer3.Start()
    End Sub

    Private Sub btninicio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninicio.Click
        'Creo un boton de inicio para retrocer los coches y los peatonesde forma manual y restaurar los semaforos igual que a inicio
        niños.Top = niños.Top - 100
        ancianos.Top = ancianos.Top + 100

        movecarder.Left = movecarder.Left - 100
        movecarizq.Left = movecarizq.Left + 100
        ovalcarnar1.BackColor = Color.Gray
        ovalcarnar2.BackColor = Color.Gray
        ovalcarrojo1.BackColor = Color.Gray
        ovalcarrojo2.BackColor = Color.Gray
        ovalcarverd1.BackColor = Color.Green
        ovalcarverde2.BackColor = Color.Green
        ovalpeatrojo1.BackColor = Color.Red
        ovalpeatrojo2.BackColor = Color.Red
        ovalpeatverde1.BackColor = Color.Gray
        ovalpeatverde2.BackColor = Color.Gray
        txtespera1.BackColor = Color.Red
        txtespera1.Text = "ESPERA VERDE"
        txtespera2.BackColor = Color.Red
        txtespera2.Text = "ESPERA VERDE"
        Timer3.Stop()

    End Sub

    Private Sub btnavanzacoche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnavanzacoche.Click
        'Boton manual para mover los coches, idependietemente del estado de los semaforos
        movecarder.Left = movecarder.Left + 30
        movecarizq.Left = movecarizq.Left - 30
        
    End Sub

    'Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    'Si el semaforo de los coches esta en verde, hago pasar los coches
    'If ovalcarverd1.BackColor = Color.Green Then
    'x = 1
    'x = x + 1
    'If x > 0 Then

    'movecarder.Left = movecarder.Left + 10
    'movecarizq.Left = movecarizq.Left - 10
    'If x > 100 Then
    'movecarder.Left = -100
    'movecarizq.Left = +100
    'End If
    'End If
    'End If

    'End Sub

    'Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    'Si el semaforo de peaotones esta en verde, hago gruzar a los peatones
    'If ovalpeatverde1.BackColor = Color.Green Then
    'niños.Top = niños.Top + 10
    'ancianos.Top = ancianos.Top - 10
    'End If
    'End Sub

    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick

        'Caso 2: pongo la intermitencia de los coches
        'SerialPort1.Open()
        'SerialPort1.Write("2")
        'SerialPort1.Close()

        'pongo las luces naranjas paa los coches
        ovalcarnar1.BackColor = Color.Orange
        ovalcarnar2.BackColor = Color.Orange
        ovalcarrojo1.BackColor = Color.Gray
        ovalcarrojo2.BackColor = Color.Gray
        ovalcarverd1.BackColor = Color.Gray
        ovalcarverde2.BackColor = Color.Gray
        If ovalcarnar1.BackColor = Color.Orange Then
            movecarder.Left = movecarder.Left + 10
            movecarizq.Left = movecarizq.Left - 10
        End If

        Timer3.Stop()
        Timer4.Start()
    End Sub

    Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick

        'Caso 3: Pongo en verde las luces de los peatones
        'SerialPort1.Open()
        'SerialPort1.Write("3")
        'SerialPort1.Close()


        'Pongo lud en verde para los peatones y rojo para los coches
        ovalcarnar1.BackColor = Color.Gray
        ovalcarnar2.BackColor = Color.Gray
        ovalcarrojo1.BackColor = Color.Red
        ovalcarrojo2.BackColor = Color.Red
        ovalcarverd1.BackColor = Color.Gray
        ovalcarverde2.BackColor = Color.Gray
        ovalpeatrojo1.BackColor = Color.Gray
        ovalpeatrojo2.BackColor = Color.Gray
        ovalpeatverde1.BackColor = Color.Green
        ovalpeatverde2.BackColor = Color.Green
        txtespera1.BackColor = Color.Green
        txtespera1.Text = "PUEDES CRUZAR"
        txtespera2.BackColor = Color.Green
        txtespera2.Text = "PUEDES CRUZAR"
        Timer4.Stop()

    End Sub
End Class
Un saludo y gracias