Concurso de fotografía AM

Temática: «Una panorámica de tu acuario».
Ya esta abierto el plazo para presentar fotografías.

Más info
image01

¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
CERRADO EL PLAZO DE INSCRIPCIÓN

Más info
image01

Atlas de peces de AM

¡Hemos alcanzado las 800 fichas! Visita nuestro atlas de peces actualizado.

Más info
image01

Cardúmenes y sociabilidad

Nueva actualización de la tabla con una extensa relación de peces, donde podrás conocer qué entorno necesita cada especie, su sociabilidad y si convive o no en cardumen. ¡Pasa a descubrirla!

Mas info
image01
Programación C desde Cero.
Respuestas: 135    Visitas: 47911
#91
Buenas

Hola antonio. Esto es lo que yo se hacer solo
se que es largo y tedioso y que hay maneras de hacerlo mas corto.
es mas lo he buscado entre toda la documentación que tengo
y lo he encontrado Big Grin
es mas ya lo llego a entender.

Código:
int  punto=300;
int  raya=600;
int  separacion=100;
int  fin=4000;
void setup() { //comienza la configuracion
Serial.begin(9600) ;
pinMode(13, OUTPUT); //configura el pin 13 como de salida
}
void loop() { //comienza el bucle principal del programa

  Serial.println( "Hola" );

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V


digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (raya);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (raya);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera pin 13 con 0V


digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (raya);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (separacion);//espera  pin 13 con 0V

digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (punto);//espera
digitalWrite(13, LOW); //envia 0V al pin (salida) 13

Serial.println( "Adios" );
delay (fin);//espera  pin 13 con 0V


}

saludos
#92
Lo primero es conseguir que funcione que creo que sí funcionará. Podrias cargarlo en tu Arduino y ese LED que parpadea ahora haría SOS.

Te servirá para aprender a cargar tu primer programa en el Arduino y ejecutarlo.
Hay muchos tutoriales. No sé si este será el mejor, pero puedes probar suerte con él
http://www.luisllamas.es/2013/10/nuestro...n-arduino/

El programa se puede mejorar de varias formas.

1) Por ejemplo haciendo un blucle for( ; ; ) para que repita tres veces un punto y otro para que repita tres veces una raya.
#93
Hola Antonio

ya he estado enredando con la placa
y si que funciona el programa

también he encontrado varios ejemplos para programar el SOS
el que mas me gusta es este
Código:
int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;
int n=0;
void setup(){ //comienza la configuracion
pinMode(13,OUTPUT);
}
void s(){ //comienza el bucle para la letra S
for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tcorto);
digitalWrite (13,LOW);
delay (tcorto);
}}
void o(){ //comienza el bucle para la letra O
for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tlargo);
digitalWrite (13,LOW);
delay (tlargo);
}}
void loop(){ //se ejecuta el bucle principal en el orden siguiente
s();
delay(pausa);
o();
delay(pausa);
s();
delay(espera);
}


gracias por el enlace.lo miro
tengo que centrarme por que estoy picoteando de demasiados sitios


un saludo
#94
(24-01-2016, 05:10 PM)rodazac escribió: Hola Antonio

ya he estado enredando con la placa
y si que funciona el programa

también he encontrado varios ejemplos para programar el SOS
el que mas me gusta es este
Código:
int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;
int n=0;
void setup(){ //comienza la configuracion
pinMode(13,OUTPUT);
}
void s(){ //comienza el bucle para la letra S
for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tcorto);
digitalWrite (13,LOW);
delay (tcorto);
}}
void o(){ //comienza el bucle para la letra O
for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tlargo);
digitalWrite (13,LOW);
delay (tlargo);
}}
void loop(){ //se ejecuta el bucle principal en el orden siguiente
s();
delay(pausa);
o();
delay(pausa);
s();
delay(espera);
}

gracias por el enlace.lo miro
tengo que centrarme por que estoy picoteando de demasiados sitios

un saludo

Tranqui, vas muy bien. Aprender a programar lleva su tiempo y hay que tomarselo con calma. Consiste en gran medida en lo que acabas de hacer.

Buscar un ejemplo, leerlo, entenderlo, decidir si te gusta, probarlo, modificarlo y hacerlo tuyo.

Hasta ahora hemos usado variables para diferentes cosas. Algunas de las variables que has usado son:

int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;

Eso ayuda a dar un nombre a un dato y poderlo usar en varias partes del programa con ese nombre. Además se llaman variables porque si lo deseamos a lo largo del programa podemos cambiar su valor. A fin de cuentas una variable representa un trocito de memoria en el que hemos metido un dato.

