come far comunicare app windows con arduino uno

vorrei fare un app che accenda un led con arduino ma non ho la scheda wifi per arduino quindi il tramite dovrà essere la normale usb , quindi come faccio a creare un app in grado di cominicare con arduino in c++ ?? avete qualche esempio o tutorial io non saprei proprio come fare ad inviare le informazioni da un app in c++ ad arduino

grazie in anticipo

non è molto difficile, anzi è più semplice di quanto sembra..il consiglio che ti do è lascia stare c++ e vai su c# troverai molti esempi anche su google..in c# devi utilizzare la seriale e comunicare con la porta com dell'arduino una volta connesso..

Qualsiasi linguaggio che permetta di usare la seriale. VB, C, C++, C#, Java, Processing, etc. Poi il protocollo ovvero i dati che spedisci/ricevi su seriale e che permettono di far dialogare il tuo programma ed Arduino, dipende da te. Programma su PC e su Arduino devono capire e interpretare i comandi che tu stabilisci. Esempio il protocollo stabilisce che L01A vuol dire L=led 01=numero 1 A=accendi L01S=spegni il led numero 1. Arduino deve accendere/spegnere il led giusto in base a questo comando che riceve.

P.S. Processing alla fine è Java

La cosa piú semplice é processing e la libreria firmata. Ciao Uwe

ok sapreste dove posso trovare un esempio gia fatto cosi da farmi un idea ? , possibilmente in c++ io di solito uso il dev c++ come copilatore va bene ?

Ripeto, qualsiasi linguaggio/IDE che permetta di usare la seriale.

Un esempio ho trovato questo: http://salilkapur.wordpress.com/2013/03/08/communicating-with-arduino-using-c/ Esempio per Linux perciò il nome della Seriale (vista come un file) è tty... mentre in Windows è COMxx dove xx è un numero

posso conpilarlo col dev c++ ?

l'ho compilato correttamente ma nn fa nulla

Si, a me risulta mancante la sleep, fatta come funzione, cosi:

#include <iostream>
#include <time.h>

using namespace std;
time_t now, later;
 
void sleep(int delay)
{ now=time(NULL);
  later=now+delay;
  while(now<=later)now=time(NULL);
}

int main(int argc, char *argv[])
{
    int data[] = {10,5,13};  //Random data we want to send
    FILE *file;
    file = fopen("COM1","w");  //Opening device file
    int i = 0;
    for(i = 0 ; i < 3 ; i++)
    { printf("Invio numero %d\n",i);
      fprintf(file,"%d",data[i]); //Writing to the file
      fprintf(file,"%c",','); //To separate digits
      sleep(1);
    }
    fclose(file);
    system("PAUSE");   // aspetta pausa
    return EXIT_SUCCESS;
}

In pratica spedisce “10,5,13,”

con il tuo listato invia 3 numeri , ma non ho ancora capito cosa ci fa arduino ? e poi non dovrebbe restituire qualcosa in cambio ? il tuo listato apre un file com5 ma in quello dell'esempio è ad esempio " /dev/COM5"

Non è che te lo scrivo io il programma. XD Hai visto il link in inglese precedente? Questo codice manda dei dati ad Arduino. Su Arduino ci deve essere caricato lo sketch con il codice di quel link.

I due comunicano, perciò un programma gira su PC (questo) e uno su Arduino e tramite seriale si mandano dei dati. In questo esempi da PC -> Arduino. Per ricevere da PC userai la fread(). Da PC la seriale è come un file.

io su arduino uno ho caricato lo sketch del link e ho letto in quel listato che dovrebbe dare un numero in out nella console di arduino

Hai settato lato PC la seriale giusta?

file = fopen("COM1","w");

Qui indico COM1. Arduino su che porta è ?

Anziché sviluppare il colloquio a basso livello, posso consigliare di usare la mia libreria Java Ardulink. In questo modo puoi concentrarti solo su quello che ti serve veramente.

www.ardulink.org

Fammi sapere magari ho anche qualche esempio.

@nid69ita mi invia i numeri 0 ,1 ,2 , la mia porta e la com5 e l'avevo gia cambiata nel programma ma nonostante questo arduino nn fa nulla , xk ?

Posta il tuo sketch che hai caricato in Arduino. Tieni conto che ad Arduino non interessa da dove arrivano i dati. :D Puoi anche aprire il Monitor Seriale dell'IDE e scrivere li i valori da mandare ad Arduino, che deve rispondere sempre nel Monitor Seriale, altrimenti c'e' qualche cosa di errato nello sketch Arduino.

per quanto riguarda ardulink non ho capito proprio come funziona

questo è ciò che ho caricato su arduino

int input,num;
int buff[5];
int j=-1;
void setup()
{
    Serial.begin(9600);
}
 
int calc()
{
    int num=0,x=0;
 
    for(x;x<=j;x++)
          num=num+(buff[x]-48)*pow(10,j-x);
 
    return num;
}
 

 
void loop()
{
    if(Serial.available()>0)
    {
        input=Serial.read();
 
        if(input==',')
        {
            num=calc();
            j=-1;
            Serial.println(num);
        }
        else
        {
            j++;
            buff[j]=input;
        }
    }
}

e questo cio che ho fatto compliare in c++ a dev c++

#include <iostream>
#include <time.h>

using namespace std;
time_t now, later;
 
void sleep(int delay)
{ now=time(NULL);
  later=now+delay;
  while(now<=later)now=time(NULL);
}

int main(int argc, char *argv[])
{
    int data[] = {10,5,13};  //Random data we want to send
    FILE *file;
    file = fopen("COM5","w");  //Opening device file
    int i = 0;
    for(i = 0 ; i < 3 ; i++)
    { printf("Invio numero %d\n",i);
      fprintf(file,"%d",data[i]); //Writing to the file
      fprintf(file,"%c",','); //To separate digits
      sleep(1);
    }
    fclose(file);
    system("PAUSE");   // aspetta pausa
    return EXIT_SUCCESS;
}

il problema è comunque che ad arduino non arriva nulla perchè il led tx ed rx non lampeggiano mai solo l(pin13) è sempre acceso

Su Arduino, aggiungiamo un pò di print() altrimenti non si capisce nulla (ho anche tolto un pò di spazi).

int input,num,buff[5],j=-1;
void setup()
{ Serial.begin(9600);
  Serial.println("1.setup");
}
 
int calc()
{ int num=0,x=0;
  for(x;x<=j;x++)
  { num=num+(buff[x]-48)*pow(10,j-x);
  }
  return num;
}
  
void loop()
{ if(Serial.available()>0)
  { input=Serial.read();
    Serial.print("char: "); Serial.println((char)input);
    if(input==',')
    { //num=calc();
      j=-1;
      //Serial.println(num);
    }
    else
    { j++;
      buff[j]=input;
    }
  }
}

E non facciamogli fare quel calcolo del cavolo. Quello è un esempio in internet, non è detto che funzioni.
Ora qualcosa deve stampare sul monitor.