Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: @synthesize en 31 Mayo 2010, 03:51 am



Título: Arduino: Encender y apagar Led
Publicado por: @synthesize en 31 Mayo 2010, 03:51 am
He creado un pequeño proyecto para encender y apagar un led conectado a Arduino, a través de un ejecutable escrito en C bajo GNU/Linux.

Códigos;

Archivo para GNU/Linux;

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char ruta[13];
  5.  
  6. FILE *fp;
  7.  
  8. int pedirNum();
  9. void abrir();
  10.  
  11. int main(void)
  12. {
  13. int op, var;
  14. strncpy(ruta, "/dev/ttyUSB0", 13);
  15.  
  16. if ((fp=fopen(ruta, "a"))==NULL)
  17. {
  18. fprintf(stdout, "No se puede abrir el archivo\n");
  19. return 0;
  20. }
  21.  
  22. fcloseall();
  23.  
  24. do
  25. {
  26. fprintf(stdout, "Introduce valor (0 para salir)\n");
  27. var =pedirNum();
  28. if (var==0)
  29. {
  30. abrir(); putc(0, fp); fclose(fp);
  31. break;
  32. }
  33.  
  34. else
  35. {
  36. switch(var)
  37. {
  38. case 1: abrir(); putc(1, fp); fclose(fp); break;
  39. case 2: abrir(); putc(2, fp); fclose(fp); break;
  40. case 3: abrir(); putc(3, fp); fclose(fp); break;
  41. }
  42. }
  43. } while (1);
  44.  
  45. return 0;
  46. }
  47.  
  48. int pedirNum()
  49. {
  50. int valor;
  51. do
  52. {
  53. scanf("%d", &valor);
  54. } while (valor<0 || valor>3);
  55. return valor;
  56. }
  57.  
  58. void abrir()
  59. {
  60. if ((fp=fopen(ruta, "w"))==NULL)
  61. {
  62. fprintf(stdout, "Imposible abrir el archivo\n");
  63. }
  64. }

Archivo para Arduino;
Código
  1. int var;
  2. int ledPin =13;
  3.  
  4. void setup()
  5. {
  6.  Serial.begin(9600);
  7.  pinMode (ledPin, OUTPUT);
  8.  var =0;
  9. }
  10.  
  11. void loop()
  12. {
  13.  if (Serial.available() >0)
  14.  {
  15.    var =Serial.read();
  16.  
  17.    outtext(var);
  18.  
  19.    if (var==0)
  20.    {
  21.      Serial.print("End.\n");
  22.      offLeds();
  23.    }
  24.  
  25.    if (var==1)
  26.    {
  27.      digitalWrite(ledPin, HIGH);
  28.    }
  29.  
  30.    if (var==2)
  31.    {
  32.      digitalWrite(ledPin, LOW);
  33.    }
  34.  
  35.    if (var==3)
  36.    {
  37.      parpadea();
  38.    }
  39.  }
  40. }
  41.  
  42. void outtext (int valor)
  43. {
  44.  if (valor==1)
  45.    Serial.println("State 1 - ON");
  46.  if (valor==2)
  47.    Serial.println("State 2 - OFF");
  48.  if (valor==3)
  49.    Serial.println("State 3 - BLINK");
  50. }
  51.  
  52. void parpadea()
  53. {
  54.  int cont;
  55.  for (cont=0;cont<10;cont++)
  56.  {
  57.    digitalWrite(ledPin, HIGH);
  58.    delay(250);
  59.    digitalWrite(ledPin, LOW);
  60.    delay(250);
  61.  }
  62. }
  63.  
  64. void offLeds()
  65. {
  66.  digitalWrite(ledPin, LOW);
  67. }
  68.  



Versión actual: 0.2
* Añadida función Blink
* Añadido State 0; END.

Out Serial;

Citar
State 1 - ON

State 2 - OFF

State 3 - BLINK

End.




Como podéis ver, el Led está conectado a la salida digital 13, la cual incluye resistencia propia.

Vídeo de funcionamiento; (v. 0.1)

http://www.youtube.com/watch?v=AqlVs2kUcyg



Quién quiera usar el código en otros sistemas operativos, solo tiene que cambiar la ruta del archivo de Arduino. Creo que no habría que cambiar mas, pues he usado funciones estándar ^^.

Si alguien quiere mejorar el code, o solamente opinar, ya sabéis, para eso estamos ^^.


Título: Re: Arduino: Encender y apagar Led
Publicado por: Sk9ITk5Z en 31 Mayo 2010, 16:55 pm
tegno una duda que librerias necesito en windows para poder hacer ese tipo de programas??


Título: Re: Arduino: Encender y apagar Led
Publicado por: @synthesize en 31 Mayo 2010, 20:41 pm
tegno una duda que librerias necesito en windows para poder hacer ese tipo de programas??

Necesitas un Arduino y el compilador para arduino...  Para el programa en C, cabeceras estándar..XD


Título: Re: Arduino: Encender y apagar Led
Publicado por: Sk9ITk5Z en 31 Mayo 2010, 23:26 pm
tegno una duda que librerias necesito en windows para poder hacer ese tipo de programas??

Necesitas un Arduino y el compilador para arduino...  Para el programa en C, cabeceras estándar..XD

ok me pondre a investigar que es un ARduino  :xD


Título: Re: Arduino: Encender y apagar Led
Publicado por: @synthesize en 2 Junio 2010, 05:58 am
tegno una duda que librerias necesito en windows para poder hacer ese tipo de programas??

Necesitas un Arduino y el compilador para arduino...  Para el programa en C, cabeceras estándar..XD

ok me pondre a investigar que es un ARduino  :xD
http://www.arduino.cc/es/ (http://www.arduino.cc/es/)