No, no me olvidé ninguna. Observa que esas variables que puse han recibido un valor en el mismo momento de declararla y que en el resto del programa la variable no varia su valor. ¿Una variable invariable? En realidad si, lo estamos usando como una constante.

Si decidieramos cambiar su valor probalemente lo haríamos al principio.

Existe una maner de advertir al compilador que esa variable la vamos a usar como constante. Bastaría hacer lo siguiente.

const int tcorto=100;

Con ello el compilador queda advertido. Puede decidir reservar la memoria para esa variable en un lugar más adecuado junto a otros datos constantes y tratarlos como una zona de memoria de solo lectura. además si en tu código cometes un despiste e intentas cambiar su valor, el compilador te advertirá de que lo que intentas hacer con esa variable no está permitido. es decir, no te permitirá compilar un programa que probablemente está mal. Puede hacer más cosas. Por ejemplo cuando decida traducir todas esas instrucciones en lenguaje a un código máquina para ser procesado por el procesador, podrá hacer algunos truquitos con el código para intentar que el programa se ejecute más rápido. Esa fase de compilación la tienen todos los compiladores se llama fase de optimización de código.

Existen otras fase del compilador y una de ellas llamada preprocesador. De momento quédate con el bonito palabro. Se usa para muchas cosas que aún no hemos visto. Por ejemplo se usa mucho para meter datos de valor constante en un programa usando un procedimiento diferente.

Como no quiero correr mucho lo dejo de momento ahí.
#95
como siempre muchas gracias por las explicaciones

continuo leyendo, he intentando entender.
#96
Cierto las constantes, ya se me anticipó Antonio en el comentario.

Hay otra cosa interesante cuando queremos definir un valor entero fijo que va a usarse en todo el programa, yo las denomino macros del compilador (aunque no estoy seguro que sea el nombre exacto).

Es algo que ya Antonio os puso en el código de ejemplo del post 90

Con una sintaxis como estas:

Código:
#define PRIMER_PIN    4
#define MAXNUM_PINS   8
#define PIN_LED      13
#define CORTO       100
#define LARGO       300
#define PAUSA       300
#define ESPERA     1000

Que se definen en el encabezado del programa y y luego en cuerpo del programa las usaremos como por ejemplo: pinMode(PIN_LED,OUTPUT);

En estos casos no son ni variables ni siquiera constantes ya que no ocupan espacio de la memoria de variables. El compilador, al inicial el precompilado sustituye directamente en la instrucción del código de programa el texto "PIN_LED" por el valor indicado (en el código que interpreta no en el fichero de texto donde tenemos escrito el programa).

Pasando de pinMode(PIN_LED,OUTPUT); >>> a >>> pinMode(13,OUTPUT);

Esto es muy útil para adaptar un código al montaje hard realizado, digamos que si vamos a usar un pin para hacer lecturas de su estado o cambiar el mismo, puede que nuestro caso no sea igual que el código de ejemplo usado y ya tengamos ocupado dicho pin con otra tarea, o por ejemplo usando el bus I2C, segun que modelo de placa arduino los pines del bus I2C varían.

No tenemos que estar buscando en todo el código de programa la referencia al mismo y modificandolo (con el riesgo que algo se pase), definiendo la macro del compilador esta realiza las sustituciones automáticamente.

Por lo que realizando las modificaciones de configuración en las primeras lineas del código tenemos adaptado el programa a nuestro montaje.
#97
(04-01-2016, 08:57 PM)Antonio Castro escribió: ¿Cinco años? Eso podría explicar tu postura. En 2012 llegó a lo más alto, incluso superó durante unos meses a C++ y por un momento algunos pensaron que seguiría subiendo, pero no fue así. Quizás el que está anticuado seas tú y te aconsejo que seas más comedido.

(04-01-2016, 08:26 PM)ArturoS escribió:
(04-01-2016, 04:07 PM)kabout escribió: A lo mejor me voy a meter donde no me llaman jajaja

Pues a lo mejor tienes razón.

No es un curso de programación en serio, no es un debate sobre si cual o tal es mejor.


Si nos vas a aportar ayuda a la hora de orientar a profanos iniciándose que han de ir paso a paso y resolver las dudas que se planteen bienvenido, pero si es para dialogar y debatir sobre cosas fuera de lugar a este nivel, mejor abres un post específico

