Arduino Forum

International => Italiano => Hardware => Topic started by: 0v3rl04d on Sep 16, 2014, 05:39 pm

Title: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: 0v3rl04d on Sep 16, 2014, 05:39 pm
Ciao a tutti,

sto scegliendo la scheda Arduino per il mio progetto e sto pian piano arrivando alla conclusione che probabilmente la più adatta alle mie esigenze potrebbe essere Arduino Yun.

In pratica io ho un script in C che devo poter eseguire su Linux ( il classico $./script.sh ) e l'output di questo script, che saranno delle variabili int o float, devo poterle inviare alla parte Arduino, per poter controllare degli attuatori.

Leggendo in giro mi sembra di aver capito che è una cosa fattibile, ma vorrei avere il parere di gente che ne sa più di me e magari avere un esempio pratico di come poter procedere.

Grazie a tutti.
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: Martinix on Sep 16, 2014, 06:02 pm
è piu un problema software questo...

ad ogni modo si si può fare, ricordando però che sulla seriale viaggiano solo stringhe, ovvero il numero in 45 sulla seriale equivale ad una stringa ( se fai 45+ 2 = 452 e non 47!!!) quindi quando su arduino ricevi il la stringa 234 dovarai convertirla in numero.

ci son gia le funzioni che lo fanno (AOI o roba del genere ora mi sfugge).

pardon ATOI (la memoria orami è andarata)
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: astrobeed on Sep 16, 2014, 06:08 pm

Leggendo in giro mi sembra di aver capito che è una cosa fattibile, ma vorrei avere il parere di gente che ne sa più di me e magari  avere un esempio pratico di come poter procedere.


Sulla Yun la parte Arduino dialoga con la parte Linux tramite seriale, questo vuol dire che il tuo script (da quando i .sh si scrivono in C ?) deve essere in grado di dialogare con la TTy, la vedo dura farlo con uno script bash, è meglio se usi Python.
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: Martinix on Sep 16, 2014, 06:10 pm


Leggendo in giro mi sembra di aver capito che è una cosa fattibile, ma vorrei avere il parere di gente che ne sa più di me e magari  avere un esempio pratico di come poter procedere.


Sulla Yun la parte Arduino dialoga con la parte Linux tramite seriale, questo vuol dire che il tuo script (da quando i .sh si scrivono in C ?) deve essere in grado di dialogare con la TTy, la vedo dura farlo con uno script bash, è meglio se usi Python.


concordo, con python è davvero molto semplice :)
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: Martinix on Sep 16, 2014, 06:19 pm
un piccolo esempio può essere questo

Code: [Select]
void loop()
{
char Stringa[20]={0};
int Indice = 0;
int Index = 0;
int Rif1 = 0;
int Rif2 = 0;
int Rif3 = 0;
int Direzione = 0;
int Velocita = 0;
int Passi = 0;
bool Flag = false;

if (Serial.available())
{
char Buffer = Serial.read();
Stringa[Indice++] = Buffer;
Index = Indice;
if (Stringa[Indice-1] =='@')
{
Flag = true;
Serial.println(Stringa);
}
}
if (Flag == true)
{
Indice = 0;
for (int l; l< Index;l++)
{
if(Stringa[l] == '&')
Rif1 = l;
if (Stringa[l] == '#')
Rif2 = l;
if (Stringa[l] == '@')
Rif3 = l;

Direzione = Conv(Stringa);
Serial.println (Direzione);
}
}
}

int Conv(char *array, int R1=0, int R2=3)
{
int Cont = 0;
int Numero = 0;
char Ax[6]= {0};
for (; R1 < R2; R1++)
Ax[Cont++] = array[R1];
Numero = atoi(Ax);
return Numero;
}


dalla seriale arriva una stringa per esempio 45&123#999@

il programma scinde la stringa in 45  123   999 e li converte in numeri.. forse si upò fare meglio (nazi sicuro) ma era un esperimento.
la stringa viene generata in python
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: 0v3rl04d on Sep 16, 2014, 07:33 pm


Leggendo in giro mi sembra di aver capito che è una cosa fattibile, ma vorrei avere il parere di gente che ne sa più di me e magari  avere un esempio pratico di come poter procedere.


Sulla Yun la parte Arduino dialoga con la parte Linux tramite seriale, questo vuol dire che il tuo script (da quando i .sh si scrivono in C ?) deve essere in grado di dialogare con la TTy, la vedo dura farlo con uno script bash, è meglio se usi Python.


Non esistono script C in .sh XD Svista ^__^

Cmq lo script deve essere in C preferibilmente perchè convertirlo in Python potrebbe essere un problema a meno che non uso Python per la comunicazione e basta.


un piccolo esempio può essere questo

Code: [Select]
void loop()
{
char Stringa[20]={0};
int Indice = 0;
int Index = 0;
int Rif1 = 0;
int Rif2 = 0;
int Rif3 = 0;
int Direzione = 0;
int Velocita = 0;
int Passi = 0;
bool Flag = false;

if (Serial.available())
{
char Buffer = Serial.read();
Stringa[Indice++] = Buffer;
Index = Indice;
if (Stringa[Indice-1] =='@')
{
Flag = true;
Serial.println(Stringa);
}
}
if (Flag == true)
{
Indice = 0;
for (int l; l< Index;l++)
{
if(Stringa[l] == '&')
Rif1 = l;
if (Stringa[l] == '#')
Rif2 = l;
if (Stringa[l] == '@')
Rif3 = l;

Direzione = Conv(Stringa);
Serial.println (Direzione);
}
}
}

int Conv(char *array, int R1=0, int R2=3)
{
int Cont = 0;
int Numero = 0;
char Ax[6]= {0};
for (; R1 < R2; R1++)
Ax[Cont++] = array[R1];
Numero = atoi(Ax);
return Numero;
}


dalla seriale arriva una stringa per esempio 45&123#999@

il programma scinde la stringa in 45  123   999 e li converte in numeri.. forse si upò fare meglio (nazi sicuro) ma era un esperimento.
la stringa viene generata in python


L'importante è che si possa fare la cosa.

Quindi in questo modo riesco a mandare l'output a controller arduino... Appena ho tempo mi guardo il codice che mi hai scritto e commento.

Per ora grazie mille
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: astrobeed on Sep 16, 2014, 09:05 pm

Non esistono script C in .sh XD Svista ^__^

Cmq lo script deve essere in C preferibilmente


Errare humanum est, perseverare autem diabolicum.  :)
Non esistono script in C, al limite esistono interpreti per il C, comunque molto limitati, vanno installati appositamente e il programma, perché non è uno script, viene aggiunto come opzione al comando di avvio dell'interprete, una cosa del tipo "./Cinterprete mioprogramma.c"
In tutti i casi sullla Yun non puoi installare un inteprete C, puoi solo usare il classico script bash, programmi Python e programmi compilati con gcc che va preventivamente installato, in modo abbastanza difficoltoso, sulla Yun, oppure devi fare cross compiling  gcc su un pc Linux.



Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: 0v3rl04d on Sep 16, 2014, 09:15 pm


Non esistono script C in .sh XD Svista ^__^

Cmq lo script deve essere in C preferibilmente


Errare humanum est, perseverare autem diabolicum.  :)
Non esistono script in C, al limite esistono interpreti per il C, comunque molto limitati, vanno installati appositamente e il programma, perché non è uno script, viene aggiunto come opzione al comando di avvio dell'interprete, una cosa del tipo "./Cinterprete mioprogramma.c"
In tutti i casi sullla Yun non puoi installare un inteprete C, puoi solo usare il classico script bash, programmi Python e programmi compilati con gcc che va preventivamente installato, in modo abbastanza difficoltoso, sulla Yun, oppure devi fare cross compiling  gcc su un pc Linux.






Cross-compiling tramite ssh?
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: astrobeed on Sep 16, 2014, 09:21 pm

Cross-compiling tramite ssh?


Il cross compiling lo fai dove ti pare, poi trasferisci l'eseguibile sulla yun tramite ssh.
Title: Re: Arduino Yun - Inviare output script in C da Linino a Arduino
Post by: 0v3rl04d on Sep 17, 2014, 05:58 pm


Cross-compiling tramite ssh?


Il cross compiling lo fai dove ti pare, poi trasferisci l'eseguibile sulla yun tramite ssh.


Perfetto, tanto la compilazione fatta una volta dovrà essere fatta raramente.

Ottimo!