Sari la conținut
ELFORUM - Forumul electronistilor

Aplicatie PC pentru Control Arduino


nimeni_altci

Postări Recomandate

Salut!

 

Vreau sa va intreb daca stiti cumva cum as putea sa imi fac propria aplicatie care sa o rulez pe laptop si sa trimit comenzi catre Arduino pe Serial. De exemplu daca vreau sa controlez un robot Arduino, aplicatia ar trebui sa aibe 4 butoane(cele 4 sageti). As putea face asta si in serial monitor, dar nu vreau sa tot trimit litere pentru asta. Vreau efetiv 4 butoane grafice, care apasate sa trimita anumite comenzi seriale.

Multumesc!

Link spre comentariu

Salut.I-ti fac eu o mica aplicatie - ce cele 4 butoane - si cateva explicatii care poate fi un punct de pornire pentru tine. Deduc din context ca nu ai vreo preferinta pt. un limbaj sau o anumita tehnologie, si probabil (99%) vrei sa ruleze pe MS Windows.Ne recitim maine.Radu

Link spre comentariu

recomand LabVIEW, de asemeni pot face   si eu o aplicatie  cu  4 butoare care sa trimita pe serial  litere, probabil tu vrei sa controlezi o masina prin bluetooth.

Link spre comentariu

Vreau sa controlez acea masina prin doua module NRF24. Vreau sa am un arduino legat la PC, si altul pe robot. Astfel aplicatia care vreau sa o fac transmite o comanda seriala la Arduino, iar acesta prin NRF24 o transmite mai departe la celalalt Arduino.

 

@Liviu M  Ca nivel de programare cunosc doar C, C++.

@rlodina ar fi grozav daca ai putea face macar un exemplu, cu cateva explicatii( in ce a fost facuta, si codul aferent, daca e scrisa in cod).

@ Vlad Mihai si eu m-am gandit in prima faza la labview, pentru ca am citit cateva lucruri despre el, crezi ca e o solutie mai rapida fata de a scrie cod?

Link spre comentariu

dar te  complici tare, poti incerca  direct Labview si sa trimita pe serial cel mai simplu. si as incerca prima data cu bluetooth, e mult mai usor. parerea mea. Labview  e cel mai  folosit in aplicatii de acest gen si nu numai.

Link spre comentariu

Stiu dar cu Bluetooth nu pot obtine o distanta prea mare. Ma gandeam ca pe viitor sa pun si o camera si de aceea folosesc module RF.

Sunt curios acest gen de aplicatii in ce limbaj si cu ce program se pot face?

Editat de nimeni_altci
Link spre comentariu

In attachment se gaseste codul sursa si executabilul Serial2Arduino.exe.

 

Inainte de conectare poti sa selectezi portul si baud rate. 

Posted Image

 

Dupa conectare se activeaza controalele de operare:

Posted Image

 

 Este scrisa in c# (ai nevoie de .NET 4.0 daca nu-l ai deja instalat). Sunt ceva comentarii in cod si cred ca te descurci - este f. simplu sa mai adaugi butoane la care sa le asociezi comenzi.

 

Codul Arduino cu care am testat aplicatia:

void setup() {  Serial.begin(9600);}void loop() {  if (Serial.available() > 0){    char cmd = Serial.read();    if (cmd == 'U'){      Serial.println("Exec cmd: Up");    }    else if (cmd == 'R'){      Serial.println("Exec cmd: Right");    }    else if (cmd == 'D'){      Serial.println("Exec cmd: Down");    }    else if (cmd == 'L'){      Serial.println("Exec cmd: Left");    }    else {      Serial.println("Exec cmd: comanda necunoscuta");      }  }   delay(1);       }

Probabil ca dezv cu LabView ar fi mai spectaculoasa - ai o multime de gadgeturi acolo - dar din pacate nu am folosit-o niciodata - poate arunci o privire si acolo.

 

Oricum daca mai ai intrebari - sunt aici.

 

Succes

Radu

 

 

Serial2Arduino.zip

Link spre comentariu

@Mihai : da proiectul este in Visual Studio 2010 - merci de apreciere dar nu'i nu striu ce - daca te uiti un pic in surse o sa vezi ca este relativ simplu.

 

