Arduino: Encender y apagar Led

Iniciado por @synthesize, 31 Mayo 2010, 03:51 AM

0 Miembros y 1 Visitante están viendo este tema.

@synthesize

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;

#include <stdio.h>
#include <string.h>

char ruta[13];

FILE *fp;

int pedirNum();
void abrir();

int main(void)
{
int op, var;
strncpy(ruta, "/dev/ttyUSB0", 13);

if ((fp=fopen(ruta, "a"))==NULL)
{
fprintf(stdout, "No se puede abrir el archivo\n");
return 0;
}

fcloseall();

do
{
fprintf(stdout, "Introduce valor (0 para salir)\n");
var =pedirNum();
if (var==0)
{
abrir(); putc(0, fp); fclose(fp);
break;
}

else
{
switch(var)
{
case 1: abrir(); putc(1, fp); fclose(fp); break;
case 2: abrir(); putc(2, fp); fclose(fp); break;
case 3: abrir(); putc(3, fp); fclose(fp); break;
}
}
} while (1);

return 0;
}

int pedirNum()
{
int valor;
do
{
scanf("%d", &valor);
} while (valor<0 || valor>3);
return valor;
}

void abrir()
{
if ((fp=fopen(ruta, "w"))==NULL)
{
fprintf(stdout, "Imposible abrir el archivo\n");
}
}


Archivo para Arduino;

int var;
int ledPin =13;

void setup()
{
 Serial.begin(9600);
 pinMode (ledPin, OUTPUT);
 var =0;
}

void loop()
{
 if (Serial.available() >0)
 {
   var =Serial.read();
   
   outtext(var);
   
   if (var==0)
   {
     Serial.print("End.\n");
     offLeds();
   }
   
   if (var==1)
   {
     digitalWrite(ledPin, HIGH);
   }
   
   if (var==2)
   {
     digitalWrite(ledPin, LOW);
   }
   
   if (var==3)
   {
     parpadea();
   }
 }
}

void outtext (int valor)
{
 if (valor==1)
   Serial.println("State 1 - ON");
 if (valor==2)
   Serial.println("State 2 - OFF");
 if (valor==3)
   Serial.println("State 3 - BLINK");
}

void parpadea()
{
 int cont;
 for (cont=0;cont<10;cont++)
 {
   digitalWrite(ledPin, HIGH);
   delay(250);
   digitalWrite(ledPin, LOW);
   delay(250);
 }
}

void offLeds()
{
 digitalWrite(ledPin, LOW);
}





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

Out Serial;

CitarState 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)
[youtube=425,350]
http://www.youtube.com/watch?v=AqlVs2kUcyg[/youtube]




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 ^^.

Sk9ITk5Z

tegno una duda que librerias necesito en windows para poder hacer ese tipo de programas??
Este es un pueblo de corazón extraviado, no quiere conocer mis caminos por eso no entraran en mi descanso.

@synthesize

Cita de: Sk9ITk5Z en 31 Mayo 2010, 16:55 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

Sk9ITk5Z

Cita de: GNU López en 31 Mayo 2010, 20:41 PM
Cita de: Sk9ITk5Z en 31 Mayo 2010, 16:55 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
Este es un pueblo de corazón extraviado, no quiere conocer mis caminos por eso no entraran en mi descanso.

@synthesize

Cita de: Sk9ITk5Z en 31 Mayo 2010, 23:26 PM
Cita de: GNU López en 31 Mayo 2010, 20:41 PM
Cita de: Sk9ITk5Z en 31 Mayo 2010, 16:55 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
http://www.arduino.cc/es/