Si un usuario comenta en cualquier tema del foro algo, nadie tiene derecho a contestarle de esta forma. NADIE.
Cualquier usuario es libre de participar y comentar en todos los foros y mensajes.

No queremos volver a ver contestaciones y salidas de tono de este estilo con ningún usuario o tomaremos medidas.













1 saludo
#98
la verdad que no entiendo nada.
esto de que un administrador amenace en publico a usuarios
no se yo.
#99
Creo que en lugar de criticar o tirar puyitas a la administración por hacer su labor, se debería criticar a quién falta al respeto de una manera tan evidente a un compañero que, con más o menos acierto, intenta aportar de manera desinteresada al tema. Es obligación del responsable (admin o moderador) cortar ésas actitudes de raíz.

Leed de nuevo las respuestas que enlaza Gwendal y decidme si la advertencia (que no amenaza) es desproporcionada. Yo la encuentro "normal"

Pd: No deja de ser curioso que quién aquí responde con tales impertinencias y soberbia a un compañero, después pida respeto en otros hilos y se queje diciendo "Creo que algunos comentarios despectivos están bastante fuera de lugar"

Saludos.
#100
Amenace???, yo no veo amenaza por ningún lado -huh.gif

Es una simple llamada de atención para intentar que se hable con mesura, se pueden decir lo mismo de muchas maneras.. y si buscamos un poquito como hacerlo nos ahorramos el molestar al vecino.
Yo sinceramente, creo que no haya que ir más allá.

Como no es la intención desviar un post tan interesante e instructivo con comentarios que se salgan del tema, para aclaraciones sobre esto si son necesarias, porfavor, lo hablamos por privado o se abre otro post. ¿os parece?
#101
Por favor, dejad aquí el tema, no me gustaría que este hilo acabase como el rosario de la aurora y que tengan que terminar cerrándolo.

Me has pisado, karo Big Grin
#102
Si es curioso que 20 días después, de algo que no quedo en nada mas que el cruce de dos palabras interpretables y que solo se diluyó se airee el asunto.
Pero lo dicho no voy a contribuir a desvirtuar este tema y contribuir con otros interesados en hacerlo. Para mi tema cerrado.
#103
Por supuesto ArturoS.

Por todos es sabido que la mala educación caduca (a los 20 días ya no puede uno sentirse ofendido) y que este hilo es objeto de mil conspiraciones ocultas.

Saludos.-good.gif
#104
Gracias a todos por vuestros aportes y opiniones y por favor,que el tema continue con lo que es, ...-fisch.gif

PROGRAMACIÓN C DESDE CERO.....

Yo también os quiero a todos!!!.... y no olvidaros de las almendras tostadas, no fritas,.... guerra al colesterol!!!....-good.gif
#105
Rodazac porque no intentas incluir sangrados en tu código, mira el siguiente ejemplo es tu mismo código anterior

Código:
int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;
int n=0;

void setup()
{                                       //comienza la configuracion
    pinMode(13,OUTPUT);
}

void s()
{                                       //comienza el bucle para la letra S
    for(n=0;n<3;n++)
   {
         digitalWrite (13,HIGH);
         delay (tcorto);
         digitalWrite (13,LOW);
         delay (tcorto);
    }
}

void o()
{                                        //comienza el bucle para la letra O
     for(n=0;n<3;n++)
    {
           digitalWrite (13,HIGH);
           delay (tlargo);
           digitalWrite (13,LOW);
           delay (tlargo);
     }
}

void loop()
{                                        //se ejecuta el bucle principal en el orden siguiente
     s();
     delay(pausa);

     o();
     delay(pausa);

     s();
     delay(espera);
}

Cuando el código va creciendo y complicandose, y realizando varios bucles unos dentro de otros, ayuda mucho a entenderlo y no confundirse de nivel, el tener el código claro (digamos "con aire").

Y aunque se puede definir una función en cualquier sitio fuera de otra, acostumbrate a tener el setup y loop juntos al principio o al final y las diferentes funciones que crees cerquita unas de otras por la funcionalidad que desarrollen, que luego te vuelves loco buscandolas en miles de lineas de código. Y si le das un nombre significativo mejor por ejemplo "O_Morse" así te evitas confusiones a la hora de usarlas desde otro sitio.

Como tu lo has redactado está bien, pero a la larga te aconsejo lo dicho ya que te facilita el trabajo y es bueno tomar buenos hábitos desde el principio





PD: s.c.

Usuarios navegando en este tema: 1 invitado(s)


Salto de foro: