16.JAVASCRIPT

La estructura inicial de javascript depende de donde lo incluyas. Al ser parte de html puede estar incluido en el mismo, pero puede ir en un documento externo:

  • Si esta dentro del código html debe ir entre las etiquetas , si no, debe tener al menos una referencia al archivo.
  • Si va fuera en un archivo de texto, no se necesita declarar int main como en C ya que se pueden escribir directamente las sentencias del código.

Para declarar variables la sintaxis es: var a . Esta sintaxis no inicializa las propias variables si no se le añade el valor a continuación, pero se puede asignar el valor desde cualquier parte del código así: a = 16 .

Los bucles for en javascript se escriben con esta sintaxis: for ( 1; 2; 3) {código, donde:

  • 1 es la orden que se ejecuta antes del bucle, que suele ser una variable para la ejecución del código, pero puede omitirse.
  • 2 es la condición para que el bucle se ejecute.
  • 3 es la orden que se realiza cada vez que el bucle se ejecuta.

Hay otros dos bucles, los bucles while y do-while, que son parecidos pero se diferencian en una sola cosa: la primera ejecución.

  • Los bucles while se escriben con esta sintaxis: while (1) {código} donde 1 es la condición del bucle.
  • Los bucles do-while se escriben con esta sintaxis: do {código} while (1) donde 1 es  la condición del bucle. Al estar al final garantiza que el código se ejecuta al menos una vez.

Por ultimo, los dos últimos bloques son if-else y swich, dos bloques con la misma función:

  • La sentencia if-else tiene esta forma: if (1) {código 2} else {código 3donde 1 es la condición del bucle, el código 2 es ejecutado si es verdadera y el código 3 es realizado si es falsa.
  • La sentencia swich se usa cuando un parámetro o variable puede tener varios valores. Se usa como sustituto de muchas sentencias if-else encadenadas. Su sintaxis es: swich / case 1 / código 1 / break / case 2 …. default / código 2 / break .

Aqui  hay un codigo de ejemplo:

var num = 1;

var decim = 55.46;

var text = “hola”;

var  activo = true;

for (var a = 0; a <= 50; a++) {

//código 1

}

while (num ==1) {

//código 2

}

do {

//código 3

}while (num = 0);

if (text == “hola”) {

//código 4

}else{

//código 5

}

swich (decim)

case 55.55:

//código 6

break;

case 55.68:

//código 7

break;

default:

//código 8

break;

En este código:

  • Se definen las variables.
  • El código 1 se ejecuta 50 veces.
  • El código 2 se ejecutara siempre.
  • El código 3 se ejecuta una vez.
  • El código 4 se ejecuta una vez.
  • El código 5 no se ejecuta.
  • El código 6 y el código 7 no se ejecutan.
  • El código 8 se ejecuta.

Por si alguno quiere saber mas, puede visitar este link para realizar un pequeño cursillo sobre el tema.

 

27.- Avance

21 de diciembre. He decidido que voy a cambiar la parte inferior y un lateral de la caja por los problemas que tuve el otro día. Ya que si imprimo solo una pieza de la caja, esta va a seguir suelta, he pensado en volver a hacer la parte de abajo.

modificación diseño

 

26.- Fin del nuevo diseño

14 de diciembre. He continuado con el diseño del día anterior. Al final respecto al tema de la balda, he pensado un nuevo diseño. Este está formado por una balda que se encaja en tres piezas de la caja. De la línea roja hasta la parte de arriba de esa misma pieza, serían las medidas de la balda.              diseño

Este ha sido el resultado:

El pase de diapositivas requiere JavaScript.

Los problemas que he encontrado en la caja nueva son: 1.- no me he dado cuenta de hacer el agujero para conectar el arduino nano a la alimentación, 2.- no he tenido en cuenta el presfit y las caras de la caja quedan sueltas.

25.- Nuevo diseño

7 de diciembre. Continúo con los neopíxels pero tengo que cambiar el diseño de la caja. Para ello me he metido en makercase y he puesto las siguientes medidas: 69×30×86.

dimensiones caja.PNG

He pensado que dentro de la caja puedo poner como una balda con el fin de acercar más los neopíxeles a las placas de metacrilato.

24.- Cambios

23 de noviembre. Tras el problema de el otro día me he planteado cambiar los neopíxels por leds. He recortado los bordes de la tira de neopíxels y queda así:

neopixels recortados

Finalmente, me ha convencido seguir con los neopíxels pero voy a tener que cambiar el diseño.

23.- Revisión de código

16 de noviembre. Me he pasado toda la tarde revisando el código de los neopíxeles porque no funcionaba como yo quería. Además, me ha surgido otro problema: al colocar los neopíxeles uno detrás de otro para ver como coincidía con las placas de metacrilato, me ha quedado así ⇓⇓⇓

problema neopixeles.jpg

Por lo tanto no van a iluminar directamente a las placas sino que van a estar más alejados.

21.- Continuación del proyecto

26 de octubre.

He decidido poner una placa arduino nano porque la de arduino UNO es demasiado grande. Además, necesito pocos pines para conectar los neopíxeles, GND y la corriente.

Como he tenido que cambiar a una placa nano, necesito instalar unos drivers. Los he cogido de la siguiente página: https://www.geekfactory.mx/tutoriales/tutoriales-arduino/driver-ch340-para-arduino-chinos-o-genericos/

El pase de diapositivas requiere JavaScript.

14.PRIMER PROYECTO

Los últimos viernes estuve encargándome de un proyecto que tenia pendiente para una exposición en el colegio. El proyecto trataba de tres semáforos que funcionaban con los circuitos integrados NE555 y CD4017 y una matriz led 8*8 con el driver MAX7219 y un arduino uno con un modulo bluetooth. El proyecto lo tenia ya hecho y me faltaban unos embellecedores con forma de semáforo.

El proyecto funcionaba con los semáforos y las matrices por separado. Los semáforos funcionaban uno detrás de otro y las matrices se pueden controlar por bluetooth. El código fue un poco modificado con trucos de programación, lo que hacia que algunos signos no se representaran como son.

En el fab lab diseñe e imprimí los semáforos y los monte y cablee en casa.

Este es mi proyecto ya finalizado:

Dentro tiene también unos botones y un conmutador para “calibrar”, encender y apagar los semáforos aunque no se puedan usar porque los descalibran.