Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#681
No tienes ninguna tabla, sobreescribes el mismo dato todo el rato.
#682
Captura la entrada como una cadena y después la procesas:
Si el primer caracter es una g guardas y sales. Sino es tu número. Si no es ni la g ni son números la entrada no es válida.
#683
No se puede dimensionar un array a partir de una variabke.
Peor aún si la variable está sin definir. No debería leerse si antes no se le ha dado ningún valir.

La idea de un switch/case sobre la variable de control de bucle en un menú no le veo el sentido.
#684
Parece que tienes un problema de desbordamiento de memoria.
Básicamente opcion es un char, y así la tratas en los case, pero cuando la capturas lo haces como una cadena en el scanf. El compilador captura una cadena, que en tu caso serán 2 caracteres, el segundo un 0. pero como solo tienes espacio para uno así que ese 0 tiene que ir a algun sitio y, tal como tu compilador ha dispuesto las variables en memoria, va a sobrescribir b.
#685
¿Qué te sale y qué esperabas?

Muy mal por el return main();
En su lugar usa bucles infinitos, si quieres, como el while(1) o for(;;)
#686
!(PINB&(1<<PB1))

Sencillo.
Primero, paréntesis interiores:
Desplazar el número 1 tantos bits a la izquierda como marque PB1, rellenando con 0 las posiciones vacías que queden a la derecha. Por ejemplo, 1<<3 = 1000 binario = 8 decimal.
Segundo, paréntesis externos:
Se opera AND a nivel de bits el valor PINB con el valor conseguido en el resultado anterior. Por ejemplo, 12 & 8 = 8. Visto en binario 1100 & 1000 = 1000.
Por último la negación: Si un número es diferente de 0 devolverá 0. Si un número es 0 devolverá un número diferente de 0. O dicho lógicamente: si el argumento es FALSE devolverá TRUE, si el argumento es TRUE devolverá FALSE.

Por tanto la sentencia entera dice: mira en PINB si el bit PB1 está a nivel bajo.




EICRA &= ~(_BV(ISC00) | _BV(ISC01))

Es lo mismo que
EICRA = EICRA & ~(_BV(ISC00) | _BV(ISC01))

Antes de nada ¿qué es _BV?
_BV es una macro codificada de esta forma:
#define _BV(bit) \
(1 << (bit))

Lo hemos visto más arriba que hace esto, fácil.
Paréntesis.
| es el operador OR a nivel de bits. Por ejemplo: 8 | 4 = 12. Visto a nivel de bits 1000 | 0100 = 1100
~ es el operador NOT lógico a nivel de bits o, también se le puede llamar, complemento a 1. Por ejemplo: Supongamos una palabra de 4 bits sin signo. ~10 = 5. Visto a nivel de bits ~1010 = 0101.
El operador & ya hemos visto que hace.
Todo junto dice: Pon a 0 los bits ISC00 e ISC01 a EICRA.
#687
Haz un makefile, así solo tendrás que escribir make.
#688
Aclarando lo que quiere decirte engel lex: tiene que construir el código para el arduino y subírselo.
#689
Programación C/C++ / Re: NVMND
12 Junio 2017, 19:13 PM
Gracias por aclarar.
Por eso mismo había intentado recuperar el mensaje inicial, para que no quedara esto en un sin sentido.
En verdad esta gente que cuándo han solucionado su historia, o no, borran toda huella dejando el hilo cojo me dan coraje.
#690
¿Entonces el programa sería del lado del Arduino? Necesitarás un real time clock RTC ya que arduino no dispone de reloj.