Arduino Forum

International => Italiano => Generale => Topic started by: 00cicciuzzo00 on Aug 31, 2015, 09:51 pm

Title: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Aug 31, 2015, 09:51 pm
Ciao a tutti vi sto scrivendo perchè mi serve aiuto per quanto riguarda dare un comando al pc da arduino.
Quello che voglio fare è che quando premo un pulsante arduino fa riprodurre un suono al pc,questo metodo dovrà funzionare con diversi pulsanti e quindi il pc dovrà riprodurre anche più suoni allo stesso tempo,inoltre non parlo di semplici frequenze ma di veri e propri suoni come quelli di un piano.
Vi prego aiutatemiii.
Title: Re: Dare un comando al pc da arduino
Post by: cyberhs on Sep 01, 2015, 02:30 am
Se devi usare per forza il PC, Arduino può diventare un controller MIDI.

Con un opportuno programma per PC, puoi generare tutte le note che vuoi.

http://www.robotstore.it/product/370/Shield-MIDI-(Arduino-compatibile).html (http://www.robotstore.it/product/370/Shield-MIDI-(Arduino-compatibile).html)
Title: Re: Dare un comando al pc da arduino
Post by: RobertoBochet on Sep 01, 2015, 02:31 am
Beh, dalla parte Arduino è molto facile, apri una comunicazione seriale verso il pc e invii dei dati al momento della pressione di un tasto.
Sul PC dovrà essere in ascolto sulla stessa seriale un programma che al ricevimento del dato eseguirà il suono corrispondente.
Ora, hai qualche esperienza di programmazione per PC?
Title: Re: Dare un comando al pc da arduino
Post by: nid69ita on Sep 01, 2015, 09:23 am
Ciao a tutti 
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni (http://forum.arduino.cc/index.php?topic=113640.0)
e a leggere il regolamento se non lo hai già fatto: Regolamento (http://forum.arduino.cc/index.php?topic=149082.0)
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections (http://forum.arduino.cc/index.php?topic=146152.0)
- qui le pinout delle varie schede by xxxPighi: Pinout (http://forum.arduino.cc/index.php?topic=151646.0)
- qui una serie di link generali utili: Link Utili (http://forum.arduino.cc/index.php?topic=126861.0)
Title: Re: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Sep 01, 2015, 11:34 am
Ringrazio tutti per la risposta,come livello di programmazione è da poco piu di un anno che programmo con arduino ma non sono un esperto.Mi avete parlato di un programma per pc che deve essere in ascolto della seriale di arduino e che riproduce le note alla pressione del tasto.Mi potete spiegare meglio?GRAZIE.
Title: Re: Dare un comando al pc da arduino
Post by: RobertoBochet on Sep 01, 2015, 12:33 pm
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.
Title: Re: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Sep 01, 2015, 12:51 pm
Grazie per la risposta.Comunque credo che per me sia un po troppo difficile programmare windows per fare il mio progetto credo che per me l'unica soluzione sarebbe quella di prendere uno shield aggiuntivo per arduino come LPM11162.

Volevo chiedervi anche una curiosità.Girando su internet ho visto gente che riuscivano a fare questo https://www.youtube.com/watch?v=LTew_CokmWs
Ora io so come fare un capacitive sensor e come far suonare il buzzer al tocco ma non capisco come faccia a funzionare con carta e matita dato che non sono materiali conduttivi come alluminio o altro.
Come fanno?
Title: Re: Dare un comando al pc da arduino
Post by: RobertoBochet on Sep 01, 2015, 01:36 pm
non capisco come faccia a funzionare con carta e matita dato che non sono materiali conduttivi come alluminio o altro.
Ah no?!
Grafite (https://it.wikipedia.org/wiki/Grafite)
Title: Re: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Sep 01, 2015, 02:48 pm
io ci ho provato ma non funziona.Uso una resistenza da 10 kohm
Title: Re: Dare un comando al pc da arduino
Post by: napalm_it on Sep 01, 2015, 04:34 pm
Cicciuzzo in pratica vuoi che schiacciato un bottone, oppure letto un valore X o altro, l'arduino mando in comando a windows e windows esegua un suono?
Title: Re: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Sep 01, 2015, 05:20 pm
Si è proprio quello che voglio fare.Mi puoi spiegare come posso fare?

Title: Re: Dare un comando al pc da arduino
Post by: nid69ita on Sep 02, 2015, 11:18 am
Normalmente lo si fa con la comunicazione su seriale. Arduino Uno lo colleghi tramite USB quindi anche la comunicazione seriale è già fatta.
Lato PC devi sviluppare un programma che legga da seriale comandi inviati da Arduino.
Alcuni usano Processing, un IDE/linguaggio per PC da cui è in parte derivato l'IDE di Arduino.
Devi installare Processing su PC e poi cercare esempi per Processing che comunica con Arduino. Dovrai stabilire dei "comandi" ovvero delle frasi da spedire da Arduino a PC/Processing in ascolto sulla seriale. Esempi da Arduino Serial.println("PLAY01");     oppure  Serial.println("STOP");
http://forum.processing.org/one/topic/sending-data-from-arduino-to-processing-serially.html
https://learn.sparkfun.com/tutorials/connecting-arduino-to-processing

Poi come suonare da Processing non sò, ma non penso sia difficile.
P.S. occhio alle versioni di Processing. Di solito si usa la 2.x  perchè la 3.x è in beta.
Title: Re: Dare un comando al pc da arduino
Post by: simonenascivera on Sep 02, 2015, 11:37 am
comunque basta un qualsiasi programma scritto con qualsiasi linguaggio (C, c++, java) includendo la libreria pr la gestione della seriale e fatto girare in background
Title: Re: Dare un comando al pc da arduino
Post by: 00cicciuzzo00 on Sep 02, 2015, 11:58 am
Finalmente capisco qualcosa di più. Allora poveró a fare un programma per far suonare note quando viene mandata sul seriale una parola.Grazie milleee
Title: Re: Dare un comando al pc da arduino
Post by: simonenascivera on Sep 02, 2015, 12:12 pm
come già detto, puoi farlo con processing con un c-like e poi lo compili come .exe
Title: Re: Dare un comando al pc da arduino
Post by: napalm_it on Sep 03, 2015, 10:24 am
Si fà come ti ha detto nid69ita, io l'ho fatto creando un prog C# in ascolto sulla seriale dove è collegato l'arduino
Title: Re: Dare un comando al pc da arduino
Post by: LoadDuinoUNO on Sep 10, 2015, 05:19 pm
Ti consiglio Visual Basic, dato che non hai esperienza nel programmare il PC, lo puoi scaricare da qui (http://download.html.it/page/download/?sw=2990). 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 (http://media.io))
Title: Re: Dare un comando al pc da arduino
Post by: RobertoBochet on Sep 10, 2015, 11:13 pm
Quel codice è esageratamente minimale, non può andare per un programma Windows.
Title: Re: Dare un comando al pc da arduino
Post by: m265 on Sep 10, 2015, 11:35 pm
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 :)
Title: Re: Dare un comando al pc da arduino
Post by: LoadDuinoUNO on Sep 11, 2015, 03:18 pm
Dato che ha Windows e non ha alcuna esperienza di programmazione lato PC volevo consigliarti il Visual Basic per questi motivi:



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
Title: Re: Dare un comando al pc da arduino
Post by: RobertoBochet on Sep 12, 2015, 01:20 pm
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.