====== TecnoLabs ====== TecnoLabs es un programa que busca generar un espacio para el intercambio de conocimientos en temas como la programación, electrónica y robótica, está dirigido a niños, jóvenes y adolescentes, los cuales podrán programa crear, diseñar y construir mediante la utilización de herramientas de código libre. ===== Algoritmos - Pseudocódigo ===== Es la mezcla del lenguaje de programación y español que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. ==== ¿Para que sirve? ==== Sirve para escribir programas de computadora en lenguaje natural de tal manera que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico. ==== Condicionales ==== Una instrucción de control condicional es un bloque de código que se ejecuta si cumple una condición, que nosotros pongamos. Esta condición es una expresión lógica que debe dar como resultado true o false, para ello es habitual usar los operadores relacionales y lógicos. Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. [[https://desarrolloweb.com/articulos/2225.php | DesarrolloWeb]] ==== Estructuras de Repetición ==== Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque de instrucciones se ejecutará se puede especificar de manera explícita, o a través de una condición lógica que indica cuándo se ejecuta de nuevo y cuándo no. A cada ejecución del bloque de instrucciones se le conoce como una iteración. [[http://dis.unal.edu.co/~programacion/book/modulo2b.pdf | Estructuras de Repetición]] ==== Estructura Básica y Diagrama de Flujo==== {{:sistemadebibliotecas:pbladera:captura.png?400|}} {{:sistemadebibliotecas:pbladera:sin_titulo1.png?400|}} ===== ¿Qué es PSeint?===== PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos. [[http://pseint.sourceforge.net/ | Descargar PSeint]] ==== Ejercicios en Pseint ==== ==== Sesión 1 ==== Operaciónes basicas.psc
Algoritmo ej_operaciones
    // Ejercicio que permita sumar dos números
    // Con los mismos números deben realizar la resta, multiplicación y división 
    
    suma=0;        //variable para realizar la suma
    resta=0;    //variable para realizar la resta
    mult=0;        //Variable para realizar la multiplicación
    div=0;        //Variable para realizar la división
    
    Escribir "Digite el primer número"; //mensaje
    Leer numero1; // variable para guardar el dato que el usuario ingresa
    Escribir "Digite el segundo número";
    Leer numero2;
    
    suma=(numero1+numero2);  //Con la variable creaada anteriormente se realiza la operación
    resta=(numero1-numero2);
    mult=(numero1*numero2);
    div=(numero1/numero2);
    
    Imprimir "El resultado de la suma es: ",suma;
    Imprimir "El resultado de la resta es: ",resta;
    Imprimir "El resultado de la multiplicación es: ",mult;
    Imprimir "El resultado de la división es: ",div;
    
FinAlgoritmo

datos.psc
Algoritmo datos
    // Crear algoritmo que pregunte nombres, apellidos, fecha 
    // nacimiento, edad,barrio e imprima el resultado.
    
    Escribir "Digite su nombre: ";     //mensaje
    Leer nombre;                    //variable para guardar el dato que el usuario ingresa
    Escribir "Digite su apellido: ";
    Leer apellido; 
    Escribir "Ingrese su fecha de nacimiento: ";
    Leer fecha;
    Escribir "Cuantos años tiene: ";
    Leer edad;
    Escribir "En que barrio vive: ";
    Leer barrio;
    
    Imprimir "Su nombre es: ", nombre;
    Imprimir "Su apellido es: ", apellido;
    Imprimir "La fecha de nacimiento es: ", fecha;
    Imprimir "Su edad es: ", edad;
    Imprimir "Usted vive en el barrio: ", barrio;
    
FinAlgoritmo

sumatoria.psc
Algoritmo ej_sumatoria
    // Ejercicio que me permita sumar tres números
    
    suma=0 // inicializo la varible en cero
    
    Escribir "Ingrese el primer número"; // mensaje
    Leer n1; // variable para guardar el dato que el usuario ingresa
    Escribir "Ingrese el segundo número";
    Leer n2;
    Escribir "Ingrese el tercer número";
    Leer n3;
    
    suma=(n1+n2+n3); // con esta variable se realiza la sumatoria 
    
    Imprimir "El resultado es: ",Suma; // se imprime el resultado
    
FinAlgoritmo

==== Sesión 2 - Condicionales ==== tienda.psc
Algoritmo ejm_tienda
    // Algoritmo que permita elegir al usuario que alimento desea consumir, solo se tiene dos productos
    //Gaseosa
    g1=1000; // Se define la variable y se le asigna un valor
    g2=1200;
    g3=1400;
    // Papas
    p1=600; // Se define la variable y se le asigna un valor
    p2=800;
    p3=1000;
    
    vtotal=0 // Variable para realizar la suma de los productos
    
    Escribir "Que gaseosa desea: "; //mensaje
    Escribir "1. Manzana";         //corresponde a la variable g1
    Escribir "2. Coca Cola";    //corresponde a la variable g2
    Escribir "3. Malta";        //corresponde a la variable g3
    leer op1; // Esta variable permitirá guardar el "número" que el usuario ingreso
    // Condicional, se evalúa el dato que el usuario ingreso y lo compara con la condición para evaluar si se cumple o no.
    // si se cumple ingresa a las instrucciones, de no cumplirse pasara a evaluar la siguiente condición.
    Si op1=1 Entonces // Se evalúa si el dato que ingreso el usuario es igual a 1
        op1=g1; // Si se cumple la condición anterior, la variable "op1" se iguala al valor que contiene la variable "g1"
    SiNo //Si no se cumple la condición anterior, el algoritmo sigue evaluando las otras condiciónes
        Si op1=2 Entonces // Se evalúa si el dato que ingreso el usuario es igual a 2
            op1=g2 // Si se cumple la condición anterior, la variable "op1" se iguala al valor que contiene la variable "g2"
        SiNo
            Si op1=3 Entonces// Se evalúa si el dato que ingreso el usuario es igual a 3
                op1=g3  // Si se cumple la condición anterior, la variable "op1" se iguala al valor que contiene la variable "g3"
            Sino
                op1=0 //Si se ingresa un número diferente de 1,2 y 3 la variable se iguala a cero y aparece mensaje 
                Imprimir "El dato ingresado no es valido"
            FinSi
        FinSi
    FinSi

    Escribir "Que papitas desea: ";
    Escribir "1. Pollo";        //corresponde a la variable p1
    Escribir "2. Natural";        //corresponde a la variable p2
    Escribir "3. Limon";        //corresponde a la variable p3
    Leer op2; // Esta variable permitira guardar la respuesta del usuario para las papas
    Si op2=1 Entonces // Se evalúa si el dato que ingreso el usuario es igual a 1
        op2=p1;
    SiNo
        Si op2=2 Entonces // Se evalúa si el dato que ingreso el usuario es igual a 2
            op2=p2
        SiNo
            Si op2=3 Entonces // Se evalúa si el dato que ingreso el usuario es igual a 3
                op2=p3
            Sino
                op2=0 //Si se ingresa un número diferente de 1,2 y 3 la variable se iguala a cero y aparece mensaje 
                Imprimir "El dato ingresado no es válido"
            FinSi
            
        FinSi
    FinSi
    
    vtotal=(op1+op2) //Se suma el valor que contegan las dos variables para conocer el valor total
    
    Imprimir "El valor total es: ", vtotal //Se imprime el resultado total
    
FinAlgoritmo

notas.psc
Algoritmo cal_nota
    //Crear algoritmo que permita leer 4 notas de un estudiante y calcule si gano o perdió la materia, se gana con una nota superior o igual a 3
    
    snota=0 //Variable para calcular la nota final
    
    Escribir "Ingrese la nota 1: "; Leer n1; //Mensaje para ingresar la nota la cual se guarda en la variable n1
    Escribir "Ingrese la nota 2: "; Leer n2;
    Escribir "Ingrese la nota 3: "; Leer n3;
    Escribir "Ingrese la nota 4: "; Leer n4;
    
    snota=(n1+n2+n3+n4)/4 //Se realiza el cálculo para conocer la nota final
    
    Si snota>= 3 Entonces // Se evalua si la nota final es mayor o igual a 3
        Imprimir "La nota final es: ", snota, " gano la materia" //Si se cumple la condiciona imprime este mensaje
    SiNo //Si no cumple la condición, imprime el siguiente mensaja
        Imprimir "La nota final es: ", snota, " perdio la materia"
    FinSi
    
FinAlgoritmo


==== Sesión 3 - Condicionales ==== calcular edad.psc
Algoritmo ej_edad
    // Hacer algoritmo que permita conocer la edad de una persona a partir de su fecha de nacimiento
    
    Escribir "Digite su fecha de nacimiento"; //Mensaje para el usuario
    Leer fecha; //Variable para almacenar el dato ingresado
    
    cal=(2017-fecha)  //Con la variable "cal" se halla la edad
    
    Imprimir "Usted tiene ", cal " años" //Se imprime el resultado
    
FinAlgoritmo

numero mod 2.psc
Algoritmo ej_mod
    // Calcular si un número es multiplo de 2
    // Se utiliza la variable mod = Módulo (resto de la división entera) 
    
    Escribir "Digite un número"; //Mensaje para el usuario
    Leer n1; //Variable para almacenar el dato ingresado
    
    Si(n1 mod 2 = 0) Entonces //Variable para evaluar si el residuo es igual a cero
        Imprimir "El número es multiplo de 2" //Si la condición se cumple imprime este mensaje
    sino 
        Imprimir "El número no es multiplo de 2"//Si no se cumple la condición imprime este mensaje
    FinSi
    
FinAlgoritmo

número.psc
Algoritmo ej_num
    // Algoritmo que me permita saber si un número es positivo, negativo o neutro
    
    Escribir "Digite un número";//Mensaje para el usuario
    Leer n1;//Variable para almacenar el dato ingresado
    
    Si (n1 > 0) Entonces//Condicional para evaluar si el número es positivo
        Imprimir "El número es positivo";
    SiNo
        Si (n1 < 0) Entonces //Condicional para evaluar si el número es negativo
            Imprimir "El número es negativo";
        SiNo
            Imprimir "El número es neutro";//Si el número no cumple las condiciónes anteriores, muestra este mesanje
        FinSi
    FinSi
    
FinAlgoritmo

sueldo.psc
Algoritmo ej_sueldo
    // Algoritmo que permita conocer el salario de una persona por semana
    // Si trabaja 48 horas se paga la hora a 3000
    // si trabaja menos de 48 horas se paga la hora a 2000
    //  Si trabaja mas de 48 horas, las horas adicionales se pagan a 5000
    
    
    Escribir "Ingrese las horas trabajadas";//Mensaje para el usuario
    Leer horat//Varuable para guardar el dato ingresado
    
    Si (horat = 48) Entonces //Condicional para evaluar si trabajo 48 horas
        sueldo=(horat*3000) //Variable para conocer el sueldo total
        Imprimir "Su sueldo es: ", sueldo //Mensaje con el valor 
    SiNo
        Si (horat < 48) Entonces //Condicional para evaluar si trabajo menos de 48 horas
            sueldo=(horat*2000) //Variable para conocer el sueldo total
            Imprimir "Su sueldo es: ", sueldo //Mensaje con el valor 
        SiNo
            Si (horat > 48) Entonces //Condicional para evaluar si trabajo mas de 48 horas
                h=(horat-48) //Variable para conocer cuantas horas extra trabajo 
                cal2=(48*3000) //Variable para conocer el sueldo de las primeras 48
                cal3=(h*5000) //Variable para conocer el valor de las horas extra
                sueldo2=(cal2+cal3) //Variable para calcular el sueldo total
                Imprimir "Su sueldo es: ", sueldo2 //Mensaje con el valor 
            FinSi
        FinSi
    FinSi
    
FinAlgoritmo

==== Sesión 4 - Estructuras de Repetición ==== suma_ciclo.psc
Algoritmo ejm_suma
    //  Algoritmo que permita ingresar 10 números y mostrar la suma de estos
    suma=0 //variable para realizar la suma
    
    Para i=1 hasta 10 con paso 1 hacer //Ciclo que controla la cantidad de veces que se repite la acción
        Escribir "Ingrese un número" //Mensaje para el usuario
        Leer n //Variable para almacenar el dato ingresado
        suma=(suma+n) //Variable para realizar la suma
    FinPara
    
    Imprimir "La suma es: " suma //Se imprime el resultado
    
FinAlgoritmo

num_orden.psc
Algoritmo ejn_numorden
    // Algoritmo que pida ingresar tres números e imprimirlos en 
    // orden ascendete
    
    Escribir "Ingrese el primer número"; Leer n1; //Primer dato ingresado por el usuario
    Escribir "Ingrese el segundo número"; Leer n2; //Segundo dato ingresado por el usuario
    Escribir "Ingrese el tercer número"; Leer n3; //Tercer dato ingresado por el usuario
    
    Si n1 > n2 y n1 > n3 Entonces // Condicion para evaluar cual es el número mayor
        Si n2 > n3 Entonces // Condición para evaluar que número es mayor
            Imprimir "El orden es: " n3, n2, n1; //Se muestra el resultado
        SiNo //Si no se cumple la anterior condición se entiende que esta si se cumplira
            Imprimir "El orden es: " n2, n3, n1; //Se muestra el resultado
        FinSi
    SiNo
        Si n2 > n1 y n2 > n3 Entonces 
            Si n1 > n3 Entonces
                Imprimir "El orden es: " n3, n1, n2
            SiNo
                Imprimir "El orden es: " n1, n3, n2
            FinSi
        SiNo
            Si n3 > n1 y n3 > n2 Entonces
                Si n1 > n2 Entonces
                    Imprimir "El orden es: " n2, n1, n3
                SiNo
                    Imprimir "EL orden es: " n1, n2, n3
                FinSi
            FinSi
        FinSi
    FinSi
    
FinAlgoritmo

nota_ciclo.psc
Algoritmo ejm_nota
    // Calcular la nota final y decir si gano o perdio la materia, son 4 notas
    
    snota=0 //Variable para sumar la notas
    
    Para j=1 hasta 4 con paso 1 hacer //Condicion para pedir al usuario que ingrese las notas
        Escribir "Ingrese la nota: " //Mensaje para el usuario
        Leer n //Variable para almacenar el dato ingresado
        snota=(snota+n) //Variable para realizar la suma
    FinPara
    
    cal=(snota/4) //Variable para calcular la nota final
    
    Si (cal>3) Entonces //Condicional 
        Imprimir "Ganaste la materia" //Mensaje que muestra si cumple la condición
    SiNo
        Imprimir "Perdiste la materia" //Mensaje que muestra si no cumple la condición
    FinSi
    
FinAlgoritmo

impr_números.psc
Algoritmo ejm_impr
    //Ejercicio que permita mostrar los números del 1 al 10
    
    Para i=0 Hasta 10 con paso 1 Hacer //Ciclo para controlar la cantidad de veces que se repite la acción
        Imprimir "Los números son: " i //Se imprime el resultado
    Fin Para
    
FinAlgoritmo

===== ¿Qué es Arduino? ===== Arduino es una plataforma de electrónica de código abierto basada en hardware y software fácil de usar. Las placas Arduino pueden leer entradas (luz en un sensor, un dedo en un botón o un mensaje de Twitter) y convertirlo en una salida, activar un motor, encender un LED y publicar algo en línea. Puede decirle a su tablero qué hacer enviando un conjunto de instrucciones al microcontrolador en el tablero. Para hacerlo, utiliza el lenguaje de programación Arduino (basado en el cableado ) y el software Arduino (IDE) , basado en el procesamiento . [[https://www.arduino.cc/en/Main/Software | Descargar Arduino]] ====¿Qué quiere decir con hardware de código abierto?==== El hardware de código abierto comparte gran parte de los principios y el enfoque del software libre y de código abierto. En particular, creemos que las personas deberían poder estudiar nuestro hardware para comprender cómo funciona, realizar cambios en él y compartir esos cambios. Para facilitar esto, lanzamos todos los archivos de diseño originales (Eagle CAD) para el hardware Arduino. Estos archivos están licenciados bajo la licencia Creative Commons Attribution Share-Alike, que permite trabajos derivados tanto personales como comerciales, siempre que acrediten a Arduino y publiquen sus diseños bajo la misma licencia. El software Arduino también es de código abierto. El código fuente para el entorno Java se publica bajo la GPL y las bibliotecas del microcontrolador C / C ++ están bajo la LGPL. [[https://www.arduino.cc/en/Main/FAQ | Preguntas frecuentes]] ==== Proyectos con Arduino ==== ====Encender un Led==== {{:sistemadebibliotecas:pbladera:c1.png?800|}}
void setup() {
  pinMode(2, OUTPUT);    //Configura el pin 2 como salida
}

void loop() {
  digitalWrite(2, HIGH);   // enciende el LED enviando un alto (5V) en el pin 8
  delay(1000);             // espera 1 segundo
  digitalWrite(2, LOW);    // apaga el LED enviando un bajo (0V) en el pin 8
  delay(1000);             // espera 1 segundo
}

====Crear un Semáforo ==== {{:sistemadebibliotecas:pbladera:c2.png?800|}}
//Se asigna el nombre a la variable y el pin a utilizar 
int rojo = 8;
int amarillo = 9;
int verde =10;

// Instrucciónes que se ejecutan una vez
void setup() {
  // Se inicializa el pin digital como salida
  pinMode(rojo, OUTPUT);
  pinMode(amarillo, OUTPUT);
  pinMode(verde, OUTPUT);
}

// Son las instrucciónes que se repiten una y otra vez
void loop() {
  digitalWrite(rojo, HIGH);  // enciende el LED enviando un alto (5V) en el pin 8
  delay(1000);               //  espera 1 segundo
  digitalWrite(rojo, LOW);   // apaga el LED enviando un bajo (0V) en el pin 8
  delay(1000);               // espera 1 segundo
  digitalWrite(amarillo, HIGH);  
  delay(1000);               
  digitalWrite(amarillo, LOW);   
  delay(1000);   
  digitalWrite(verde, HIGH);  
  delay(1000);               
  digitalWrite(verde, LOW);   
  delay(1000);
}
====Encender Led RGB==== {{:sistemadebibliotecas:pbladera:c3.png?800|}}
int pin_rojo = 13; // Pin al que está conectado el color verde
int pin_azul = 11;  // Pin al que está conectado el color rojo
int pin_verde = 10;  // Pin al que está conectado el color azul

void setup() {
  // Inicializamos los LEDs
  pinMode(pin_rojo, OUTPUT);
  pinMode(pin_azul, OUTPUT);
   pinMode(pin_verde, OUTPUT);
}

void loop() {
  digitalWrite(pin_rojo, 255);    // Color  ON
  digitalWrite(pin_verde, 0);    // Color OFF  
  digitalWrite(pin_azul, 0);      // Color OFF
  delay(1000);
  digitalWrite(pin_azul, 255);    // Color  ON
  digitalWrite(pin_verde, 0);
  digitalWrite(pin_rojo, 0);
  delay(1000);
  digitalWrite(pin_verde, 255);    // Color  ON
  digitalWrite(pin_rojo, 0);
  digitalWrite(pin_azul, 0);
  delay(1000);
  }
  

==== Configurar Módulo Bluetooth HC06 ====
#include <SoftwareSerial.h>

/*   
  CONEXIONES:
  ARDUINO   BLUETOOTH
  5V        VCC
  GND       GND
  PIN 2     TX
  PIN 3     RX
 */

SoftwareSerial blue(2, 3);   //Crea conexion al bluetooth - PIN 2 a TX y PIN 3 a RX

char NOMBRE[21]  = "Prueba"; // Nombre de 20 caracteres maximo
char BPS         = '4';     // 1=1200 , 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200
char PASS[5]    = "1234";   // CLAVE de 4 caracteres numericos     
 
void setup()
{
    blue.begin(9600); // inicialmente la comunicacion serial 
    
    pinMode(13,OUTPUT);
    digitalWrite(13,HIGH); // Enciende el LED 13 durante 4s antes de configurar el Bluetooth
    delay(4000);
    
    digitalWrite(13,LOW); // Apaga el LED 13 para iniciar la programacion
    
    blue.print("AT");  // Inicializa comando AT
    delay(1000);
 
    blue.print("AT+NAME"); // Configura el nuevo nombre 
    blue.print(NOMBRE);
    delay(1000);           // espera 1 segundo
 
    blue.print("AT+BAUD");  // Configura la nueva velocidad 
    blue.print(BPS); 
    delay(1000);
 
    blue.print("AT+PIN");   // Configura el nuevo PIN
    blue.print(PASS); 
    delay(1000);    
}
 
void loop()
{
    digitalWrite(13, !digitalRead(13)); // cuando termina de configurar el Bluetooth queda el LED 13 parpadeando
    delay(300);
}
==== Encender Led vía Bluetooth ==== {{:sistemadebibliotecas:pbladera:led_bluetooth.jpg?800|}}
int led = 8;
int estado = '0';

void setup() 
{
Serial.begin(9600);// inicia comunicación del Bluetooth con el arduino
pinMode(led,OUTPUT);
} 

void loop() 
{
  if(Serial.available()>0)
  {
        estado = Serial.read();//lectura del Bluetooth
  }
  if(estado=='1')
  {
      digitalWrite(led,HIGH);//encender el dispositivo
      Serial.println("LED: on");
  }
  if(estado=='0')
 {
      digitalWrite(led,LOW);//apagar el dispositivo
       Serial.println("LED: off");
 }
}