Go Down

Topic: Dare un comando al pc da arduino (Read 3816 times) previous topic - next topic

napalm_it

Si fà come ti ha detto nid69ita, io l'ho fatto creando un prog C# in ascolto sulla seriale dove è collegato l'arduino

LoadDuinoUNO

#16
Sep 10, 2015, 05:19 pm Last Edit: Sep 11, 2015, 04:23 pm by LoadDuinoUNO
Ti consiglio Visual Basic, dato che non hai esperienza nel programmare il PC, lo puoi scaricare da qui. Poi una volta installato Visual Basic apri il suo IDE, lo trovi nel Menu Start -> Tutti i Programmi -> Microsoft Visual Studio 2010 Express.
Clicca su crea un nuovo progetto e seleziona Applicazione Console e sostituisci tutto con questo codice:
Code: [Select]
Imports System.IO.Ports ' Importa la libreria di gestione delle porte

Module Module1 'Primo Modulo

    Dim Serial As New SerialPort ' Creo una porta seriale
    Dim PortName As String = "COM3" ' Creo una variabile stringa che contiene la porta seriale

    Sub Main() ' Funzione Main
        'Inizializzo la porta seriale
        Serial.PortName = PortName ' La porta seriale di Arduino è uguale alla variabile PortName
        If Serial.IsOpen Then ' Se la porta seriale di Arduino è in uso
            Serial.Close() ' Chiudi la porta seriale
        End If
        Serial.Open() ' Apro la porta seriale

        While True ' Creo un loop infinito (come la funzione loop() di Arduino)
            Dim x As String = Serial.ReadLine() ' Creo una variabile stringa x che contiene il valore letto dalla seriale

            If x = "a" Then ' Se la variabile 'x' è uguale a "a"
                My.Computer.Audio.Play("percorso_e_nome_file.wav", AudioPlayMode.Background) ' Avvio un audio
            ElseIf x = "b" Then ' Altrimenti Se la variabile 'x' è uguale a "b"
                My.Computer.Audio.Stop() ' Interrompo la riproduzione della audio
            End If

        End While

    End Sub

End Module


I commenti in Visual Basic sono preceduti con un ' (come il // del C o di Arduino). Poi su Arduino carica questo codice:
Code: [Select]
int btnPlay = 8; // Creo una variabile che specifica dove è collocato il bottone Play, per esempio il pin 8
int btnStop = 7; // Creo una variabile che specifica dove è collocato il bottone Stop, per esempio il pin 7

void setup()
{
    Serial.begin(9600); // Inizializzo la seriale
    // Inizializzo i bottoni
    pinMode(btnPlay, INPUT);
    pinMode(btnStop, INPUT);
}

void loop()
{
    int statePlay = digitalRead(btnPlay); // Stato del bottone Play
    int stateStop = digitalRead(btnStop); // Stato del bottone Stop
   
    if (statePlay == HIGH) // Se Play è stato Premuto
    {
        Serial.print("a"); // Invia al PC il carattere "a"
    }
    if (stateStop == HIGH) // Se Stop è stato Premuto
    {
        Serial.print("b"); // Invia al PC il carattere "b"
    }
}


Ovviamente poi modifica lo sketch di Arduino o il programma Visual Basic a tuo piacimento, ricordati però che il tuo file musicale deve essere un file ".wav" perciò se hai un file con un altra estensione ("mp3", "ogg", ecc...) ricordati di convertirlo con un tool adatto (per esempio il sito media.io)

RobertoBochet

Quel codice è esageratamente minimale, non può andare per un programma Windows.

m265

Non saprei come essere più chiaro. Dovresti almeno avere un po' di esperienza in sviluppo per... windows? (immagino). Dalla mia esperienza posso dirti che un linguaggio adatto per lo sviluppo del programma lato PC potrebbe essere Java (un linguaggio estremamente semplice, che garantisce per di piu il cross-platform).
Processing sarebbe la scelta piu semplice, ma non conosco le sue potenzialità a pieno, ma credo che la gestione della riproduzione di suoni sia possibile senza troppi sforzi.
Con C/C++ la storia si complica un po', in quanto non vi sono framework potenti alle spalle di default, va tutto creato da 0, ma sicuramente si troveranno delle librerie sia per la seriale che per la riproduzione dei suoni.
Scegli la tua strada e sperimenta.
Scusate l' ot.
Vorrei capire perché consigli java ad uno che "programma arduino da un anno".
Io che di programmazione ci capisco poco (autodidatta) passare da c# a java a quello che è mi causa un sacco di mal di testa :)

Immagino che programmi arduino in c#, e visto che ormai un po lo mastica perché allora non fare un banale windows form in visual studio?

Lungi da me fare polemiche, sia chiaro, semplice curiosità da ignorante :)

LoadDuinoUNO

Dato che ha Windows e non ha alcuna esperienza di programmazione lato PC volevo consigliarti il Visual Basic per questi motivi:

  • Innanzitutto ha una sintassi semplice
  • Per la documentazione c'è MSDN, lì ci si trova tutto. Poi ci sono anche i tutorial
  • Ci metti due settimane per impararlo (E' anche stato il mio primo linguaggio!)


Quindi può anche usare quel codice. Chissà magari studiandosi un pò il linguaggio potrebbe creare un app Grafica (in Visual Basic Windows Form), sostanzialmente è lo stesso

RobertoBochet

Scusate l' ot.
Vorrei capire perché consigli java ad uno che "programma arduino da un anno".
Io che di programmazione ci capisco poco (autodidatta) passare da c# a java a quello che è mi causa un sacco di mal di testa :)

Immagino che programmi arduino in c#, e visto che ormai un po lo mastica perché allora non fare un banale windows form in visual studio?

Lungi da me fare polemiche, sia chiaro, semplice curiosità da ignorante :)
Semplicemente perché tra i linguaggi di alto livello è uno dei più semplici.
Il passaggio da un linguaggio ad un altro con l'esperienza diventa solo imparare un nuovo formalismo, in particolare il passaggio C# Java dovrebbe risultare molto semplice. Anche per questo un buon percorso di studi dovrebbe prevedere il primo approccio su un linguaggio di basso livello come il C, e poi solo in un secondo momento si inserisco elementi di programmazione ad alto livello.
Gli sketch di Arduino si scrivono in Wiring una variante del C ben lontano dal C#, linguaggio completamente OOP.
Quello che serve a lui è un processo in background non un windows form.
C# e VB.NET possono essere delle valide alternative, in questo caso.
Vorrei sottolineare ancora una volta come sia sbagliato questo approccio al problema. Prima si studia poi si sviluppa.

Go Up