Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: krlosexe en 26 Enero 2015, 18:53 pm



Título: Controlar Arduino con Lenguaje C (Puerto Serial)
Publicado por: krlosexe en 26 Enero 2015, 18:53 pm
Buenas, estoy comenzando con Arduino y vengo a pedirles Ayuda.

Quisiera que me dieran una Idea de Como hacer para poder Enviarle instrucciones al Arduino mediante lenguaje C.

Necesito hacer un codigo en lenguaje C que me Encienda un LED al yo presionar la tecla 1 en la consola del Programa que quiero hacer en C..

Por favor nesecito su Ayuda quisiera que me dieran una idea de como hacer eso.!

Saludos
Cardenas Carlos


Título: Re: Controlar Arduino con Lenguaje C (Puerto Serial)
Publicado por: 43H4FH44H45H4CH49H56H45H en 27 Enero 2015, 04:15 am
Bueno a la rápida como no indicas el SO que usas y para no complicarte mucho puedes usar algo así:

http://www.teuniz.net/RS-232/

Solo hay que modificar void RS232_cputs para que mande solo un carácter.
Antes arduino tiene que estar programado para recibir dicho carácter y la función que va realizar.
Modificando el ejemplo de esa página se puede hacer de este modo:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #ifdef _WIN32
  5. #include <Windows.h>
  6. #else
  7. #include <unistd.h>
  8. #endif
  9.  
  10. #include "rs232.h"
  11.  
  12.  
  13. int main()
  14. {
  15. int i=0,
  16. cport_nr=3,        /* /dev/ttyS0 (COM1 on windows) */
  17.    bdrate=9600;       /* 9600 baud */
  18.  
  19. char mode[]={'8','N','2',0}, str[2];
  20. str[0]='a'; //prender LED
  21. str[1]='z'; //apagar LED
  22.  
  23. if(RS232_OpenComport(cport_nr, bdrate, mode))
  24. {
  25. printf("Can not open comport\n");
  26. return(0);
  27. }
  28. while(1)
  29. {
  30. RS232_cputs(cport_nr, str[0]);
  31. printf("sent: %c\n", str[0]);
  32. #ifdef _WIN32
  33. Sleep(3000);
  34. #else
  35. usleep(1000000);  /* sleep for 1 Second */
  36. #endif
  37. RS232_cputs(cport_nr, str[1]);
  38. printf("sent: %c\n", str[1]);
  39. i++;
  40. if(i>2) break;
  41. }
  42.  return(0);
  43. }

Solo necesitas modificarlo a tu proyecto.