Oppure

Loading
26/04/17 17:14
LUKGI
salve a tutti . sono da poco iscritto a questo sito ( molto consigliato perche' molto professionale ) e non avendo molta esperienza , ma molto entusiasmo ,chiedevo un aiuto per un progettino che sto' portando avanti . Praticamente quello che sto cercando di realizzare e' questo : collegare arduino con visual studio - premere un pulsante o attivare un sensore su arduino il quale comunica un codice a visual studio che a sua volta compie della azioni su visual studio e di conseguenza attiva i vari rele' di arduino ( spero di essermi spiegato bene ). Diciamo che sono a meta' strada nel senso che riesco a comunicare da arduino a visual , da visual a arduino ( manualmente con pressione di un button ) ma non riesco a creare l'automatismo senza la pressione del button .

in particolare premendo un pulsante su arduino ( pin 12 ) lo porta HIGH , arduino poi comunica a visual studio la variazione di stato ( da low a high ) tramite la porta seriale ( in questo caso comm3 ) . Su visual studio nella text box creata il testo si modifica ( da “spento “a “ acceso “ in base al pulsante premuto su arduino ) Quello che non funziona e' il comando successivo su visual studio :

If ciccio = "acceso" Then
TextBox1.BackColor = Color.Red

cioe' sul text box la variazione della scritta spento e acceso funziona in base alla pressione del pulsante , ma non funziona il successivo comando che e' questo : se nella text box c'e' la parola “acceso “ allora (THEN ) IL COLORE DELLA TEXT BOX E' ROSSO . Spero di essere stato chiaro.
Grazie a chi vuole aiutarmi


ecco i codici che ho usato

ARDUINO


w=digitalRead(12);
if (w==HIGH)
{
Serial.println("acceso";);
delay (100);

}
else
{ Serial.println("spento";);

delay (100);

}
}

VISUAL STUDIO

Dim ciccio As String

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

SerialPort1.Close()
SerialPort1.PortName = "com3"
SerialPort1.Open()


Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
ciccio = SerialPort1.ReadLine

End Sub

Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
TextBox1.Text = ciccio
If ciccio = "acceso" Then
TextBox1.BackColor = Color.Red

End If
End Sub

p.s. chiedo scusa se alcuni termini che uso non sono da addetti ai lavori.:pat:

aaa
27/04/17 6:28
torn24
Ciao, visual studio è un ambiente di sviluppo, un IDE con cui è possibile sviluppare in diversi linguaggi di programmazione.
E' sbagliato dire che vuoi comunicare da arduino a visual studio, dovresti dire che vuoi comunicare da arduino ad un applicazione
in visual basic.net VB.net.

Secondo me il problema potrebbe essere che "acceso" non è "acceso", mi spiego tu in arduino utilizzi Serial.println("acceso";), quindi invii la stringa "acceso" più il carattere nuova riga "acceso\n", per cui il confronto nell'if vb.net non risulta vero perché le due stringhe non sono uguali.

POTRESTI provare a usare in arduino Serial.print("acceso";) al posto di Serial.println("acceso";), in questo modo ti invia i caratteri senza newline.
aaa
27/04/17 6:29
torn24
Ho letto ora che serialprot1.readline() toglie il carattere newline dalla stringa ricevuta, quindi il problema non è quello :d
Ultima modifica effettuata da torn24 27/04/17 6:46
aaa
27/04/17 14:18
LUKGI
Ciao, innanzi tutto grazie per le tue delucidazioni e correzioni per quanto riguarda l'uso della terminologia ( portate pazienza ma sto' imparando ) . per quanto riguarda l'osservazione su provare a togliere /ln sulla seriale inviata avevo gia' provato a farlo come ho provato a mettere un numero es. "1" al posto di " acceso " pensando che le stringhe inviate da arduino a vb.net fossero leggibili solo se contengono numeri ma niente da fare lo stesso . Sembra quasi che la stringa che appare sulla textBox di vb.net che si modifica da " spento " a " acceso " in base alla pressione del pulsante non sia considerata un testo per cui vb.net non la vede , ho provato anche a variare i delay ( arduino ) e il timer (vb.net ) ma niente da fare . Forse c'e' qualche assegnazione particolare da fare alla proprieta' della text box . Oppure qualche comando da digitare in vb.net che non conosco...

aaa
27/04/17 21:28
Ultimo
Postato originariamente da LUKGI:

Ciao, innanzi tutto grazie per le tue delucidazioni e correzioni per quanto riguarda l'uso della terminologia ( portate pazienza ma sto' imparando ) . per quanto riguarda l'osservazione su provare a togliere /ln sulla seriale inviata avevo gia' provato a farlo come ho provato a mettere un numero es. "1" al posto di " acceso " pensando che le stringhe inviate da arduino a vb.net fossero leggibili solo se contengono numeri ma niente da fare lo stesso . Sembra quasi che la stringa che appare sulla textBox di vb.net che si modifica da " spento " a " acceso " in base alla pressione del pulsante non sia considerata un testo per cui vb.net non la vede , ho provato anche a variare i delay ( arduino ) e il timer (vb.net ) ma niente da fare . Forse c'e' qualche assegnazione particolare da fare alla proprieta' della text box . Oppure qualche comando da digitare in vb.net che non conosco...



prima devi attivate il Timer4 con Timer4.Start() nella procedura Load
If ok Then GOTO Avanza else GOTO Inizia

28/04/17 8:57
LUKGI
ciao . ho provato come dici tu mettendo nel load lo start del timer 4 . ma non mi va' . Ho anche provato a mettere in false l'enable del timer 4 ( nelle sue proprieta' ) visto che nel load, il timer , ha lo start. Ma niente da fare..
aaa
28/04/17 14:11
Snogar
Leggo dal codice che il tuo timer si chiama Timer1 ....forse è per questo che non va?
aaa
28/04/17 17:28
LUKGI
Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
TextBox1.Text = ciccio
If ciccio = "acceso" Then
TextBox1.BackColor = Color.Red

ciao corretto il codice come da te indicato giustamente . Ma niente non funziona lo stesso .
aaa