LUKGI (Normal User)
Newbie
Messaggi: 8
Iscritto: 25/04/2017
|
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.
|
|
torn24 (Normal User)
Pro
Messaggi: 156
Iscritto: 04/01/2008
|
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.
|
|
torn24 (Normal User)
Pro
Messaggi: 156
Iscritto: 04/01/2008
|
Ho letto ora che serialprot1.readline() toglie il carattere newline dalla stringa ricevuta, quindi il problema non è quello
Ultima modifica effettuata da torn24 il 27/04/2017 alle 8:46 |
|
LUKGI (Normal User)
Newbie
Messaggi: 8
Iscritto: 25/04/2017
|
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...
|
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
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
|
|
LUKGI (Normal User)
Newbie
Messaggi: 8
Iscritto: 25/04/2017
|
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..
|
|
Snogar (Normal User)
Pro
Messaggi: 145
Iscritto: 09/01/2012
|
Leggo dal codice che il tuo timer si chiama Timer1 ....forse è per questo che non va?
|
|
LUKGI (Normal User)
Newbie
Messaggi: 8
Iscritto: 25/04/2017
|
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 .
|
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
Postato originariamente da 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 . |
Il Timer deve essere su Enabled = True
nel Load metti Timer4.Enabled=True poi Timer4.Start()
nelle proprietà del Timer4 devi settare il tempo del Tick
fai il debug e controlla la stringa ciccio se corrisponde
If ok Then GOTO Avanza else GOTO Inizia
|
|