Am facut si versiunea a 2-a a micului nostru exemplu. Sa vezi cum ai putea trata si cumunicarea inversa Arduino->PC si sa-ti faci o idee ca te poti apropia de o interfata utilizator mai  fancy (cu un minim de efort).

 

Posted Image

 

Modificari:

  1. Orice comunicatie Arduino- > PC trebuie finalizata cu 'rn' - Ex: Serial.println("text  ..."); Practic app windows nu proceseaza comanda decat dupa ce citeste si acel terminator de linie.

  2. Implementat un mic protocol: sintaxa unei comenzi: CMD:NNN=VVV  

       - unde VVV trebuie sa fie un numar. 

       - NNN este un simbol definit de tine

       - tratarea comenzii este implementata simplu:

  //aici poti sa-ti definesti propria mapare  if (cod == "A1") {      agA1.Value = val;                      }  else if (cod == "A2") {      agA2.Value = val;  }  else if (cod == "D1") {      led1.Image = val == 0 ? Serial2Arduino.Properties.Resources.led_gray : Serial2Arduino.Properties.Resources.led_green;  }  else if (cod == "D2") {      led2.Image = val == 0 ? Serial2Arduino.Properties.Resources.led_gray : Serial2Arduino.Properties.Resources.led_green;  }

Deci din Arduino trimiti comenzi de genul:  

Serial.println("CMD:A1=135");       //remarca aici folosirea lui println

Orice alt text trimis de Arduino care nu incepe cu CMD: este afisat in acel mic log,

 

Nu am facut implementarea pe Arduino - daca am un pic de timp si este cineva interesat i-l fac.

 

Cum poti testa exemplu:

   - pune pe A1 la Arduino un potentiometru 

   - citeste valoarea cu analogRead: val = analogRead(A1);

   - vezi daca este modificata fata de vechea citire. Daca DA: mapeaz-o pe intervalul asteptat de vitezomentru: 0-200 :  val = map(val, 0, 1023, 0, 200);

   - trimite comada pt. a fi interpretata de app windows:  Serial.print("CMD:A1=");  Serial.println(val);  

   - in mod normal ar trebui sa vezi acul vitezometrului indicand val

 

Idem si la A2 - evident cu alta mapare: 0-100

 

Functionarea Led-urilor din interfata grafica respecta aceiasi idee:

  - in exemplu nostru comenzile primite din Arduino de forma: CMD:Dn=0|1 porneste sau opreste led-ul n. Ex: CMD:D1=0  - off ledul D1 sau: CMD:D3=1 - on ledul D3

 

 

Evident daca ai intrebari - sunt prin zona.
 
Succes
Radu

Serial2Arduino_V2.zip

Editat de rlodina
Link spre comentariu

@rlodina multumesc foarte mult pentru ajutorul tau. Dupa ce am vazut primul program chiar ma intrebam cum s-ar putea face ca PC sa citeasca anumite valori furnizate de Arduino, iar apoi am vazut exemplul 2. Cu exemplele tale sper ca voi fi in stare sa fac ceva mai complex. Am inceput sa ma uit pe youtube si la tutoriale Visual Studio 2010 si sper sa ii invat bazele in scurt timp. Problema e ca e un limbaj putin diferit de C care il stiu eu, adica nu prea cunosc comenzile. Imi poti recomanda o carte din care as putea invata, sau un site?

Link spre comentariu

Ce misto :aplauze, trebuie sa invat si eu sa fac chestii de-astea cule. 

Ultima tentativa de interfata grafica am facut-o in C++ Builder 6. A iesit, da' a fost meritul lui Borland, nu al meu. :rade:

@nimeni_altci: visual studio e un ide (interfata in care programezi). Dupa cum spunea Radu, programele sunt in C# (compilatorul/interpretorul). Asa ca asta trebuie sa cauti - carte/tutorial de C#.

Editat de Liviu M
Link spre comentariu

Liviu M, stiu ca Visual studio e un IDE. Nu sunt asa noob incat sa cred ca e limbaj. Multumesc pentru raspuns, se pare ca C# era acel C pe care nu il intelegeam eu.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări