Go Down

Topic: Arduino Yun - Inviare output script in C da Linino a Arduino (Read 2238 times) previous topic - next topic

0v3rl04d

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.

Martinix

#1
Sep 16, 2014, 06:02 pm Last Edit: Sep 16, 2014, 06:06 pm by Martinix Reason: 1
è 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)
Le informazioni date, son suggerimenti, osservazioni, ma come le applicate è a vostro rischio e pericolo!

astrobeed


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.
Scientia potentia est

Martinix



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 :)
Le informazioni date, son suggerimenti, osservazioni, ma come le applicate è a vostro rischio e pericolo!

Martinix

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
Le informazioni date, son suggerimenti, osservazioni, ma come le applicate è a vostro rischio e pericolo!

0v3rl04d



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

astrobeed


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.



Scientia potentia est

0v3rl04d



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?

astrobeed


Cross-compiling tramite ssh?


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

0v3rl04d



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!

Go Up